Skip to content

Commit 28caf22

Browse files
authored
Support change of completed at date and clear when status is changed. (#92)
1 parent 8fe70d0 commit 28caf22

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

src/Enums/ScheduleStatusEnum.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,13 @@ public function getIcon(): ?string
6060
self::complete => 'heroicon-m-check-circle',
6161
};
6262
}
63+
64+
public static function parse(ScheduleStatusEnum|string|null $value): ?self
65+
{
66+
if ($value instanceof self) {
67+
return $value;
68+
}
69+
70+
return self::tryFrom($value);
71+
}
6372
}

src/Filament/Resources/ScheduleResource.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,21 @@ public static function form(Form $form): Form
2828
->required()
2929
->options(ScheduleStatusEnum::class)
3030
->default(ScheduleStatusEnum::upcoming)
31+
->afterStateUpdated(function (Forms\Set $set, int|ScheduleStatusEnum $state): void {
32+
if (ScheduleStatusEnum::parse($state) !== ScheduleStatusEnum::complete) {
33+
$set('completed_at', null);
34+
}
35+
})
3136
->live(),
3237
Forms\Components\MarkdownEditor::make('message')
3338
->columnSpanFull(),
34-
])->columnspan(3),
39+
])->columnSpan(3),
3540
Forms\Components\Section::make()->schema([
3641
Forms\Components\DateTimePicker::make('scheduled_at')
3742
->required(),
3843
Forms\Components\DateTimePicker::make('completed_at')
39-
->visible(fn (Forms\Get $get): bool => $get('status') === ScheduleStatusEnum::complete)
40-
->markAsRequired(fn (Forms\Get $get): bool => $get('status') === ScheduleStatusEnum::complete),
44+
->visible(fn (Forms\Get $get): bool => ScheduleStatusEnum::parse($get('status')) === ScheduleStatusEnum::complete)
45+
->required(fn (Forms\Get $get): bool => ScheduleStatusEnum::parse($get('status')) === ScheduleStatusEnum::complete)
4146
])->columnSpan(1),
4247
])->columns(4);
4348
}

src/Filament/Resources/ScheduleResource/Pages/EditSchedule.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,11 @@ protected function getHeaderActions(): array
1616
Actions\DeleteAction::make(),
1717
];
1818
}
19+
20+
protected function mutateFormDataBeforeSave(array $data): array
21+
{
22+
$data['completed_at'] = $data['completed_at'] ?? null;
23+
24+
return $data;
25+
}
1926
}

0 commit comments

Comments
 (0)