import React, { useState } from 'react';
import { Head, router } from '@inertiajs/react';
import AdminLayout from '../../../Layouts/AdminLayout';
import { Megaphone, Plus, Trash2, Send, CheckCircle2, Check, X } from 'lucide-react';
export default function Announcements({ initialAnnouncements }) {
const [announcements, setAnnouncements] = useState(initialAnnouncements || []);
const [isFormOpen, setIsFormOpen] = useState(false);
const [newAnnouncement, setNewAnnouncement] = useState({ title: '', content: '', audience: 'Both' });
const [errors, setErrors] = useState({});
const [toastMessage, setToastMessage] = useState(null);
const showToast = (message) => {
setToastMessage(message);
setTimeout(() => setToastMessage(null), 3000);
};
const handleCreate = (e) => {
e.preventDefault();
let newErrors = {};
if (!newAnnouncement.title.trim()) newErrors.title = 'Title is required';
if (!newAnnouncement.content.trim()) newErrors.content = 'Content is required';
if (Object.keys(newErrors).length > 0) {
setErrors(newErrors);
return;
}
router.post(route('admin.announcements.store'), {
title: newAnnouncement.title,
content: newAnnouncement.content,
type: newAnnouncement.audience === 'Both' ? 'info' : (newAnnouncement.audience === 'Employers' ? 'success' : 'warning')
}, {
onSuccess: () => {
setNewAnnouncement({ title: '', content: '', audience: 'Both' });
setErrors({});
setIsFormOpen(false);
showToast('Announcement broadcasted successfully');
setTimeout(() => window.location.reload(), 500);
}
});
};
const handleApprove = (id) => {
router.post(route('admin.announcements.approve', id), {}, {
onSuccess: () => {
showToast('Announcement approved successfully');
setTimeout(() => window.location.reload(), 500);
}
});
};
const handleReject = (id) => {
router.post(route('admin.announcements.reject', id), {}, {
onSuccess: () => {
showToast('Announcement rejected successfully');
setTimeout(() => window.location.reload(), 500);
}
});
};
const handleDelete = (id) => {
if (confirm('Are you sure you want to delete this announcement?')) {
router.delete(route('admin.announcements.delete', id), {
onSuccess: () => {
showToast('Announcement deleted');
setTimeout(() => window.location.reload(), 500);
}
});
}
};
return (
Approve user-submitted events or broadcast messages to all users.
No announcements published yet.
{ann.content}