From f837f5e4c6f210839b2b8696aba26e289d1fcea8 Mon Sep 17 00:00:00 2001 From: "sanjeev.p" Date: Tue, 9 Dec 2025 17:05:45 +0530 Subject: [PATCH] FIX_dashboard/productivityDashboard --- app/Config/Routes.php | 8 +- app/Controllers/DashboardController.php | 208 ++++++++---------------- 2 files changed, 74 insertions(+), 142 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b25b841..7ab5ce5 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -132,7 +132,7 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) { $routes->get("dashboard/businessDashboard", "DashboardController::businessDashboard"); $routes->get("dashboard/partnerDashboard", "DashboardController::partnerDashboard"); - $routes->get("dashboard/newDashboard", "DashboardController::newDashboard"); + $routes->get("dashboard/productivityDashboard", "DashboardController::productivityDashboard"); //invoice $routes->get('invoice/list', 'InvoiceController::invoiceList'); @@ -152,9 +152,9 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) { }); - $routes->get("dashboard/businessDashboard", "DashboardController::businessDashboard"); - $routes->get("dashboard/partnerDashboard", "DashboardController::partnerDashboard"); - $routes->get("dashboard/productivityDashboard", "DashboardController::productivityDashboard"); + // $routes->get("dashboard/businessDashboard", "DashboardController::businessDashboard"); + // $routes->get("dashboard/partnerDashboard", "DashboardController::partnerDashboard"); + // $routes->get("dashboard/productivityDashboard", "DashboardController::productivityDashboard"); // $routes->get('agent/agentList', 'AgentController::agentList'); // $routes->get('salesExecutive/executiveList', 'SalesExecutive::salesExecutiveList'); // $routes->get('salesExecutive/findExecutive', 'SalesExecutive::findSalesExecutive'); diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index 5b11e34..bc3fbda 100644 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -562,18 +562,17 @@ class DashboardController extends ResourceController public function productivityDashboard(){ - $manager_id = $this->request->getGet('sales_executive_id'); + $manager_id = $this->request->getGet('manager_id'); // Initialize the details array to ensure the final output is always structured. - $details = [ 'brokerWise' => [], 'productWise' => [], 'insurerWise' => []]; + $details = [ 'StaffWise' => [], 'ProductWise' => []]; $code = 200; - $message = "new Dashboard Data Retrieved Successfully"; + $message = "Productivity Dashboard Data Retrieved Successfully"; try { // 1. Fetch all data concurrently (or sequentially, as shown) - $details['brokerWise'] = $this->brokerWise1($sales_executive_id); - $details['productWise'] = $this->productWise1($sales_executive_id); - $details['insurerWise'] = $this->insurerWise1($sales_executive_id); + $details['StaffWise'] = $this->productivityStaffWise($manager_id); + $details['ProductWise'] = $this->productivityProductWise($manager_id); // 2. Check for overall emptiness (optional, but good practice) $is_empty = array_reduce($details, function ($carry, $item) { @@ -962,72 +961,69 @@ class DashboardController extends ResourceController } //Step 5.1 - public function insurerWise1($sales_executive_id){ + public function productivityStaffWise($manager_id){ $builder = $this->db->table('partner_policy pp'); $builder->select(" - DATE_FORMAT(CURRENT_DATE(), '%b') AS curr_month, - YEAR(CURRENT_DATE()) AS year_of_curr_month, - DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%b') AS pre_month, - YEAR(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)) AS year_of_last_month, - i.name, - i.short_name, - i.id AS insurer_id, - pq.insurer_id AS PQ_insurer_id, - pq.insurer_id, - pp.insured_name, - - COUNT( - CASE - WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) - AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) - THEN pp.client_policy_id - ELSE NULL - END - ) AS total_policies_current_month, - - SUM( - CASE - WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) - AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) - THEN pp.premium_amount - ELSE 0 - END - ) AS total_premium_current_month, - - COUNT( - CASE - WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') - AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') - THEN pp.client_policy_id - ELSE NULL - END - ) AS total_policies_pre_month, - - SUM( - CASE - WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') - AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') - THEN pp.premium_amount - ELSE 0 - END - ) AS total_premium_pre_month - "); + DATE_FORMAT(CURRENT_DATE(), '%b') AS curr_month, + YEAR(CURRENT_DATE()) AS year_of_curr_month, + DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%b') AS pre_month, + YEAR(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)) AS year_of_last_month, + pa.sales_executive_id, + pse.name as sales_executive_name, + pse.id as PSE_sales_executive_id, + pa.id,pp.manager_id, + + + COUNT( + CASE + WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) + AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) + THEN pp.client_policy_id + END + ) AS total_policies_current_month, + + SUM( + CASE + WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) + AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) + THEN pp.premium_amount + ELSE 0 + END + ) AS total_premium_current_month, + + COUNT( + CASE + WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') + AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') + THEN pp.client_policy_id + END + ) AS total_policies_pre_month, + + SUM( + CASE + WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') + AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') + THEN pp.premium_amount + ELSE 0 + END + ) AS total_premium_pre_month + "); $builder->join('partner_quotation pq', 'pq.id = pp.quotation_id', 'left'); - $builder->join('insurers i', 'i.id = pq.insurer_id', 'left'); - + $builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left'); + $builder->join('partner_sales_executive pse', 'pse.id = pa.sales_executive_id', 'left'); $builder->where(" pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') AND pp.created_on < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') ", null, false); $builder->where('pp.manager_id',$manager_id); - $builder->where("pp.is_active",1); - $builder->where("pq.insurer_id != 0"); - $builder->groupBy('pq.insurer_id'); - $builder->orderBy('pq.insurer_id'); + $builder->where('pa.sales_executive_id IS NOT NULL'); + $builder->where('pse.is_active',1); + $builder->groupBy('pa.sales_executive_id'); + $builder->orderBy('pa.sales_executive_id'); $query = $builder->get(); $result = $query->getResultArray(); @@ -1035,76 +1031,9 @@ class DashboardController extends ResourceController } + //Step 5.2 - public function brokerWise2($sales_executive_id){ - - $builder = $this->db->table('partner_policy pp'); - $builder->select(" - DATE_FORMAT(CURRENT_DATE(), '%b') AS curr_month, - YEAR(CURRENT_DATE()) AS year_of_curr_month, - DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%b') AS pre_month, - YEAR(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)) AS year_of_last_month, - pb.name AS broker_name, - pb.id AS broker_id, - pe.broker_id AS PE_broker_id, - - COUNT( - CASE - WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) - AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) - THEN pp.client_policy_id - ELSE NULL - END - ) AS total_policies_current_month, - - SUM( - CASE - WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) - AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) - THEN pp.premium_amount - ELSE 0 - END - ) AS total_premium_current_month, - - COUNT( - CASE - WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') - AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') - THEN pp.client_policy_id - ELSE NULL - END - ) AS total_policies_pre_month, - - SUM( - CASE - WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') - AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') - THEN pp.premium_amount - ELSE 0 - END - ) AS total_premium_pre_month - "); - - $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left'); - $builder->join('partner_brokers pb', 'pb.id = pe.broker_id', 'left'); - - $builder->where(" - pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') - AND pp.created_on < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') - ", null, false); - - $builder->where('pp.manager_id',$manager_id); - - $builder->groupBy('pb.id'); - $builder->orderBy('pb.id'); - - $query = $builder->get(); - $result = $query->getResultArray(); - return $result; - } - - //Step 5.3 - public function productWise3($sales_executive_id){ + public function productivityProductWise($manager_id){ $builder = $this->db->table('partner_policy pp'); $builder->select(" DATE_FORMAT(CURRENT_DATE(), '%b') AS curr_month, @@ -1112,16 +1041,17 @@ class DashboardController extends ResourceController DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%b') AS pre_month, YEAR(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)) AS year_of_last_month, pp.vehicle_type, - + pse.name as sales_executive_name, + pse.id as PSE_sales_executive_id, + pa.id, COUNT( CASE WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) AND YEAR(pp.created_on) = YEAR(CURRENT_DATE()) THEN pp.client_policy_id - ELSE NULL END ) AS total_policies_current_month, - + SUM( CASE WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE()) @@ -1130,16 +1060,15 @@ class DashboardController extends ResourceController ELSE 0 END ) AS total_premium_current_month, - + COUNT( CASE WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01') THEN pp.client_policy_id - ELSE NULL END ) AS total_policies_pre_month, - + SUM( CASE WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') @@ -1154,10 +1083,13 @@ class DashboardController extends ResourceController pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') AND pp.created_on < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01') ", null, false); - + $builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left'); + $builder->join('partner_sales_executive pse', 'pse.id = pa.sales_executive_id', 'left'); $builder->where('pp.manager_id',$manager_id); - - $builder->groupBy('pp.vehicle_type'); + $builder->where('pa.sales_executive_id IS NOT NULL'); + $builder->where('pse.is_active',1); + $builder->groupBy('pa.sales_executive_id,pp.vehicle_type'); + $builder->orderBy('pa.sales_executive_id'); $query = $builder->get();