FIX_Dashboard
This commit is contained in:
parent
7454046a98
commit
4fd9f32de2
@ -559,6 +559,69 @@ class DashboardController extends ResourceController
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function newDashboard(){
|
||||
|
||||
$manager_id = $this->request->getGet('sales_executive_id');
|
||||
|
||||
// Initialize the details array to ensure the final output is always structured.
|
||||
$details = [ 'brokerWise' => [], 'productWise' => [], 'insurerWise' => []];
|
||||
$code = 200;
|
||||
$message = "new 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);
|
||||
|
||||
// 2. Check for overall emptiness (optional, but good practice)
|
||||
$is_empty = array_reduce($details, function ($carry, $item) {
|
||||
return $carry && empty($item);
|
||||
}, true);
|
||||
|
||||
if ($is_empty) {
|
||||
// Throw a 404 if ALL data sections are empty
|
||||
throw new \RuntimeException('No Data Found', 404);
|
||||
}
|
||||
|
||||
// 3. Return a successful, combined JSON response
|
||||
return $this->response->setJSON([
|
||||
'status' => 'success',
|
||||
'data' => $details, // Contains the nested arrays: brokerWise, productWise, insurerWise
|
||||
'code' => 200,
|
||||
'message' => $message,
|
||||
'ref' => 'NIL'
|
||||
])->setStatusCode(200);
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
// --- Centralized Error Handling Logic ---
|
||||
$code = ($e->getCode() && $e->getCode() >= 100 && $e->getCode() < 600)
|
||||
? $e->getCode() : 500;
|
||||
|
||||
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||
|| $e instanceof \mysqli_sql_exception
|
||||
|| $e instanceof \PDOException;
|
||||
|
||||
if ($isDbError) {
|
||||
// Log the full error, but return minimal info for security
|
||||
$ref = $e->getFile() . " / LN : " . $e->getLine();
|
||||
} else {
|
||||
// This catches the \RuntimeException for "No Data found" (code 404)
|
||||
$ref = "Application exception occurred";
|
||||
}
|
||||
|
||||
// Return an error JSON response
|
||||
return $this->response->setJSON([
|
||||
'status' => 'error',
|
||||
'data' => [], // Return empty data on error
|
||||
'code' => $e->getCode(),
|
||||
'message' => $e->getMessage(),
|
||||
'ref' => $ref,
|
||||
])->setStatusCode($code);
|
||||
}
|
||||
}
|
||||
|
||||
//Step 1.1
|
||||
public function insurerWise($manager_id){
|
||||
|
||||
@ -614,7 +677,7 @@ class DashboardController extends ResourceController
|
||||
");
|
||||
|
||||
$builder->join('partner_quotation pq', 'pq.id = pp.quotation_id', 'left');
|
||||
$builder->join('insurers i', 'i.id = pq.insurer_id and i.is_active = 1', 'left');
|
||||
$builder->join('insurers i', 'i.id = pq.insurer_id', 'left');
|
||||
|
||||
$builder->where("
|
||||
pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||
@ -622,6 +685,7 @@ class DashboardController extends ResourceController
|
||||
", null, false);
|
||||
|
||||
$builder->where('pp.manager_id',$manager_id);
|
||||
$builder->where('i.is_active',1);
|
||||
|
||||
$builder->where("pq.insurer_id != 0");
|
||||
$builder->groupBy('pq.insurer_id');
|
||||
@ -896,4 +960,209 @@ class DashboardController extends ResourceController
|
||||
$builder->orderBy('created_date_sql_formatted', 'DESC');
|
||||
return $builder->get()->getResultArray();
|
||||
}
|
||||
|
||||
//Step 5.1
|
||||
public function insurerWise1($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,
|
||||
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
|
||||
");
|
||||
|
||||
$builder->join('partner_quotation pq', 'pq.id = pp.quotation_id', 'left');
|
||||
$builder->join('insurers i', 'i.id = pq.insurer_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('i.is_active',1);
|
||||
$builder->where("pq.insurer_id != 0");
|
||||
$builder->groupBy('pq.insurer_id');
|
||||
$builder->orderBy('pq.insurer_id');
|
||||
|
||||
$query = $builder->get();
|
||||
$result = $query->getResultArray();
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
//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){
|
||||
$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,
|
||||
pp.vehicle_type,
|
||||
|
||||
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->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('pp.vehicle_type');
|
||||
|
||||
$query = $builder->get();
|
||||
|
||||
$result = $query->getResultArray();
|
||||
return $result;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user