From f04138f51aacc41a96b927c136da23a6f644c10b Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 7 Jul 2026 15:39:03 +0700 Subject: [PATCH] fix: refine task assignment logic and enhance cooperation form with status selection --- .../Cooperation/CreateTaskAssignmentAction.php | 2 +- .../TaskAssignmentRelationManager.php | 17 ++--------------- .../Cooperations/Schemas/CooperationForm.php | 9 ++++++++- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php index 242e7d9..64c82b3 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php @@ -109,7 +109,7 @@ protected function setUp(): void return $user && ! $user->hasRole(RoleEnum::PERUSAHAAN->value) && ! $record->taskAssignment()->exists() - && in_array($record->status, [CooperationStatus::PENDING, CooperationStatus::ASSIGNMENT]); + && $record->status === CooperationStatus::ASSIGNMENT; }) ->modalWidth(Width::Large); } diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php index bfb077f..987dad1 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Manage\Cooperations\RelationManagers; +use App\Enums\CooperationStatus; use App\Enums\RoleEnum; use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Actions\Cheerful\DeleteAction; @@ -79,23 +80,9 @@ public function table(Table $table): Table ->accepted() ->exists(); - if (! $isPartner) { - return false; - } - $hasAcceptedProposal = $cooperation->proposal()->accepted()->exists(); - if (! $hasAcceptedProposal) { - return false; - } - - $taskAssignment = $cooperation->taskAssignment; - - if (! $taskAssignment) { - return true; - } - - return $taskAssignment->reports()->count() < $taskAssignment->report_amount; + return $isPartner && $hasAcceptedProposal && $cooperation->status === CooperationStatus::ASSIGNMENT; }) ->successNotification( fn () => CheerfulNotification::success( diff --git a/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php b/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php index 84f65be..bbf0abd 100644 --- a/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php +++ b/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Manage\Cooperations\Schemas; +use App\Enums\CooperationStatus; use App\Enums\NotifStyle; use App\Filament\Support\CheerfulNotification; use App\Models\PartnerMedia; @@ -37,7 +38,7 @@ public static function configure(Schema $schema): Schema ->required() ->maxLength(200), - Grid::make(2) + Grid::make(3) ->schema([ DatePicker::make('initial_submission_date') ->label('Tanggal Pengajuan Awal') @@ -55,6 +56,12 @@ public static function configure(Schema $schema): Schema ->required() ->afterOrEqual('initial_submission_date') ->minDate(fn (Get $get) => $get('initial_submission_date')), + + Select::make('status') + ->label('Status') + ->options(CooperationStatus::options()) + ->required() + ->native(false), ]), Select::make('partner_media_ids')