[Update] working flow pemesanan
This commit is contained in:
parent
21afb74337
commit
4ce07faf34
@ -10,7 +10,7 @@ class PelangganSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
Pelanggan::factory()->count(100)->create();
|
||||
Pelanggan::factory(100)->create();
|
||||
// $pelanggans = [
|
||||
// [
|
||||
// 'nama_pemesan' => 'Arief Dwi Wicaksono',
|
||||
|
||||
@ -16,6 +16,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Pernikahan Starter',
|
||||
'slug' => 'undangan-pernikahan-starter',
|
||||
'harga' => 100000,
|
||||
'paket' => 'starter',
|
||||
'form' => [
|
||||
@ -42,6 +43,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Pernikahan Basic',
|
||||
'slug' => 'undangan-pernikahan-basic',
|
||||
'harga' => 175000,
|
||||
'paket' => 'basic',
|
||||
'form' => [
|
||||
@ -79,6 +81,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Pernikahan Premium',
|
||||
'slug' => 'undangan-pernikahan-premium',
|
||||
'harga' => 350000,
|
||||
'paket' => 'premium',
|
||||
'form' => [
|
||||
@ -134,60 +137,9 @@ class TemplateSeeder extends Seeder
|
||||
'foto' => 'templates/Pernikahan.jpg',
|
||||
]);
|
||||
|
||||
// Template Pernikahan Premium
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Pernikahan Premium',
|
||||
'harga' => 250000,
|
||||
'paket' => 'premium',
|
||||
'form' => [
|
||||
'fields' => [
|
||||
['name' => 'nama_pemesan', 'label' => 'Nama Pemesan', 'type' => 'text', 'required' => true],
|
||||
['name' => 'email', 'label' => 'Email', 'type' => 'email', 'required' => true],
|
||||
['name' => 'no_telepon', 'label' => 'No Telepon', 'type' => 'text'],
|
||||
['name' => 'nama_lengkap_pria', 'label' => 'Nama Lengkap Pria', 'type' => 'text'],
|
||||
['name' => 'nama_panggilan_pria', 'label' => 'Nama Panggilan Pria', 'type' => 'text'],
|
||||
['name' => 'nama_bapak_pria', 'label' => 'Nama Bapak Pria', 'type' => 'text'],
|
||||
['name' => 'nama_ibu_pria', 'label' => 'Nama Ibu Pria', 'type' => 'text'],
|
||||
['name' => 'instagram_pria', 'label' => 'Link Instagram Pria', 'type' => 'text'],
|
||||
['name' => 'facebook_pria', 'label' => 'Link Facebook Pria', 'type' => 'text'],
|
||||
['name' => 'twitter_pria', 'label' => 'Link Twitter Pria', 'type' => 'text'],
|
||||
['name' => 'nama_lengkap_wanita', 'label' => 'Nama Lengkap Wanita', 'type' => 'text'],
|
||||
['name' => 'nama_panggilan_wanita', 'label' => 'Nama Panggilan Wanita', 'type' => 'text'],
|
||||
['name' => 'nama_bapak_wanita', 'label' => 'Nama Bapak Wanita', 'type' => 'text'],
|
||||
['name' => 'nama_ibu_wanita', 'label' => 'Nama Ibu Wanita', 'type' => 'text'],
|
||||
['name' => 'instagram_wanita', 'label' => 'Link Instagram Wanita', 'type' => 'text'],
|
||||
['name' => 'facebook_wanita', 'label' => 'Link Facebook Wanita', 'type' => 'text'],
|
||||
['name' => 'twitter_wanita', 'label' => 'Link Twitter Wanita', 'type' => 'text'],
|
||||
['name' => 'cerita_kita', 'label' => 'Cerita Kita', 'type' => 'textarea'],
|
||||
['name' => 'hari_tanggal_akad', 'label' => 'Hari & Tanggal Acara (Akad)', 'type' => 'date'],
|
||||
['name' => 'waktu_akad', 'label' => 'Waktu Akad', 'type' => 'text'],
|
||||
['name' => 'alamat_akad', 'label' => 'Alamat Akad', 'type' => 'text'],
|
||||
['name' => 'link_gmaps_akad', 'label' => 'Link Gmaps Akad', 'type' => 'text'],
|
||||
['name' => 'hari_tanggal_resepsi', 'label' => 'Hari & Tanggal Acara (Resepsi)', 'type' => 'date'],
|
||||
['name' => 'waktu_resepsi', 'label' => 'Waktu Resepsi', 'type' => 'text'],
|
||||
['name' => 'alamat_resepsi', 'label' => 'Alamat Resepsi', 'type' => 'text'],
|
||||
['name' => 'link_gmaps_resepsi', 'label' => 'Link Gmaps Resepsi', 'type' => 'text'],
|
||||
['name' => 'say_something', 'label' => 'Say Something', 'type' => 'textarea'],
|
||||
['name' => 'rekening_1', 'label' => 'Rekening 1', 'type' => 'text'],
|
||||
['name' => 'rekening_2', 'label' => 'Rekening 2', 'type' => 'text'],
|
||||
['name' => 'rekening_3', 'label' => 'Rekening 3', 'type' => 'text'],
|
||||
['name' => 'foto_1', 'label' => 'Foto 1', 'type' => 'file'],
|
||||
['name' => 'foto_2', 'label' => 'Foto 2', 'type' => 'file'],
|
||||
['name' => 'foto_3', 'label' => 'Foto 3', 'type' => 'file'],
|
||||
['name' => 'foto_4', 'label' => 'Foto 4', 'type' => 'file'],
|
||||
['name' => 'foto_5', 'label' => 'Foto 5', 'type' => 'file'],
|
||||
['name' => 'foto_6', 'label' => 'Foto 6', 'type' => 'file'],
|
||||
['name' => 'foto_7', 'label' => 'Foto 7', 'type' => 'file'],
|
||||
['name' => 'foto_8', 'label' => 'Foto 8', 'type' => 'file'],
|
||||
['name' => 'link_music', 'label' => 'Link Music', 'type' => 'text'],
|
||||
]
|
||||
],
|
||||
'kategori_id' => $k1->id,
|
||||
'foto' => 'templates/Pernikahan.jpg',
|
||||
]);
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Ulang Tahun Starter',
|
||||
'slug' => 'undangan-ulang-tahun-starter',
|
||||
'harga' => 100000,
|
||||
'paket' => 'starter',
|
||||
'form' => [
|
||||
@ -210,6 +162,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Ulang Tahun Basic',
|
||||
'slug' => 'undangan-ulang-tahun-basic',
|
||||
'harga' => 175000,
|
||||
'paket' => 'basic',
|
||||
'form' => [
|
||||
@ -242,6 +195,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Ulang Tahun Premium',
|
||||
'slug' => 'undangan-ulang-tahun-premium',
|
||||
'harga' => 250000,
|
||||
'paket' => 'premium',
|
||||
'form' => [
|
||||
@ -283,47 +237,9 @@ class TemplateSeeder extends Seeder
|
||||
'foto' => 'templates/HBD.jpg',
|
||||
]);
|
||||
|
||||
// Template Ulang Tahun Premium
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Ulang Tahun Premium',
|
||||
'harga' => 200000,
|
||||
'paket' => 'premium',
|
||||
'form' => [
|
||||
'fields' => [
|
||||
['name' => 'nama_pemesan', 'label' => 'Nama Pemesan', 'type' => 'text', 'required' => true],
|
||||
['name' => 'email', 'label' => 'Email', 'type' => 'email', 'required' => true],
|
||||
['name' => 'no_telepon', 'label' => 'No Telepon', 'type' => 'text'],
|
||||
['name' => 'nama_lengkap', 'label' => 'Nama Lengkap', 'type' => 'text'],
|
||||
['name' => 'nama_panggilan', 'label' => 'Nama Panggilan', 'type' => 'text'],
|
||||
['name' => 'nama_bapak', 'label' => 'Nama Bapak', 'type' => 'text'],
|
||||
['name' => 'nama_ibu', 'label' => 'Nama Ibu', 'type' => 'text'],
|
||||
['name' => 'umur_yang_dirayakan', 'label' => 'Umur Yang Dirayakan', 'type' => 'number'],
|
||||
['name' => 'anak_ke', 'label' => 'Anak Ke', 'type' => 'number'],
|
||||
['name' => 'instagram', 'label' => 'Link Instagram', 'type' => 'text'],
|
||||
['name' => 'facebook', 'label' => 'Link Facebook', 'type' => 'text'],
|
||||
['name' => 'twitter', 'label' => 'Link Twitter', 'type' => 'text'],
|
||||
['name' => 'hari_tanggal_acara', 'label' => 'Hari & Tanggal Acara', 'type' => 'date'],
|
||||
['name' => 'waktu', 'label' => 'Waktu', 'type' => 'text'],
|
||||
['name' => 'alamat', 'label' => 'Alamat', 'type' => 'text'],
|
||||
['name' => 'link_gmaps', 'label' => 'Link Gmaps', 'type' => 'text'],
|
||||
['name' => 'say_something', 'label' => 'Say Something', 'type' => 'textarea'],
|
||||
['name' => 'rekening_1', 'label' => 'Rekening 1', 'type' => 'text'],
|
||||
['name' => 'rekening_2', 'label' => 'Rekening 2', 'type' => 'text'],
|
||||
['name' => 'rekening_3', 'label' => 'Rekening 3', 'type' => 'text'],
|
||||
['name' => 'foto_1', 'label' => 'Foto 1', 'type' => 'file'],
|
||||
['name' => 'foto_2', 'label' => 'Foto 2', 'type' => 'file'],
|
||||
['name' => 'foto_3', 'label' => 'Foto 3', 'type' => 'file'],
|
||||
['name' => 'foto_4', 'label' => 'Foto 4', 'type' => 'file'],
|
||||
['name' => 'foto_5', 'label' => 'Foto 5', 'type' => 'file'],
|
||||
['name' => 'link_music', 'label' => 'Link Music', 'type' => 'text'],
|
||||
]
|
||||
],
|
||||
'kategori_id' => $k2->id,
|
||||
'foto' => 'templates/HBD.jpg',
|
||||
]);
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Khitan Starter',
|
||||
'slug' => 'undangan-khitan-starter',
|
||||
'harga' => 100000,
|
||||
'paket' => 'starter',
|
||||
'form' => [
|
||||
@ -347,6 +263,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Khitan Basic',
|
||||
'slug' => 'undangan-khitan-basic',
|
||||
'harga' => 175000,
|
||||
'paket' => 'basic',
|
||||
'form' => [
|
||||
@ -378,6 +295,7 @@ class TemplateSeeder extends Seeder
|
||||
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Khitan Premium',
|
||||
'slug' => 'undangan-khitan-premium',
|
||||
'harga' => 250000,
|
||||
'paket' => 'premium',
|
||||
'form' => [
|
||||
@ -420,43 +338,5 @@ class TemplateSeeder extends Seeder
|
||||
'kategori_id' => $k3->id,
|
||||
'foto' => 'templates/Khitan.jpg',
|
||||
]);
|
||||
|
||||
// Template Khitan Premium
|
||||
Template::create([
|
||||
'nama_template' => 'Undangan Khitan Premium',
|
||||
'harga' => 180000,
|
||||
'paket' => 'premium',
|
||||
'form' => [
|
||||
'fields' => [
|
||||
['name' => 'nama_pemesan', 'label' => 'Nama Pemesan', 'type' => 'text', 'required' => true],
|
||||
['name' => 'email', 'label' => 'Email', 'type' => 'email', 'required' => true],
|
||||
['name' => 'no_telepon', 'label' => 'No Telepon', 'type' => 'text'],
|
||||
['name' => 'nama_lengkap', 'label' => 'Nama Lengkap', 'type' => 'text'],
|
||||
['name' => 'nama_panggilan', 'label' => 'Nama Panggilan', 'type' => 'text'],
|
||||
['name' => 'nama_bapak', 'label' => 'Nama Bapak', 'type' => 'text'],
|
||||
['name' => 'nama_ibu', 'label' => 'Nama Ibu', 'type' => 'text'],
|
||||
['name' => 'instagram', 'label' => 'Link Instagram', 'type' => 'text'],
|
||||
['name' => 'facebook', 'label' => 'Link Facebook', 'type' => 'text'],
|
||||
['name' => 'twitter', 'label' => 'Link Twitter', 'type' => 'text'],
|
||||
['name' => 'hari_tanggal_acara', 'label' => 'Hari & Tanggal Acara', 'type' => 'date'],
|
||||
['name' => 'waktu', 'label' => 'Waktu', 'type' => 'text'],
|
||||
['name' => 'alamat', 'label' => 'Alamat', 'type' => 'text'],
|
||||
['name' => 'link_gmaps', 'label' => 'Link Gmaps', 'type' => 'text'],
|
||||
['name' => 'say_something', 'label' => 'Say Something', 'type' => 'textarea'],
|
||||
['name' => 'rekening_1', 'label' => 'Rekening 1', 'type' => 'text'],
|
||||
['name' => 'rekening_2', 'label' => 'Rekening 2', 'type' => 'text'],
|
||||
['name' => 'rekening_3', 'label' => 'Rekening 3', 'type' => 'text'],
|
||||
['name' => 'foto_1', 'label' => 'Foto 1', 'type' => 'file'],
|
||||
['name' => 'foto_2', 'label' => 'Foto 2', 'type' => 'file'],
|
||||
['name' => 'foto_3', 'label' => 'Foto 3', 'type' => 'file'],
|
||||
['name' => 'foto_4', 'label' => 'Foto 4', 'type' => 'file'],
|
||||
['name' => 'foto_5', 'label' => 'Foto 5', 'type' => 'file'],
|
||||
['name' => 'foto_6', 'label' => 'Foto 6', 'type' => 'file'],
|
||||
['name' => 'link_music', 'label' => 'Link Music', 'type' => 'text'],
|
||||
]
|
||||
],
|
||||
'kategori_id' => $k3->id,
|
||||
'foto' => 'templates/Khitan.jpg',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,11 +154,10 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const router = useRouter()
|
||||
const templates = ref([])
|
||||
|
||||
const form = ref({
|
||||
nama_pemesan: '',
|
||||
@ -226,7 +225,7 @@ const konfirmasi = async () => {
|
||||
try {
|
||||
// Basic client-side validation
|
||||
if (!form.value.nama_pemesan || !form.value.email || !form.value.no_tlpn) {
|
||||
alert('Harap isi semua kolom wajib (Nama Pemesan, Email, No Telepon, Template)!')
|
||||
alert('Harap isi semua kolom wajib (Nama Pemesan, Email, No Telepon)!')
|
||||
return
|
||||
}
|
||||
|
||||
@ -234,8 +233,12 @@ const konfirmasi = async () => {
|
||||
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-pernikahan-premium")
|
||||
data.append('form', JSON.stringify(form.value.form))
|
||||
data.append('template_slug', 'undangan-pernikahan-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)
|
||||
@ -256,6 +259,9 @@ const konfirmasi = async () => {
|
||||
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')
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user