From 58014aae9c48a505e0d5f428f10f2c9552bcf128 Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Sat, 20 Dec 2025 18:51:09 +0530 Subject: [PATCH] staff validation : GWM --- app/Controllers/StaffController.php | 65 ++++++++++++++++++++++++----- app/Models/StaffModel.php | 14 ------- 2 files changed, 55 insertions(+), 24 deletions(-) diff --git a/app/Controllers/StaffController.php b/app/Controllers/StaffController.php index 433c0a7..2e7e484 100644 --- a/app/Controllers/StaffController.php +++ b/app/Controllers/StaffController.php @@ -201,17 +201,62 @@ class StaffController extends ResourceController try{ $data = $this->request->getJSON(true); - $handlerArray = $data['handler_id'] ?? []; + // 1️⃣ Either email or mobile must be present + if (empty($data['email']) && empty($data['mobile'])) { + return $this->respond([ + 'status' => 'failed', + 'code' => 422, + 'data' => [ + 'message' => 'Either email or mobile is required' + ] + ], 200); + } - $insertData = [ - 'name' => $data['name'], - 'email' => $data['email'], - 'mobile' => $data['mobile'], - 'role_id' => $data['role_id'], - 'manager_id' => $data['manager_id'], - 'handler_id' => json_encode($handlerArray), - 'created_by' => $data['created_by'] - ]; + // 2️⃣ Validation rules + $rules = [ + 'email' => 'permit_empty|valid_email|is_unique[partner_staff.email]', + 'mobile' => 'permit_empty|numeric|min_length[10]|max_length[15]|is_unique[partner_staff.mobile]', + 'name' => 'required', + 'role_id'=> 'required' + ]; + + $messages = [ + 'email' => [ + 'valid_email' => 'Invalid email format', + 'is_unique' => 'Email already exists' + ], + 'mobile' => [ + 'numeric' => 'Mobile must be numeric', + 'min_length'=> 'Mobile must be at least 10 digits', + 'max_length'=> 'Mobile must be at most 15 digits', + 'is_unique' => 'Mobile number already exists' + ], + 'name' => [ + 'required' => 'Name is required' + ], + 'role_id' => [ + 'required' => 'Role is required' + ] + ]; + + if (!$this->validate($rules, $messages)) { + return $this->respond([ + 'status' => 'failed', + 'code' => 422, + 'data' => $this->validator->getErrors() + ], 200); + } + + // 3️⃣ Insert data + $insertData = [ + 'name' => $data['name'], + 'email' => $data['email'] ?? null, + 'mobile' => $data['mobile'] ?? null, + 'role_id' => $data['role_id'], + 'manager_id' => $data['manager_id'] ?? null, + 'handler_id' => json_encode($data['handler_id'] ?? []), + 'created_by' => $data['created_by'] + ]; $this->StaffModel->insert($insertData); diff --git a/app/Models/StaffModel.php b/app/Models/StaffModel.php index 364fc27..fd2011e 100644 --- a/app/Models/StaffModel.php +++ b/app/Models/StaffModel.php @@ -27,20 +27,6 @@ class StaffModel extends Model protected $useTimestamps = false; // we manually manage created_on / updated_on - protected $validationRules = [ - 'name' => 'required|min_length[3]', - 'email' => 'permit_empty|valid_email|is_unique[partner_staff.email,id,{id}]', - 'mobile' => 'permit_empty|numeric|max_length[20]|is_unique[partner_staff.mobile,id,{id}]', - 'manager_id' => 'required|integer', - ]; - protected $validationMessages = [ - 'email' => [ - 'is_unique' => 'Sorry, that email address is already registered.', - ], - 'mobile' => [ - 'is_unique' => 'Sorry, that mobile number is already registered.', - ], - ]; }