fix: refine task assignment logic and enhance cooperation form with status selection

This commit is contained in:
Yoga Pangestu 2026-07-07 15:39:03 +07:00
parent 59b9a8ce92
commit f04138f51a
3 changed files with 11 additions and 17 deletions

View File

@ -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);
}

View File

@ -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(

View File

@ -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')