diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/artikel_kesehatan/create/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/artikel_kesehatan/create/page.tsx index 354169d8..857426cf 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/artikel_kesehatan/create/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/artikel_kesehatan/create/page.tsx @@ -30,6 +30,33 @@ function CreateArtikelKesehatan() { const router = useRouter(); const [isSubmitting, setIsSubmitting] = useState(false); + // Helper function to check if HTML content is empty + const isHtmlEmpty = (html: string) => { + // Remove all HTML tags and check if there's any text content + const textContent = html.replace(/<[^>]*>/g, '').trim(); + return textContent === ''; + }; + + // Check if form is valid + const isFormValid = () => { + return ( + stateArtikelKesehatan.create.form.title?.trim() !== '' && + stateArtikelKesehatan.create.form.content?.trim() !== '' && + !isHtmlEmpty(stateArtikelKesehatan.create.form.introduction.content) && + stateArtikelKesehatan.create.form.symptom.title?.trim() !== '' && + !isHtmlEmpty(stateArtikelKesehatan.create.form.symptom.content) && + stateArtikelKesehatan.create.form.prevention.title?.trim() !== '' && + !isHtmlEmpty(stateArtikelKesehatan.create.form.prevention.content) && + stateArtikelKesehatan.create.form.firstAid.title?.trim() !== '' && + !isHtmlEmpty(stateArtikelKesehatan.create.form.firstAid.content) && + stateArtikelKesehatan.create.form.mythVsFact.title?.trim() !== '' && + !isHtmlEmpty(stateArtikelKesehatan.create.form.mythVsFact.mitos) && + !isHtmlEmpty(stateArtikelKesehatan.create.form.mythVsFact.fakta) && + !isHtmlEmpty(stateArtikelKesehatan.create.form.doctorSign.content) && + file !== null + ); + }; + const resetForm = () => { stateArtikelKesehatan.create.form = { title: '', @@ -65,10 +92,79 @@ function CreateArtikelKesehatan() { const handleSubmit = async (e?: React.FormEvent) => { e?.preventDefault(); + + if (!stateArtikelKesehatan.create.form.title?.trim()) { + toast.error('Judul wajib diisi'); + return; + } + + if (!stateArtikelKesehatan.create.form.content?.trim()) { + toast.error('Deskripsi wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.introduction.content)) { + toast.error('Pendahuluan wajib diisi'); + return; + } + + if (!stateArtikelKesehatan.create.form.symptom.title?.trim()) { + toast.error('Judul gejala wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.symptom.content)) { + toast.error('Deskripsi gejala wajib diisi'); + return; + } + + if (!stateArtikelKesehatan.create.form.prevention.title?.trim()) { + toast.error('Judul pencegahan wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.prevention.content)) { + toast.error('Deskripsi pencegahan wajib diisi'); + return; + } + + if (!stateArtikelKesehatan.create.form.firstAid.title?.trim()) { + toast.error('Judul pertolongan pertama wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.firstAid.content)) { + toast.error('Deskripsi pertolongan pertama wajib diisi'); + return; + } + + if (!stateArtikelKesehatan.create.form.mythVsFact.title?.trim()) { + toast.error('Judul mitos vs fakta wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.mythVsFact.mitos)) { + toast.error('Deskripsi mitos wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.mythVsFact.fakta)) { + toast.error('Deskripsi fakta wajib diisi'); + return; + } + + if (isHtmlEmpty(stateArtikelKesehatan.create.form.doctorSign.content)) { + toast.error('Deskripsi kapan harus ke dokter wajib diisi'); + return; + } + + if (!file) { + toast.error('Gambar wajib dipilih'); + return; + } + try { - if (!file) { - return toast.warn('Silakan pilih file gambar terlebih dahulu'); - } + setIsSubmitting(true); const res = await ApiFetch.api.fileStorage.create.post({ file, @@ -344,8 +440,11 @@ function CreateArtikelKesehatan() { onClick={handleSubmit} radius="md" size="md" + disabled={!isFormValid() || isSubmitting} style={{ - background: `linear-gradient(135deg, ${colors['blue-button']}, #4facfe)`, + background: !isFormValid() || isSubmitting + ? `linear-gradient(135deg, #cccccc, #eeeeee)` + : `linear-gradient(135deg, ${colors['blue-button']}, #4facfe)`, color: '#fff', boxShadow: '0 4px 15px rgba(79, 172, 254, 0.4)', }} diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/fasilitas_kesehatan/[id]/edit/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/fasilitas_kesehatan/[id]/edit/page.tsx index 32db4e6b..01e6a6ff 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/fasilitas_kesehatan/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/fasilitas_kesehatan/[id]/edit/page.tsx @@ -45,6 +45,28 @@ function EditFasilitasKesehatan() { const params = useParams<{ id: string }>(); const [isSubmitting, setIsSubmitting] = useState(false); + // Helper function to check if HTML content is empty + const isHtmlEmpty = (html: string) => { + // Remove all HTML tags and check if there's any text content + const textContent = html.replace(/<[^>]*>/g, '').trim(); + return textContent === ''; + }; + + // Check if form is valid + const isFormValid = () => { + return ( + formData.name?.trim() !== '' && + formData.informasiUmum.fasilitas?.trim() !== '' && + formData.informasiUmum.alamat?.trim() !== '' && + formData.informasiUmum.jamOperasional?.trim() !== '' && + !isHtmlEmpty(formData.layananUnggulan.content) && + formData.dokterdanTenagaMedis.length > 0 && + !isHtmlEmpty(formData.fasilitasPendukung.content) && + !isHtmlEmpty(formData.prosedurPendaftaran.content) && + formData.tarifDanLayanan.length > 0 + ); + }; + const [formData, setFormData] = useState({ name: '', informasiUmum: { fasilitas: '', alamat: '', jamOperasional: '' }, @@ -111,6 +133,52 @@ function EditFasilitasKesehatan() { const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); + + if (!formData.name?.trim()) { + toast.error('Nama fasilitas kesehatan wajib diisi'); + return; + } + + if (!formData.informasiUmum.fasilitas?.trim()) { + toast.error('Fasilitas wajib diisi'); + return; + } + + if (!formData.informasiUmum.alamat?.trim()) { + toast.error('Alamat wajib diisi'); + return; + } + + if (!formData.informasiUmum.jamOperasional?.trim()) { + toast.error('Jam operasional wajib diisi'); + return; + } + + if (isHtmlEmpty(formData.layananUnggulan.content)) { + toast.error('Layanan unggulan wajib diisi'); + return; + } + + if (formData.dokterdanTenagaMedis.length === 0) { + toast.error('Dokter dan tenaga medis wajib dipilih'); + return; + } + + if (isHtmlEmpty(formData.fasilitasPendukung.content)) { + toast.error('Fasilitas pendukung wajib diisi'); + return; + } + + if (formData.tarifDanLayanan.length === 0) { + toast.error('Tarif dan layanan wajib dipilih'); + return; + } + + if (isHtmlEmpty(formData.prosedurPendaftaran.content)) { + toast.error('Prosedur pendaftaran wajib diisi'); + return; + } + try { setIsSubmitting(true); @@ -264,8 +332,11 @@ function EditFasilitasKesehatan() {