FIX_productivity Dashboard
This commit is contained in:
parent
f837f5e4c6
commit
f471fbd1da
@ -571,8 +571,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// 1. Fetch all data concurrently (or sequentially, as shown)
|
// 1. Fetch all data concurrently (or sequentially, as shown)
|
||||||
$details['StaffWise'] = $this->productivityStaffWise($manager_id);
|
$details['StaffWise'] = $this->staffWiseProductList($manager_id);
|
||||||
$details['ProductWise'] = $this->productivityProductWise($manager_id);
|
// $details['ProductWise'] = $this->productivityProductWise($manager_id);
|
||||||
|
|
||||||
// 2. Check for overall emptiness (optional, but good practice)
|
// 2. Check for overall emptiness (optional, but good practice)
|
||||||
$is_empty = array_reduce($details, function ($carry, $item) {
|
$is_empty = array_reduce($details, function ($carry, $item) {
|
||||||
@ -640,8 +640,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
@ -649,8 +649,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
@ -658,8 +658,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
@ -667,8 +667,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
@ -679,8 +679,8 @@ class DashboardController extends ResourceController
|
|||||||
$builder->join('insurers i', 'i.id = pq.insurer_id', 'left');
|
$builder->join('insurers i', 'i.id = pq.insurer_id', 'left');
|
||||||
|
|
||||||
$builder->where("
|
$builder->where("
|
||||||
pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
pp.issued_date >= 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')
|
AND pp.issued_date < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
", null, false);
|
", null, false);
|
||||||
|
|
||||||
$builder->where('pp.manager_id',$manager_id);
|
$builder->where('pp.manager_id',$manager_id);
|
||||||
@ -711,8 +711,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
@ -720,8 +720,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
@ -729,8 +729,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
@ -738,8 +738,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
@ -750,8 +750,8 @@ class DashboardController extends ResourceController
|
|||||||
$builder->join('partner_brokers pb', 'pb.id = pe.broker_id', 'left');
|
$builder->join('partner_brokers pb', 'pb.id = pe.broker_id', 'left');
|
||||||
|
|
||||||
$builder->where("
|
$builder->where("
|
||||||
pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
pp.issued_date >= 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')
|
AND pp.issued_date < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
", null, false);
|
", null, false);
|
||||||
|
|
||||||
$builder->where('pp.manager_id',$manager_id);
|
$builder->where('pp.manager_id',$manager_id);
|
||||||
@ -776,8 +776,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
@ -785,8 +785,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
@ -794,8 +794,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
@ -803,8 +803,8 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
@ -812,8 +812,8 @@ class DashboardController extends ResourceController
|
|||||||
");
|
");
|
||||||
|
|
||||||
$builder->where("
|
$builder->where("
|
||||||
pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
pp.issued_date >= 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')
|
AND pp.issued_date < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
", null, false);
|
", null, false);
|
||||||
|
|
||||||
$builder->where('pp.manager_id',$manager_id);
|
$builder->where('pp.manager_id',$manager_id);
|
||||||
@ -847,8 +847,8 @@ class DashboardController extends ResourceController
|
|||||||
$builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner');
|
$builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner');
|
||||||
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
|
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
|
||||||
|
|
||||||
$builder->where("MONTH(pp.created_on) = MONTH('$customDate')", null, false);
|
$builder->where("MONTH(pp.issued_date) = MONTH('$customDate')", null, false);
|
||||||
$builder->where("YEAR(pp.created_on) = YEAR('$customDate')", null, false);
|
$builder->where("YEAR(pp.issued_date) = YEAR('$customDate')", null, false);
|
||||||
|
|
||||||
$builder->where('pp.manager_id',$manager_id);
|
$builder->where('pp.manager_id',$manager_id);
|
||||||
|
|
||||||
@ -880,8 +880,8 @@ class DashboardController extends ResourceController
|
|||||||
$builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner');
|
$builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner');
|
||||||
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
|
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
|
||||||
|
|
||||||
$builder->where("MONTH(pp.created_on) = MONTH('$customDate')", null, false);
|
$builder->where("MONTH(pp.issued_date) = MONTH('$customDate')", null, false);
|
||||||
$builder->where("YEAR(pp.created_on) = YEAR('$customDate')", null, false);
|
$builder->where("YEAR(pp.issued_date) = YEAR('$customDate')", null, false);
|
||||||
|
|
||||||
$builder->where('pp.manager_id',$manager_id);
|
$builder->where('pp.manager_id',$manager_id);
|
||||||
|
|
||||||
@ -912,7 +912,7 @@ class DashboardController extends ResourceController
|
|||||||
|
|
||||||
$builder->join(
|
$builder->join(
|
||||||
'partner_policy pp',
|
'partner_policy pp',
|
||||||
"pa.id = pp.agent_id AND pp.created_on >= $interval",
|
"pa.id = pp.agent_id AND pp.issued_date >= $interval",
|
||||||
'left',
|
'left',
|
||||||
false // IMPORTANT → allows raw SQL
|
false // IMPORTANT → allows raw SQL
|
||||||
);
|
);
|
||||||
@ -947,22 +947,22 @@ class DashboardController extends ResourceController
|
|||||||
WHEN pa.is_active = 1 THEN 'Active Agent'
|
WHEN pa.is_active = 1 THEN 'Active Agent'
|
||||||
ELSE 'Inactive Agent'
|
ELSE 'Inactive Agent'
|
||||||
END AS agent_status,
|
END AS agent_status,
|
||||||
DATE_FORMAT(pp.created_on, '%d-%m-%Y') AS created_date_ui_formatted,
|
DATE_FORMAT(pp.issued_date, '%d-%m-%Y') AS created_date_ui_formatted,
|
||||||
pp.created_on AS created_date_sql_formatted
|
pp.issued_date AS created_date_sql_formatted
|
||||||
");
|
");
|
||||||
$builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left');
|
$builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left');
|
||||||
$builder->where('pp.manager_id', $manager_id);
|
$builder->where('pp.manager_id', $manager_id);
|
||||||
$builder->where('pp.premium_amount <', 50000);
|
$builder->where('pp.premium_amount <', 50000);
|
||||||
$builder->where("pp.created_on >= $interval", null, false); // raw SQL
|
$builder->where("pp.issued_date >= $interval", null, false); // raw SQL
|
||||||
$builder->groupBy('pa.id');
|
$builder->groupBy('pa.id');
|
||||||
$builder->orderBy('total_premium_amount', 'DESC');
|
$builder->orderBy('total_premium_amount', 'DESC');
|
||||||
$builder->orderBy('created_date_sql_formatted', 'DESC');
|
$builder->orderBy('created_date_sql_formatted', 'DESC');
|
||||||
return $builder->get()->getResultArray();
|
return $builder->get()->getResultArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Step 5.1
|
// Step 5
|
||||||
public function productivityStaffWise($manager_id){
|
public function staffWiseProductList($manager_id)
|
||||||
|
{
|
||||||
$builder = $this->db->table('partner_policy pp');
|
$builder = $this->db->table('partner_policy pp');
|
||||||
|
|
||||||
$builder->select("
|
$builder->select("
|
||||||
@ -970,131 +970,102 @@ class DashboardController extends ResourceController
|
|||||||
YEAR(CURRENT_DATE()) AS year_of_curr_month,
|
YEAR(CURRENT_DATE()) AS year_of_curr_month,
|
||||||
DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%b') AS pre_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,
|
YEAR(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)) AS year_of_last_month,
|
||||||
|
|
||||||
pa.sales_executive_id,
|
pa.sales_executive_id,
|
||||||
pse.name as sales_executive_name,
|
pse.name as sales_executive_name,
|
||||||
pse.id as PSE_sales_executive_id,
|
pp.manager_id,
|
||||||
pa.id,pp.manager_id,
|
pp.vehicle_type AS vechile_type,
|
||||||
|
|
||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
END
|
END
|
||||||
) AS total_policies_current_month,
|
) AS total_policies_current_month,
|
||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN MONTH(pp.created_on) = MONTH(CURRENT_DATE())
|
WHEN MONTH(pp.issued_date) = MONTH(CURRENT_DATE())
|
||||||
AND YEAR(pp.created_on) = YEAR(CURRENT_DATE())
|
AND YEAR(pp.issued_date) = YEAR(CURRENT_DATE())
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount ELSE 0
|
||||||
ELSE 0
|
|
||||||
END
|
END
|
||||||
) AS total_premium_current_month,
|
) AS total_premium_current_month,
|
||||||
|
|
||||||
COUNT(
|
COUNT(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.client_policy_id
|
THEN pp.client_policy_id
|
||||||
END
|
END
|
||||||
) AS total_policies_pre_month,
|
) AS total_policies_pre_month,
|
||||||
|
|
||||||
SUM(
|
SUM(
|
||||||
CASE
|
CASE
|
||||||
WHEN pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
WHEN pp.issued_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
AND pp.created_on < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
AND pp.issued_date < DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01')
|
||||||
THEN pp.premium_amount
|
THEN pp.premium_amount ELSE 0
|
||||||
ELSE 0
|
|
||||||
END
|
END
|
||||||
) AS total_premium_pre_month
|
) AS total_premium_pre_month
|
||||||
");
|
");
|
||||||
|
|
||||||
$builder->join('partner_quotation pq', 'pq.id = pp.quotation_id', 'left');
|
|
||||||
$builder->join('partner_agent pa', 'pa.id = pp.agent_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->join('partner_sales_executive pse', 'pse.id = pa.sales_executive_id', 'left');
|
||||||
|
|
||||||
|
// Date filters
|
||||||
$builder->where("
|
$builder->where("
|
||||||
pp.created_on >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
pp.issued_date >= 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')
|
AND pp.issued_date < DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
|
||||||
", null, false);
|
", null, false);
|
||||||
|
|
||||||
$builder->where('pp.manager_id',$manager_id);
|
$builder->where('pp.manager_id', $manager_id);
|
||||||
$builder->where('pa.sales_executive_id IS NOT NULL');
|
$builder->where('pa.sales_executive_id IS NOT NULL', null, false);
|
||||||
$builder->where('pse.is_active',1);
|
$builder->where('pse.is_active', 1);
|
||||||
$builder->groupBy('pa.sales_executive_id');
|
|
||||||
$builder->orderBy('pa.sales_executive_id');
|
|
||||||
|
|
||||||
$query = $builder->get();
|
// Group by sales exec + vehicle type
|
||||||
$result = $query->getResultArray();
|
$builder->groupBy("pa.sales_executive_id, pp.vehicle_type");
|
||||||
return $result;
|
$builder->orderBy("pa.sales_executive_id");
|
||||||
|
|
||||||
|
$rows = $builder->get()->getResultArray();
|
||||||
|
|
||||||
|
// Final compilation
|
||||||
|
$final = [];
|
||||||
|
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$se_id = $row['sales_executive_id'];
|
||||||
|
|
||||||
|
if (!isset($final[$se_id])) {
|
||||||
|
$final[$se_id] = [
|
||||||
|
"curr_month" => $row["curr_month"],
|
||||||
|
"year_of_curr_month" => $row["year_of_curr_month"],
|
||||||
|
"pre_month" => $row["pre_month"],
|
||||||
|
"year_of_last_month" => $row["year_of_last_month"],
|
||||||
|
|
||||||
|
"sales_executive_id" => $row["sales_executive_id"],
|
||||||
|
"sales_executive_name" => $row["sales_executive_name"],
|
||||||
|
"manager_id" => $row["manager_id"],
|
||||||
|
|
||||||
|
"products_list" => [],
|
||||||
|
"total_products" => 0
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add each product entry
|
||||||
|
$final[$se_id]["products_list"][] = [
|
||||||
|
"vechile_type" => $row["vechile_type"],
|
||||||
|
"total_policies_current_month" => $row["total_policies_current_month"],
|
||||||
|
"total_premium_current_month" => $row["total_premium_current_month"],
|
||||||
|
"total_policies_pre_month" => $row["total_policies_pre_month"],
|
||||||
|
"total_premium_pre_month" => $row["total_premium_pre_month"]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add total_products count
|
||||||
|
// foreach ($final as $key => $value) {
|
||||||
|
// $final[$key]["total_products"] = count($value["products_list"]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
return array_values($final);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Step 5.2
|
|
||||||
public function productivityProductWise($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,
|
|
||||||
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
|
|
||||||
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->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->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->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();
|
|
||||||
|
|
||||||
$result = $query->getResultArray();
|
|
||||||
return $result;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user