Manager file download : GWM
This commit is contained in:
parent
6938db1b68
commit
a7ae8cde31
@ -59,6 +59,8 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) {
|
|||||||
$routes->post('staff/createStaff', 'StaffController::createStaff');
|
$routes->post('staff/createStaff', 'StaffController::createStaff');
|
||||||
$routes->post('staff/updateStaff', 'StaffController::updateStaff');
|
$routes->post('staff/updateStaff', 'StaffController::updateStaff');
|
||||||
$routes->post('staff/changeStaffStatus', 'StaffController::changeStaffStatus');
|
$routes->post('staff/changeStaffStatus', 'StaffController::changeStaffStatus');
|
||||||
|
$routes->get('staff/managerIncentiveFileList', 'StaffController::managerIncentiveFileList');
|
||||||
|
$routes->get('staff/downloadManagerIncentiveFile', 'StaffController::downloadManagerIncentiveFile');
|
||||||
|
|
||||||
|
|
||||||
//Enquiry
|
//Enquiry
|
||||||
|
|||||||
@ -70,16 +70,20 @@ class DashboardController extends ResourceController
|
|||||||
->get()
|
->get()
|
||||||
->getResultArray();
|
->getResultArray();
|
||||||
|
|
||||||
|
|
||||||
// --- Non-Performing Agents (bottom 5, last 30 days) ---
|
// --- Non-Performing Agents (bottom 5, last 30 days) ---
|
||||||
$nonPerformingAgents = $this->db->table('partner_agent pa')
|
$nonPerformingAgents = $this->db->table('partner_agent pa')
|
||||||
->select('pa.id AS agent_id, pa.name AS agent_name, COUNT(pp.id) AS policies_issued, IF(pa.is_active=1,"Active","Inactive") AS status')
|
->select('pa.id AS agent_id, pa.name AS agent_name, COUNT(pp.id) AS policies_issued, IF(COUNT(pp.id)>0,"Active","Inactive") AS status')
|
||||||
->join('partner_policy pp', 'pp.agent_id = pa.id AND ', 'left')
|
->join('partner_policy pp', 'pp.agent_id = pa.id', 'left')
|
||||||
|
->where('pp.created_on >=', $last30)
|
||||||
->groupBy('pa.id')
|
->groupBy('pa.id')
|
||||||
->orderBy('policies_issued', 'ASC')
|
->orderBy('policies_issued', 'ASC')
|
||||||
->limit(5)
|
->limit(5)
|
||||||
->get()
|
->get()
|
||||||
->getResultArray();
|
->getResultArray();
|
||||||
|
|
||||||
|
dd($nonPerformingAgents);
|
||||||
|
|
||||||
// --- Quotations Pending ---
|
// --- Quotations Pending ---
|
||||||
$quotationsPending = $this->db->table('partner_quotation pq')
|
$quotationsPending = $this->db->table('partner_quotation pq')
|
||||||
->select('ps.name as staff_name, COUNT(pq.id) as quotation_issued, COALESCE(SUM(pq.premium_amount),0) as premium_value')
|
->select('ps.name as staff_name, COUNT(pq.id) as quotation_issued, COALESCE(SUM(pq.premium_amount),0) as premium_value')
|
||||||
@ -90,6 +94,8 @@ class DashboardController extends ResourceController
|
|||||||
->limit(10)
|
->limit(10)
|
||||||
->get()->getResultArray();
|
->get()->getResultArray();
|
||||||
|
|
||||||
|
dd($quotationsPending);
|
||||||
|
|
||||||
// --- Policies Pending ---
|
// --- Policies Pending ---
|
||||||
$policiesPending = $this->db->table('partner_enquiry pe')
|
$policiesPending = $this->db->table('partner_enquiry pe')
|
||||||
->select('ps.name as staff_name, COUNT(pp.id) as policies_issued, COALESCE(SUM(pp.premium_amount),0) as premium_value')
|
->select('ps.name as staff_name, COUNT(pp.id) as policies_issued, COALESCE(SUM(pp.premium_amount),0) as premium_value')
|
||||||
|
|||||||
@ -26,6 +26,119 @@ class EndorsementController extends ResourceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function EndorsementList()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$id = $this->request->getGet('id'); // endorsement id
|
||||||
|
$manager_id = $this->request->getGet('manager_id');
|
||||||
|
$agent_id = $this->request->getGet('agent_id');
|
||||||
|
|
||||||
|
$builder = $this->EndorsementModel
|
||||||
|
->select('partner_endorsement_request.*,
|
||||||
|
i.name as insurer_name,
|
||||||
|
ib.branch_name as insurer_branch,
|
||||||
|
c.client_name, c.phone as client_phone, c.email as client_email,
|
||||||
|
pa.name as agent_name')
|
||||||
|
->join('insurers i', 'i.id = partner_endorsement_request.insurer_id', 'left')
|
||||||
|
->join('insurer_branch ib', 'ib.id = partner_endorsement_request.insurer_branch_id', 'left')
|
||||||
|
->join('clients c', 'c.id = partner_endorsement_request.client_id', 'left')
|
||||||
|
->join('partner_agent pa', 'pa.id = partner_endorsement_request.agent_id', 'left')
|
||||||
|
->where('partner_endorsement_request.is_active', 1);
|
||||||
|
|
||||||
|
// If ID is provided, fetch single record
|
||||||
|
if (!empty($id)) {
|
||||||
|
$builder->where('partner_endorsement_request.id', $id);
|
||||||
|
$record = $builder->get()->getRowArray();
|
||||||
|
|
||||||
|
if (!$record) {
|
||||||
|
return $this->respond(['status' => 'failed','code' => 404,'data' => 'Not Found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->respond(['status' => 'success','code' => 200,'data' => $record ], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply filters
|
||||||
|
if (!empty($manager_id)) {
|
||||||
|
$builder->where('partner_endorsement_request.manager_id', $manager_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($agent_id)) {
|
||||||
|
$builder->where('partner_endorsement_request.agent_id', $agent_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $builder->get()->getResultArray();
|
||||||
|
|
||||||
|
return $this->respond(['status' => 'success','code' => 200,'data' => $data], 200);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function createEndorsement()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$reqData = $this->request->getJSON(true);
|
||||||
|
|
||||||
|
// Validate required fields
|
||||||
|
if (empty($reqData['policy_number']) || empty($reqData['endorsement_type']) || empty($reqData['endorsement_description'])) {
|
||||||
|
return $this->respond(['status' => 'failed','code' => 400,'data' => 'policy_number, endorsement_type and endorsement_description are required' ], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch policy details
|
||||||
|
$policy = $this->PolicyModel->select('partner_policy.*, E.insurer_id, E.insurer_branch_id, E.name as client_name, E.mobile as client_mobile, E.email as client_email, E.reg_no')
|
||||||
|
->join('partner_quotation Q', 'Q.id = partner_policy.quotation_id', 'left')
|
||||||
|
->join('partner_enquiry E', 'E.id = partner_policy.enquiry_id', 'left')
|
||||||
|
->where('partner_policy.policy_number', $reqData['policy_number'])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (empty($policy)) {
|
||||||
|
return $this->respond(['status' => 'failed','code' => 404,'data' => 'Policy not found'], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare endorsement data
|
||||||
|
$endorsementData = [
|
||||||
|
'policy_number' => $policy['policy_number'],
|
||||||
|
'client_policy_id' => $policy['client_policy_id'] ?? null,
|
||||||
|
'insurer_id' => $policy['insurer_id'] ?? null,
|
||||||
|
'insurer_branch_id' => $policy['insurer_branch_id'] ?? null,
|
||||||
|
'client_id' => $policy['client_id'] ?? null,
|
||||||
|
'agent_id' => $policy['agent_id'] ?? null,
|
||||||
|
'manager_id' => $policy['manager_id'] ?? null,
|
||||||
|
'endorsement_type' => $reqData['endorsement_type'],
|
||||||
|
'endorsement_description'=> $reqData['endorsement_description'],
|
||||||
|
'endorsement_no' => $reqData['endorsement_no'] ?? null,
|
||||||
|
'created_by' => $reqData['created_by'] ?? null,
|
||||||
|
'status' => 'Open',
|
||||||
|
'is_active' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
// ✅ Insert endorsement
|
||||||
|
if (!$this->EndorsementModel->insert($endorsementData)) {
|
||||||
|
return $this->respond([
|
||||||
|
'status' => 'failed',
|
||||||
|
'code' => 422,
|
||||||
|
'data' => $this->EndorsementModel->errors()
|
||||||
|
], 422);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'status' => 'success',
|
||||||
|
'code' => 200,
|
||||||
|
'data' => ['endorsement_id' => $this->EndorsementModel->getInsertID()]
|
||||||
|
], 200);
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->respond([
|
||||||
|
'status' => 'failed',
|
||||||
|
'code' => 500,
|
||||||
|
'data' => $e->getMessage()
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,14 +4,17 @@ namespace App\Controllers;
|
|||||||
use CodeIgniter\RESTful\ResourceController;
|
use CodeIgniter\RESTful\ResourceController;
|
||||||
use App\Controllers\BaseController;
|
use App\Controllers\BaseController;
|
||||||
use App\Models\StaffModel;
|
use App\Models\StaffModel;
|
||||||
|
use App\Models\ManagerIncentiveFileModel;
|
||||||
|
|
||||||
class StaffController extends ResourceController
|
class StaffController extends ResourceController
|
||||||
{
|
{
|
||||||
protected $StaffModel;
|
protected $StaffModel;
|
||||||
|
protected $ManagerIncentiveFileModel;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->StaffModel = new StaffModel();
|
$this->StaffModel = new StaffModel();
|
||||||
|
$this->ManagerIncentiveFileModel = new ManagerIncentiveFileModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of all Staffs
|
// List of all Staffs
|
||||||
@ -152,6 +155,59 @@ class StaffController extends ResourceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// List of all manager incentive files
|
||||||
|
public function managerIncentiveFileList()
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
|
||||||
|
$manager_id = $this->request->getGet('manager_id');
|
||||||
|
|
||||||
|
$data = $this->ManagerIncentiveFileModel->where('manager_id',$manager_id)->where('is_active',1)->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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Download manager incentive file (proxy to external app)
|
||||||
|
public function downloadManagerIncentiveFile()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$file_name = $this->request->getGet('file_name');
|
||||||
|
|
||||||
|
|
||||||
|
// External API URL
|
||||||
|
$url = "https://venbait.in/nhance/dev/user/download-incentive-file/" . urlencode($file_name);
|
||||||
|
|
||||||
|
// Use CURL request to fetch the file
|
||||||
|
$client = \Config\Services::curlrequest();
|
||||||
|
$response = $client->get($url);
|
||||||
|
|
||||||
|
if ($response->getStatusCode() === 200) {
|
||||||
|
// Pass the file contents back as download
|
||||||
|
return $this->response
|
||||||
|
->setHeader('Content-Type', $response->getHeaderLine('Content-Type'))
|
||||||
|
->setHeader('Content-Disposition', 'attachment; filename="' . basename($file_name) . '"')
|
||||||
|
->setBody($response->getBody());
|
||||||
|
} else {
|
||||||
|
return $this->respond([
|
||||||
|
'status' => 'failed',
|
||||||
|
'code' => $response->getStatusCode(),
|
||||||
|
'message' => 'Unable to fetch file from source'
|
||||||
|
], $response->getStatusCode());
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->respond(['status' => 'failed', 'code' => 500,'data' => $e->getMessage()], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ use CodeIgniter\Model;
|
|||||||
|
|
||||||
class EndorsementModel extends Model
|
class EndorsementModel extends Model
|
||||||
{
|
{
|
||||||
protected $table = 'endorsement';
|
protected $table = 'partner_endorsement_request';
|
||||||
protected $primaryKey = 'id';
|
protected $primaryKey = 'id';
|
||||||
protected $returnType = 'array';
|
protected $returnType = 'array';
|
||||||
protected $useSoftDeletes = false;
|
protected $useSoftDeletes = false;
|
||||||
@ -15,10 +15,14 @@ class EndorsementModel extends Model
|
|||||||
'client_id',
|
'client_id',
|
||||||
'client_policy_id',
|
'client_policy_id',
|
||||||
'insurer_id',
|
'insurer_id',
|
||||||
'tpa_id',
|
'insurer_branch_id',
|
||||||
'file_id',
|
'manager_id',
|
||||||
|
'agent_id',
|
||||||
|
'policy_number',
|
||||||
'endorsement_no',
|
'endorsement_no',
|
||||||
'endorsement_type',
|
'endorsement_type',
|
||||||
|
'endorsement_description',
|
||||||
|
'status',
|
||||||
'created_at',
|
'created_at',
|
||||||
'updated_by',
|
'updated_by',
|
||||||
'updated_at',
|
'updated_at',
|
||||||
|
|||||||
39
app/Models/ManagerIncentiveFileModel.php
Normal file
39
app/Models/ManagerIncentiveFileModel.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use CodeIgniter\Model;
|
||||||
|
|
||||||
|
class ManagerIncentiveFileModel extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'partner_manager_incentive_file';
|
||||||
|
protected $primaryKey = 'id';
|
||||||
|
protected $returnType = 'array';
|
||||||
|
protected $useSoftDeletes = false;
|
||||||
|
|
||||||
|
protected $allowedFields = [
|
||||||
|
'manager_id',
|
||||||
|
'incentive_month',
|
||||||
|
'incentive_file_name',
|
||||||
|
'is_active',
|
||||||
|
'created_by',
|
||||||
|
'created_on',
|
||||||
|
'updated_by',
|
||||||
|
'updated_on',
|
||||||
|
];
|
||||||
|
|
||||||
|
// Auto Timestamps
|
||||||
|
protected $useTimestamps = true;
|
||||||
|
protected $createdField = 'created_on';
|
||||||
|
protected $updatedField = 'updated_on';
|
||||||
|
protected $deletedField = '';
|
||||||
|
|
||||||
|
// Validation Rules (you can add more later if needed)
|
||||||
|
protected $validationRules = [
|
||||||
|
'manager_id' => 'required|integer',
|
||||||
|
'incentive_month' => 'required|valid_date',
|
||||||
|
'incentive_file_name'=> 'required|string|max_length[150]',
|
||||||
|
];
|
||||||
|
protected $validationMessages = [];
|
||||||
|
protected $skipValidation = false;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user