mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 14:29:34 +00:00
no message
This commit is contained in:
1 parent
939ba47759
commit
f80e658e58
1 file changed
+25
-6
@@ -3,11 +3,11 @@
|
|||||||
namespace App\Services\Intranet;
|
namespace App\Services\Intranet;
|
||||||
|
|
||||||
use App\Models\Blocker;
|
use App\Models\Blocker;
|
||||||
use App\Models\User;
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
class IntranetService {
|
class IntranetService
|
||||||
|
{
|
||||||
private Api $api;
|
private Api $api;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
@@ -19,15 +19,21 @@ class IntranetService {
|
|||||||
{
|
{
|
||||||
$intranetVacations = Vacation::fromDate(Carbon::yesterday()->toDateString());
|
$intranetVacations = Vacation::fromDate(Carbon::yesterday()->toDateString());
|
||||||
|
|
||||||
|
// toto sa pouziva pre delete starych dovoleniek. je to najstarsi datum, ktory mame v produkcnej DB. ak by sme ho tam nemali, API by nevratila stare dovolenky a povazovalo by sa to za vymazanu dovolenku a tym padom by sa to chybne odstranilo z nasej DB
|
||||||
|
$intranetVacationsFromPast = Vacation::fromDate('2023-07-27');
|
||||||
|
|
||||||
$dbVacations = Blocker::whereIn('type', ['vacation', 'home_office', 'free_day'])->get();
|
$dbVacations = Blocker::whereIn('type', ['vacation', 'home_office', 'free_day'])->get();
|
||||||
|
|
||||||
$this->insertVacationsFromIntranet($intranetVacations, $dbVacations);
|
$this->insertVacationsFromIntranet($intranetVacations, $dbVacations);
|
||||||
|
|
||||||
$this->checkIfVacationsGotAprroved($intranetVacations);
|
$this->checkIfVacationsGotAprroved($intranetVacations);
|
||||||
|
|
||||||
|
$this->deleteVacations($intranetVacationsFromPast, $dbVacations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function insertVacationsFromIntranet( Collection $intranetVacations, Collection $dbVacations ) {
|
private function insertVacationsFromIntranet(Collection $intranetVacations, Collection $dbVacations)
|
||||||
$vacationsToSkip = $dbVacations->pluck('intranet_id' )->intersect( $intranetVacations->pluck('intranet_id'));
|
{
|
||||||
|
$vacationsToSkip = $dbVacations->pluck('intranet_id')->intersect($intranetVacations->pluck('intranet_id'));
|
||||||
|
|
||||||
$intranetVacationsToInsert = $intranetVacations->reject(function ($item) use ($vacationsToSkip) {
|
$intranetVacationsToInsert = $intranetVacations->reject(function ($item) use ($vacationsToSkip) {
|
||||||
return $vacationsToSkip->contains($item->intranet_id);
|
return $vacationsToSkip->contains($item->intranet_id);
|
||||||
@@ -43,8 +49,10 @@ class IntranetService {
|
|||||||
Blocker::insert($intranetVacationsToInsert->toArray());
|
Blocker::insert($intranetVacationsToInsert->toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkIfVacationsGotAprroved( Collection $intranetVacations ) {
|
private function checkIfVacationsGotAprroved(Collection $intranetVacations)
|
||||||
$notApprovedDBVacations = Blocker::whereIn('type', ['vacation', 'home_office', 'free_day'])->where('approved', false)->get();
|
{
|
||||||
|
$notApprovedDBVacations = Blocker::whereIn('type', ['vacation', 'home_office', 'free_day'])->where('approved',
|
||||||
|
false)->get();
|
||||||
|
|
||||||
// filter vacations from intranet with approved parameter to be true
|
// filter vacations from intranet with approved parameter to be true
|
||||||
$approvedVacations = $intranetVacations->filter(function ($item) {
|
$approvedVacations = $intranetVacations->filter(function ($item) {
|
||||||
@@ -63,4 +71,15 @@ class IntranetService {
|
|||||||
// mass update in DB
|
// mass update in DB
|
||||||
Blocker::whereIn('intranet_id', $vacationsToApproveIds)->update(['approved' => true]);
|
Blocker::whereIn('intranet_id', $vacationsToApproveIds)->update(['approved' => true]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function deleteVacations(Collection $intranetVacations, Collection $dbVacations)
|
||||||
|
{
|
||||||
|
$vacationsToDelete = $dbVacations->reject(function ($item) use ($intranetVacations) {
|
||||||
|
return $intranetVacations->pluck('intranet_id')->contains($item->intranet_id);
|
||||||
|
});
|
||||||
|
|
||||||
|
$vacationsToDeleteIds = $vacationsToDelete->pluck('id');
|
||||||
|
|
||||||
|
Blocker::destroy($vacationsToDeleteIds->toArray());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user