nhance_partner_be/app/Controllers/AgentController.php

200 lines
6.8 KiB
PHP

<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
use App\Controllers\BaseController;
use App\Models\AgentModel;
class AgentController extends ResourceController
{
protected $AgentModel;
public function __construct()
{
$this->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);
}
}
}