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/updateStaff', 'StaffController::updateStaff');
|
||||
$routes->post('staff/changeStaffStatus', 'StaffController::changeStaffStatus');
|
||||
$routes->get('staff/managerIncentiveFileList', 'StaffController::managerIncentiveFileList');
|
||||
$routes->get('staff/downloadManagerIncentiveFile', 'StaffController::downloadManagerIncentiveFile');
|
||||
|
||||
|
||||
//Enquiry
|
||||
|
||||
@ -61,24 +61,28 @@ class DashboardController extends ResourceController
|
||||
|
||||
// --- Performance Agents (top 5, last 30 days) ---
|
||||
$performanceAgents = $this->db->table('partner_policy pp')
|
||||
->select('pa.id AS agent_id, pa.name AS agent_name, COUNT(pp.id) AS policies_issued, COALESCE(SUM(pp.premium_amount),0) AS premium_value')
|
||||
->join('partner_agent pa', 'pa.id = pp.agent_id', 'inner')
|
||||
->where('pp.created_on >=', $last30)
|
||||
->groupBy('pa.id')
|
||||
->orderBy('policies_issued', 'DESC')
|
||||
->limit(5)
|
||||
->get()
|
||||
->getResultArray();
|
||||
->select('pa.id AS agent_id, pa.name AS agent_name, COUNT(pp.id) AS policies_issued, COALESCE(SUM(pp.premium_amount),0) AS premium_value')
|
||||
->join('partner_agent pa', 'pa.id = pp.agent_id', 'inner')
|
||||
->where('pp.created_on >=', $last30)
|
||||
->groupBy('pa.id')
|
||||
->orderBy('policies_issued', 'DESC')
|
||||
->limit(5)
|
||||
->get()
|
||||
->getResultArray();
|
||||
|
||||
|
||||
// --- Non-Performing Agents (bottom 5, last 30 days) ---
|
||||
$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')
|
||||
->join('partner_policy pp', 'pp.agent_id = pa.id AND ', 'left')
|
||||
->groupBy('pa.id')
|
||||
->orderBy('policies_issued', 'ASC')
|
||||
->limit(5)
|
||||
->get()
|
||||
->getResultArray();
|
||||
->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', 'left')
|
||||
->where('pp.created_on >=', $last30)
|
||||
->groupBy('pa.id')
|
||||
->orderBy('policies_issued', 'ASC')
|
||||
->limit(5)
|
||||
->get()
|
||||
->getResultArray();
|
||||
|
||||
dd($nonPerformingAgents);
|
||||
|
||||
// --- Quotations Pending ---
|
||||
$quotationsPending = $this->db->table('partner_quotation pq')
|
||||
@ -89,6 +93,8 @@ class DashboardController extends ResourceController
|
||||
->groupBy('ps.id')
|
||||
->limit(10)
|
||||
->get()->getResultArray();
|
||||
|
||||
dd($quotationsPending);
|
||||
|
||||
// --- Policies Pending ---
|
||||
$policiesPending = $this->db->table('partner_enquiry pe')
|
||||
|
||||
@ -25,6 +25,119 @@ class EndorsementController extends ResourceController
|
||||
$this->EnquiryModel = new EnquiryModel();
|
||||
}
|
||||
|
||||
|
||||
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 App\Controllers\BaseController;
|
||||
use App\Models\StaffModel;
|
||||
use App\Models\ManagerIncentiveFileModel;
|
||||
|
||||
class StaffController extends ResourceController
|
||||
{
|
||||
protected $StaffModel;
|
||||
protected $ManagerIncentiveFileModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->StaffModel = new StaffModel();
|
||||
$this->ManagerIncentiveFileModel = new ManagerIncentiveFileModel();
|
||||
}
|
||||
|
||||
// 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
|
||||
{
|
||||
protected $table = 'endorsement';
|
||||
protected $table = 'partner_endorsement_request';
|
||||
protected $primaryKey = 'id';
|
||||
protected $returnType = 'array';
|
||||
protected $useSoftDeletes = false;
|
||||
@ -15,10 +15,14 @@ class EndorsementModel extends Model
|
||||
'client_id',
|
||||
'client_policy_id',
|
||||
'insurer_id',
|
||||
'tpa_id',
|
||||
'file_id',
|
||||
'insurer_branch_id',
|
||||
'manager_id',
|
||||
'agent_id',
|
||||
'policy_number',
|
||||
'endorsement_no',
|
||||
'endorsement_type',
|
||||
'endorsement_description',
|
||||
'status',
|
||||
'created_at',
|
||||
'updated_by',
|
||||
'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