AgentModel = new AgentModel(); } // List of all agents public function agentList() { try{ $data = $this->AgentModel->findAll(); return $this->respond(['status' => 'success', 'code' => 200, 'data' => $data], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // Find a agent public function findAgent() { try{ $id = $this->request->getGet('id'); $record = $this->AgentModel->find($id); if (!$record) { return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200); } return $this->respond(['status' => 'success', 'code' => 200, 'data' => $record], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // CREATE agent public function createAgent() { try{ $data = $this->request->getPost(); // handle file uploads $certificateFile = $this->request->getFile('certificate_file_name'); $incentiveFile = $this->request->getFile('incentive_file_name'); $certificateFileName = null; $incentiveFileName = null; // certificate upload if ($certificateFile && $certificateFile->isValid()) { $uploadPath = WRITEPATH . 'uploads/agent/certificate_file/'; if (!is_dir($uploadPath)) { mkdir($uploadPath, 0777, true); } $certificateFileName = time() . '_' . $certificateFile->getRandomName(); $certificateFile->move($uploadPath, $certificateFileName); } // incentive upload if ($incentiveFile && $incentiveFile->isValid()) { $uploadPath = WRITEPATH . 'uploads/agent/incentive_file/'; if (!is_dir($uploadPath)) { mkdir($uploadPath, 0777, true); } $incentiveFileName = time() . '_' . $incentiveFile->getRandomName(); $incentiveFile->move($uploadPath, $incentiveFileName); } $insertData = [ 'name' => $data['name'], 'email' => $data['email'], 'mobile' => $data['mobile'], 'address' => $data['address'] ?? null, 'certificate_file_name' => $certificateFileName, 'incentive_file_name' => $incentiveFileName, 'created_by' => $data['created_by'] ?? null ]; $this->AgentModel->insert($insertData); return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // UPDATE agent public function updateAgent() { try{ $data = $this->request->getPost(); if (!isset($data['id'])) { return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'ID Required'], 200); } $id = $data['id']; // check if agent exists $agent = $this->AgentModel->find($id); if (!$agent) { return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'Date Not Found'], 200); } // handle file uploads $certificateFile = $this->request->getFile('certificate_file_name'); $incentiveFile = $this->request->getFile('incentive_file_name'); $updateData = [ 'name' => $data['name'] ?? null, 'email' => $data['email'] ?? null, 'mobile' => $data['mobile'] ?? null, 'address' => $data['address'] ?? null, 'updated_by' => $data['updated_by'] ?? null, ]; if ($certificateFile && $certificateFile->isValid()) { $uploadPath = WRITEPATH . 'uploads/agent/certificate_file/'; if (!is_dir($uploadPath)) { mkdir($uploadPath, 0777, true); } $certificateFileName = time() . '_' . $certificateFile->getRandomName(); $certificateFile->move($uploadPath, $certificateFileName); $updateData['certificate_file_name'] = $certificateFileName; } if ($incentiveFile && $incentiveFile->isValid()) { $uploadPath = WRITEPATH . 'uploads/agent/incentive_file/'; if (!is_dir($uploadPath)) { mkdir($uploadPath, 0777, true); } $incentiveFileName = time() . '_' . $incentiveFile->getRandomName(); $incentiveFile->move($uploadPath, $incentiveFileName); $updateData['incentive_file_name'] = $incentiveFileName; } $this->AgentModel->update($id, $updateData); return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // ACTIVATE / DEACTIVATE agent public function changeAgentStatus() { try { $data = $this->request->getPost(); // validate inputs if (!isset($data['id']) || !isset($data['is_active'])) { return $this->respond(['status' => 'failed', 'code' => 200,'data' => 'ID and Status are required'], 200); } $id = $data['id']; $is_active = (int) $data['is_active']; // 0 or 1 $status = ($is_active == 1) ? 0 : 1; // check if agent exists $agent = $this->AgentModel->find($id); if (!$agent) { return $this->respond(['status' => 'failed','code' => 200, 'data' => 'Agent not found'], 200); } // update status $this->AgentModel->update($id, ['is_active' => $status]); return $this->respond([ 'status' => 'success', 'code' => 200,'data' => "Agent status updated"], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500); } } }