diff --git a/proyek-frontend/app/pages/form/undangan-khitan-premium.vue b/proyek-frontend/app/pages/form/undangan-khitan-premium.vue new file mode 100644 index 0000000..91551db --- /dev/null +++ b/proyek-frontend/app/pages/form/undangan-khitan-premium.vue @@ -0,0 +1,313 @@ + + + + + Form Undangan Khitan Premium + + + Isi semua data berikut dengan lengkap dan benar. + + + + + 📋 Data Pemesan + + + + + + + + + + 🧒 Data Anak + + + + + + + + + + + + + + 🎉 Acara Khitan + + + + + + + + + + + 🍽️ Acara Syukuran + + + + + + + + + + + 🕒 Informasi Tambahan + + + + + + + + 💳 Rekening + + + + + + + + + + 🖼️ Galeri Foto + + + + + + Pilih Foto (maks. 8, JPEG/PNG, maks. 2MB) + + + + + + ✕ + + + + + + + + + + + + + 🎵 Musik + + + + + + + Batal + + + Konfirmasi + + + + + + + diff --git a/proyek-frontend/app/pages/form/undangan-ulang-tahun-premium.vue b/proyek-frontend/app/pages/form/undangan-ulang-tahun-premium.vue index 7cd94c9..345a659 100644 --- a/proyek-frontend/app/pages/form/undangan-ulang-tahun-premium.vue +++ b/proyek-frontend/app/pages/form/undangan-ulang-tahun-premium.vue @@ -1,434 +1,174 @@ - - - - Undangan Ulang Tahun Premium - - Harga: Rp 200.000 + + + + Form Undangan Ulang Tahun Premium + + + Isi semua data berikut dengan lengkap dan benar. + - - - Data Pemesan - - - - - Nama Pemesan * - - - + + 📋 Data Pemesan + + + + + + + + + 🎉 Data Anak + - - Email * - - + + + + + + + + - - - No Telepon - - + + + + + - - - - - Data Yang Berulang Tahun - - - - - Nama Lengkap - - - - - - - Nama Panggilan - - - - - - - Nama Bapak - - - - - - - Nama Ibu - - - - - - - Umur Yang Dirayakan - - - - - - - Anak Ke - - - - - - - - - Media Sosial - - - - - Link Instagram - - - - - - - Link Facebook - - - - - - - Link Twitter - - - - - + - - Detail Acara - + + 📅 Detail Acara - - - Hari & Tanggal Acara - - - - - - - Waktu - - - - - - - Alamat - - - - - - - Link Google Maps - - - - - - - Say Something - - - + + + + + + - + - - - Rekening (Opsional) - - - - - Rekening 1 - - - - - - - Rekening 2 - - - - - - - Rekening 3 - - - + + + 💌 Pesan & Rekening + + + + + - + + - - - Upload Foto - - - - - Foto {{ i }} - - - - ✓ File dipilih: {{ formData[`foto_${i}`].name }} - - - - - - - - Background Music - - - - Link Music - + + + 🖼️ Galeri Foto + + + + + Pilih Foto (maks. 8, JPEG/PNG, maks. 2MB) + + + + + + ✕ + + + + + + + - + - - - - {{ loading ? 'Mengirim...' : 'Kirim Pesanan' }} + + + + Batal - - Reset + + Konfirmasi - + - + }, + foto: [] +}) - \ No newline at end of file + +const removeFile = (index) => { + form.value.foto.splice(index, 1) + previews.value.splice(index, 1) +} + +const konfirmasi = async () => { + try { + // Basic client-side validation + if (!form.value.nama_pemesan || !form.value.email) { + alert('Harap isi kolom wajib (Nama Pemesan, Email)!') + return + } + + const data = new FormData() + data.append('nama_pemesan', form.value.nama_pemesan) + data.append('email', form.value.email) + data.append('no_tlpn', form.value.no_tlpn) + data.append('template_slug', 'undangan-ulang-tahun-premium') + + // Append form fields individually to ensure Laravel receives them as an array + for (const [key, value] of Object.entries(form.value.form)) { + data.append(`form[${key}]`, value) + } + + form.value.foto.forEach((file, index) => { + data.append(`foto[${index}]`, file) + }) + + console.log([...data]) // untuk debugging + + const res = await fetch('http://localhost:8000/api/pelanggans', { + method: 'POST', + body: data + }) + + const result = await res.json() + + if (!res.ok) { + if (res.status === 422) { + const errors = result.errors || {} + const errorMessages = Object.values(errors).flat().join('\n') + throw new Error(errorMessages || result.message || 'Validasi gagal') + } + if (res.status === 404) { + throw new Error(result.message || 'Template tidak ditemukan') + } + throw new Error(result.message || 'Gagal mengirim data') + } + + alert(result.message || 'Data berhasil disimpan!') + router.push('/') + } catch (err) { + console.error(err) + alert('Terjadi kesalahan: ' + err.message) + } +} + +const batal = () => router.back() + \ No newline at end of file
+ Isi semua data berikut dengan lengkap dan benar. +
Harga: Rp 200.000
- ✓ File dipilih: {{ formData[`foto_${i}`].name }} -