checkMilestonesForRewardProcessor = $checkMilestonesForRewardProcessor; } /** * @param Transaction $transaction * @param array $milestones * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute(Transaction $transaction, array $milestones) { $company = $transaction->owner instanceof Booking ? $transaction->owner()->first()->company : null; if($company){ $completedBookingCount = count($company->bookings()->where('status', ApprovalStatus::COMPLETED)->get()); Log::info("Number of completed bookings completed for company ".$company->reference. ": " .$completedBookingCount); if (in_array(Milestones::MILESTONE_1, $milestones)) { if($completedBookingCount === 2){ $user = $company->employees()->first(); $this->checkMilestonesForRewardProcessor->execute($user, [Milestones::MILESTONE_1]); } } } } }