label('Tolak') ->icon(Heroicon::OutlinedXMark) ->color('danger') ->action(function (Cooperation $record): void { $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function ($query) { $query->whereHas('company', function ($subQuery) { $subQuery->where('user_id', auth()->id()); }); }) ->first(); if ($cooperationMedia) { $cooperationMedia->update(['status' => ApprovalStatus::REJECTED]); CheerfulNotification::info( CheerfulNotification::getByKey('cooperation.offer_rejected'), CheerfulNotification::getByKey('cooperation.offer_rejection_sent') )->send(); // Notify Admins User::superAdmin() ->get() ->each(function ($admin) use ($record, $cooperationMedia): void { $admin->notify(new BroadcastNotification([ 'title' => CheerfulNotification::getByKey('cooperation.offer_rejected_media'), 'body' => CheerfulNotification::getByKey('notification.media_rejected_offer', ['cooperationMedia__partnerMedia__name' => $cooperationMedia->partnerMedia->name, 'record__title' => $record->title]), ])); }); } }) ->visible(function (Cooperation $record): bool { $user = auth()->user(); if (! $user || ! $user->hasRole(RoleEnum::PERUSAHAAN->value)) { return false; } $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function ($query) { $query->whereHas('company', function ($subQuery) { $subQuery->where('user_id', auth()->id()); }); }) ->first(); return $cooperationMedia && $cooperationMedia->status === ApprovalStatus::PENDING; }); } }