'required|string|max:255', 'content' => 'required|string', 'isScheduled' => 'required|in:true,false', 'schedule' => 'required_if:isScheduled,true|nullable|date', 'expiration' => 'required_if:isScheduled,true|nullable|date|after_or_equal:schedule', ]; protected $messages = [ 'subject.required' => 'Subject is required!', 'content.required' => 'Content is required!', 'isScheduled.required' => 'Schedule selection is required!', 'schedule.required_if' => 'Schedule date is required when scheduled!', 'expiration.required_if' => 'Expiration date is required when scheduled!', 'expiration.after_or_equal' => 'Expiration must be on or after the schedule date!', ]; public function mount() { // Placeholder role check // if (auth()->user()->role != 1) { // $this->alert('error', 'Unauthorized access.'); // return redirect('/notifications'); // } } public function save() { $this->validate(); $this->loading = true; try { $data = [ 'subject' => $this->subject, 'content' => $this->content, 'isScheduled' => $this->isScheduled === 'true', 'schedule' => $this->isScheduled === 'true' ? $this->schedule : null, 'expiration' => $this->isScheduled === 'true' ? $this->expiration : null, ]; $response = Http::post('https://api.example.com/notification', $data); if ($response->successful()) { $this->alert('success', 'Notification created successfully!'); return redirect('/notifications'); } else { $this->alert('error', 'Failed to create notification.'); } } catch (\Exception $e) { $this->alert('error', 'An error occurred: ' . $e->getMessage()); } finally { $this->loading = false; } } public function cancel() { if (confirm('Are you sure you want to discard changes?')) { return redirect('/notifications'); } } public function render() { return view('livewire.notifications.notifications-create')->layout('layouts.app', ['title' => 'Add Notification']); } }