api = new Api(); } public function syncVacations() { $intranetVacations = Vacation::fromDate(Carbon::yesterday()->toDateString()); $dbVacations = Blocker::whereIn('type', ['vacation', 'home_office', 'free_day'])->get(); $this->insertVacationsFromIntranet($intranetVacations, $dbVacations); } private function insertVacationsFromIntranet( Collection $intranetVacations, Collection $dbVacations ) { $vacationsToSkip = $dbVacations->pluck('intranet_id' )->intersect( $intranetVacations->pluck('intranet_id')); $intranetVacationsToInsert = $intranetVacations->reject(function ($item) use ($vacationsToSkip) { return $vacationsToSkip->contains($item->intranet_id); })->map(function ($item) { $arrayToInsert = $item->toArray(); $arrayToInsert['created_at'] = Carbon::now()->toDateTimeString(); $arrayToInsert['updated_at'] = Carbon::now()->toDateTimeString(); return $arrayToInsert; }); Blocker::insert($intranetVacationsToInsert->toArray()); } }