label('Buat Penugasan') ->icon(Heroicon::Plus) ->color('primary') ->schema(function (Cooperation $record): array { return [ DatePicker::make('start_date') ->label('Tanggal Mulai') ->placeholder(fn (): string => now()->translatedFormat('l, d F Y')) ->native(false) ->displayFormat('l, d F Y') ->locale('id') ->required() ->minDate($record->final_submission_date) ->autofocus(), DatePicker::make('end_date') ->label('Tanggal Selesai') ->placeholder(fn (): string => now()->addDays(30)->translatedFormat('l, d F Y')) ->native(false) ->displayFormat('l, d F Y') ->required() ->after('start_date') ->minDate($record->final_submission_date), TextInput::make('report_amount') ->label('Jumlah Laporan') ->placeholder(10) ->numeric() ->minValue(1) ->required() ->autocomplete(false), Textarea::make('task_description') ->label('Deskripsi Tugas') ->required() ->rows(4) ->placeholder('...') ->autocomplete(false), ]; }) ->action(function (array $data, Cooperation $record): void { $taskAssignment = $record->taskAssignments()->create([ 'start_date' => $data['start_date'], 'end_date' => $data['end_date'], 'task_description' => $data['task_description'], 'report_amount' => $data['report_amount'], ]); $partnerMedias = $record->partnerMedia() ->wherePivot('status', ApprovalStatus::ACCEPTED) ->get(); foreach ($partnerMedias as $partnerMedia) { $taskAssignment->mediaTaskAssignments()->create([ 'partner_media_id' => $partnerMedia->id, 'status' => ApprovalStatus::PENDING, ]); } Notification::make() ->title('Penugasan berhasil dibuat') ->success() ->send(); }) ->modalHeading('Buat Penugasan') ->modalSubmitActionLabel('Simpan') ->visible(function (Cooperation $record): bool { return ! auth()->user()->hasRole('Perusahaan') && ! $record->taskAssignments()->exists() && $record->status === CooperationStatus::ASSIGNMENT; }) ->modalWidth(Width::Large); } }