diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b06b371..02725a2 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -180,7 +180,8 @@ $routes->get('/testemail','Activites::email_test'); $routes->get('/contacts', 'Contacts::index'); $routes->get('/contacts/view/(:num)', 'Contacts::view/$1'); $routes->match(['get','post'],'/contacts/edit/(:num)', 'Contacts::edit/$1'); -$routes->match(['get','post'],'/contacts/create', 'Contacts::edit/0'); +// $routes->match(['get','post'],'/contacts/create', 'Contacts::edit/0'); +$routes->post('/contacts/create', 'Contacts::createFromActivities'); // emails $routes->get('/emails', 'Emails::index'); diff --git a/app/Controllers/Contacts.php b/app/Controllers/Contacts.php index d1463a7..9bc53db 100644 --- a/app/Controllers/Contacts.php +++ b/app/Controllers/Contacts.php @@ -31,18 +31,38 @@ class Contacts extends Controller { public function edit($contactid = null) { $db = \Config\Database::connect(); $data = array(); + if($contactid != 0) { $sql = "select * from contacts where contactid='$contactid'"; $query = $db->query($sql); $results = $query->getResultArray(); $data['contacts'] = $results; } + if ($this->request->getMethod() === 'POST') { + + if ($contactid != 0) { + $ruleInitial = "required|is_unique[contacts.initial,contactid,{$contactid}]"; + } else { + $ruleInitial = "required|is_unique[contacts.initial]"; + } $rules = [ - // 'contactid' => 'required', 'firstname' => 'required', - 'email_1' => 'required', - 'initial' => 'required' + 'email_1' => 'required|valid_email', + 'initial' => $ruleInitial + ]; + $messages = [ + 'firstname' => [ + 'required' => 'Nama depan harus diisi, tidak boleh kosong.' + ], + 'email_1' => [ + 'required' => 'Email wajib diisi.', + 'valid_email' => 'Format email yang anda masukkan tidak valid.' + ], + 'initial' => [ + 'required' => 'Initial tidak boleh kosong.', + 'is_unique' => 'Initial ini sudah dipakai orang lain, silakan cari yang unik.' + ] ]; $data['new_value'] = [ 'firstname' => $this->request->getVar('firstname'), @@ -58,7 +78,7 @@ class Contacts extends Controller { 'siteid' => $this->request->getVar('siteid') ?? null //Untuk Create dari AR ]; - if($this->validate($rules)){ + if($this->validate($rules, $messages)){ if($contactid != 0) { $contactsModel = new contactsModel(); $contactsModel->set('enddate', NULL); @@ -90,4 +110,71 @@ class Contacts extends Controller { } return view('contacts_editor', $data); } + + public function createFromActivities() { + $db = \Config\Database::connect(); + + $rules = [ + 'firstname' => 'required', + 'email_1' => 'required|valid_email', + 'initial' => 'required|is_unique[contacts.initial]' + ]; + $messages = [ + 'firstname' => [ + 'required' => 'Nama depan harus diisi, tidak boleh kosong.' + ], + 'email_1' => [ + 'required' => 'Email wajib diisi.', + 'valid_email' => 'Format email yang anda masukkan tidak valid.' + ], + 'initial' => [ + 'required' => 'Initial tidak boleh kosong.', + 'is_unique' => 'Initial ini sudah dipakai orang lain, silakan cari yang unik.' + ] + ]; + $data['new_value'] = [ + 'firstname' => $this->request->getVar('firstname'), + 'lastname' => $this->request->getVar('lastname'), + 'title' => $this->request->getVar('title'), + 'initial' => $this->request->getVar('initial'), + 'birthdate' => ($this->request->getVar('birthdate') == '') ? NULL : $this->request->getVar('birthdate'), + 'email_1' => $this->request->getVar('email_1'), + 'email_2' => $this->request->getVar('email_2'), + 'phone' => $this->request->getVar('phone'), + 'mobile_1' => $this->request->getVar('mobile_1'), + 'mobile_2' => $this->request->getVar('mobile_2'), + 'siteid' => $this->request->getVar('siteid') ?? null //Untuk Create dari AR + ]; + + if ($this->validate($rules, $messages)) { + + $contactsModel = new ContactsModel(); + $contactsModel->set('createdate', 'NOW()', FALSE); + $contactsModel->set('enddate', NULL); + $contactsModel->insert($data['new_value']); + $contactid = $contactsModel->getInsertID(); + + if ($this->request->getVar('siteid') != null) { + $siteContactModel = new SiteContactModel(); + $siteContactValue = [ + 'siteid' => $this->request->getVar('siteid'), + 'contactid' => $contactid, + 'contactemail' => $this->request->getVar('email_1'), + ]; + $siteContactModel->insert($siteContactValue); + } + + // Kembalikan JSON Sukses + return $this->response->setJSON(['status' => 'success', 'message' => 'Data berhasil disimpan']); + + } else { + // --- JIKA VALIDASI GAGAL --- + // Ubah HTTP Status menjadi 400 (Bad Request) agar AJAX tahu ini adalah "Error" + return $this->response->setStatusCode(400)->setJSON([ + 'status' => 'error', + 'errors' => $this->validator->getErrors() // Ambil list errornya + ]); + } + + } } \ No newline at end of file diff --git a/app/Views/activities_getsitecontacts.php b/app/Views/activities_getsitecontacts.php index b115e43..4ea6e75 100644 --- a/app/Views/activities_getsitecontacts.php +++ b/app/Views/activities_getsitecontacts.php @@ -26,9 +26,9 @@