jajla
Is it possible to generate future dates in Filament
I make UserVisitService this is the code
public function getAvailableTimesForDate(string $date): array
{
$date = Carbon::parse($date);
$startPeriod = $date->copy()->hour(9);
$endPeriod = $date->copy()->hour(18);
$times = CarbonPeriod::create($startPeriod, '30 minutes', $endPeriod);
$availableReservations = [];
$reservations = Visit::whereDate('date', $date)
->pluck('time')
->toArray();
$availableTimes = $times->filter(function ($time) use ($reservations) {
return ! in_array($time, $reservations);
})->toArray();
foreach ($availableTimes as $time) {
$key = $time->format('H:i');
$availableReservations[$key] = $time->format('H:i');
}
return $availableReservations;
}
And UserVisitResource
public static function form(Form $form): Form
{
$dateFormat = 'Y-m-d';
return $form
->schema([
DatePicker::make('date')
->minDate(now()->format($dateFormat))
->required()
->live(),
Radio::make('time')
->options(fn(Get $get) => (new UserVisitService())->getAvailableTimesForDate($get('date')))
->hidden(fn(Get $get) => !$get('date'))
->required()
->columnSpan(2),
Select::make('service_type')
->label(__('trans.form.service_type'))
->options(
collect(Services::cases())
->mapWithKeys(fn($role) => [$role->value => $role->getLabel()])
->toArray()
)->required(),
]);
}
43 replies