form->validate(); $startData = CarbonImmutable::parse($this->form->date_start); $endData = CarbonImmutable::parse($this->form->date_end); $reRegisterStartData = CarbonImmutable::parse($this->form->re_registration_date_start); $reRegisterEndData = CarbonImmutable::parse($this->form->re_registration_date_end); if ($this->mode === 'create') { $create->execute(new PublishAdmissionScheduleDTO( startData: $startData, endData: $endData, reRegisterStartData: $reRegisterStartData, reRegisterEndData: $reRegisterEndData, status: AdmissionStatus::from($this->form->status), termId: (int) $this->form->term_id, admissionTrackId: (int) $this->form->admission_track_id, )); } elseif ($this->mode === 'update') { $update->execute($this->admissionSchedule, new AdjustAdmissionScheduleDurationDTO( startData: $startData, endData: $endData, reRegisterStartData: $reRegisterStartData, reRegisterEndData: $reRegisterEndData, )); } $this->success($this->message); $this->dispatch('hide-admissionschedule-form-modal'); $this->js("LaravelDataTables['admissionschedule-table'].ajax.reload(null, false)"); $this->form->reset(); $this->form->resetValidation(); $this->reset('id', 'mode'); } #[Computed] public function admissionSchedule(): ?AdmissionSchedule { return $this->id ? AdmissionSchedule::where('ulid', $this->id)->first() : null; } public function show(int|string $id): void { $this->id = $id; $this->mode = 'update'; $this->form->fill($this->admissionSchedule->only(['status', 'term_id', 'admission_track_id'])); $this->form->date_start = $this->admissionSchedule->date_start->format('Y-m-d'); $this->form->date_end = $this->admissionSchedule->date_end->format('Y-m-d'); $this->form->re_registration_date_start = $this->admissionSchedule->re_registration_date_start->format('Y-m-d'); $this->form->re_registration_date_end = $this->admissionSchedule->re_registration_date_end->format('Y-m-d'); } public function hide(): void { $this->form->reset(); $this->form->resetValidation(); $this->reset('id', 'mode'); } };