diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 2f8c5d2..acc1075 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -141,11 +141,17 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) { $routes->post('invoice/commission-rate-list', 'InvoiceController::getCommissionRateList'); + $routes->get('salesExecutive/executiveList', 'SalesExecutive::salesExecutiveList'); + $routes->get('salesExecutive/findExecutive', 'SalesExecutive::findSalesExecutive'); + $routes->post('salesExecutive/createExecutive', 'SalesExecutive::createSalesExecutive'); + $routes->post('salesExecutive/updateExecutive', 'SalesExecutive::updateSalesExecutive'); + $routes->post('salesExecutive/changeExecutiveStatus', 'SalesExecutive::changeSalesExecutiveStatus'); + + }); - $routes->cli('cli/processjob', 'JobWorker::processJob'); $routes->cli('cli/processjobs', 'JobWorker::processJobs'); $routes->get("processjob", "JobWorker::processJob"); diff --git a/app/Controllers/AgentController.php b/app/Controllers/AgentController.php index 8810288..bcdea13 100644 --- a/app/Controllers/AgentController.php +++ b/app/Controllers/AgentController.php @@ -98,6 +98,7 @@ class AgentController extends ResourceController 'agent_code' => $data['agent_code'], 'address' => $data['address'], 'manager_id' => $data['manager_id'], + 'sales_executive_id' => $data['sales_executive_id'], 'certificate_file_name' => $certificateFileName, 'created_by' => $data['created_by'] ]; @@ -138,6 +139,7 @@ class AgentController extends ResourceController 'mobile' => $data['mobile'] ?? null, 'address' => $data['address'] ?? null, 'agent_code' => $data['agent_code'] ?? null, + 'sales_executive_id' => $data['sales_executive_id'] ?? null, 'updated_by' => $data['updated_by'] ?? null, ]; diff --git a/app/Controllers/SalesExecutive.php b/app/Controllers/SalesExecutive.php new file mode 100644 index 0000000..7fcb15d --- /dev/null +++ b/app/Controllers/SalesExecutive.php @@ -0,0 +1,149 @@ +salesExecutiveModel = new SalesExecutiveModel(); + } + + // LIST of all sales executive + public function salesExecutiveList() + { + try{ + + $id = $this->request->getGet('manager_id'); + + $data = $this->salesExecutiveModel->where('manager_id' , $id )->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 sales executive + public function findSalesExecutive() + { + try{ + + $id = $this->request->getGet('id'); + + $record = $this->salesExecutiveModel->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 sales executive + public function createPartnerSalesExecutive() + { + try{ + $data = $this->request->getPost(); + + $insertData = [ + 'name' => $data['name'], + 'email' => $data['email'], + 'mobile' => $data['mobile'], + 'address' => $data['address'], + 'manager_id' => $data['manager_id'], + 'created_by' => $data['created_by'] + ]; + + $this->salesExecutiveModel->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 sales executive + public function updateSalesExecutive() + { + 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 Sales Executive exists + $salesExecutive = $this->salesExecutiveModel->find($id); + if (!$salesExecutive) { + return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'Date Not Found'], 200); + } + + $updateData = [ + 'name' => $data['name'] ?? null, + 'email' => $data['email'] ?? null, + 'mobile' => $data['mobile'] ?? null, + 'address' => $data['address'] ?? null, + 'updated_by' => $data['updated_by'] ?? null, + ]; + + $this->salesExecutiveModel->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); + } + } + + // Soft Delete (ACTIVATE / DEACTIVATE) sales executive + public function changeSalesExecutiveStatus() + { + try { + $data = $this->request->getJSON(true); + + // 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->salesExecutiveModel->find($id); + if (!$agent) { + return $this->respond(['status' => 'failed','code' => 200, 'data' => 'Agent not found'], 200); + } + + // update status + $this->salesExecutiveModel->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); + } + } + +} \ No newline at end of file diff --git a/app/Models/AgentModel.php b/app/Models/AgentModel.php index 80e60a8..a761d2e 100644 --- a/app/Models/AgentModel.php +++ b/app/Models/AgentModel.php @@ -18,6 +18,7 @@ class AgentModel extends Model 'email_otp', 'firebase_device_token', 'manager_id', + 'sales_executive_id', 'commission_retain', 'is_active', 'created_by', diff --git a/app/Models/SalesExecutiveModel.php b/app/Models/SalesExecutiveModel.php new file mode 100644 index 0000000..7c8c682 --- /dev/null +++ b/app/Models/SalesExecutiveModel.php @@ -0,0 +1,26 @@ +