no message

This commit is contained in:
StudioTem committed 2024-07-12 10:21:11 +02:00
1 parent 939ba47759
commit f80e658e58
1 file changed
+27 -8
+27 -8
View File
@@ -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,20 +19,26 @@ class IntranetService {
{ {
$intranetVacations = Vacation::fromDate(Carbon::yesterday()->toDateString()); $intranetVacations = Vacation::fromDate(Carbon::yesterday()->toDateString());
$dbVacations = Blocker::whereIn('type', ['vacation', 'home_office', 'free_day'])->get(); // 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();
$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);
})->map(function ($item) { })->map(function ($item) {
$arrayToInsert = $item->toArray(); $arrayToInsert = $item->toArray();
$arrayToInsert['created_at'] = Carbon::now()->toDateTimeString(); $arrayToInsert['created_at'] = Carbon::now()->toDateTimeString();
$arrayToInsert['updated_at'] = Carbon::now()->toDateTimeString(); $arrayToInsert['updated_at'] = Carbon::now()->toDateTimeString();
@@ -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());
}
} }