Merge branch 'main' of bitbucket.org:jubilian/nhance_partner_be

This commit is contained in:
sanjeev.p 2025-12-06 12:37:57 +05:30
commit a3c277b6c0

View File

@ -427,6 +427,9 @@ class DashboardController extends ResourceController
//business dashboard = month-wise insurer,broker and product (PolicyCount , Premium) //business dashboard = month-wise insurer,broker and product (PolicyCount , Premium)
public function businessDashboard() public function businessDashboard()
{ {
$manager_id = $this->request->getGet('manager_id');
// Initialize the details array to ensure the final output is always structured. // Initialize the details array to ensure the final output is always structured.
$details = [ 'brokerWise' => [], 'productWise' => [], 'insurerWise' => []]; $details = [ 'brokerWise' => [], 'productWise' => [], 'insurerWise' => []];
$code = 200; $code = 200;
@ -434,9 +437,9 @@ 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['brokerWise'] = $this->brokerWise(); $details['brokerWise'] = $this->brokerWise($manager_id);
$details['productWise'] = $this->productWise(); $details['productWise'] = $this->productWise($manager_id);
$details['insurerWise'] = $this->insurerWise(); $details['insurerWise'] = $this->insurerWise($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) {
@ -488,6 +491,8 @@ class DashboardController extends ResourceController
//partner dashboard = month-wise PolicyCount , month-wise Premium, No Agent For Last 10 Days and below 50thouands Premium agentwise //partner dashboard = month-wise PolicyCount , month-wise Premium, No Agent For Last 10 Days and below 50thouands Premium agentwise
public function partnerDashboard() public function partnerDashboard()
{ {
$manager_id = $this->request->getGet('manager_id');
// Initialize the details array to ensure the final output is always structured. // Initialize the details array to ensure the final output is always structured.
$code = 200; $code = 200;
$message = "Partner Dashboard Data Retrieved Successfully"; $message = "Partner Dashboard Data Retrieved Successfully";
@ -502,10 +507,10 @@ class DashboardController extends ResourceController
$value = $value ?? 10; $value = $value ?? 10;
$unit = $unit ?? 'DAY'; $unit = $unit ?? 'DAY';
$details['monthlyPolicyCount'] = $this->agentMonthlyPolicyCount($date,$limit); $details['monthlyPolicyCount'] = $this->agentMonthlyPolicyCount($date,$limit,$manager_id);
$details['monthlyPremiumAmount'] = $this->agentMonthlyPremiumAmount($date,$limit); $details['monthlyPremiumAmount'] = $this->agentMonthlyPremiumAmount($date,$limit,$manager_id);
$details['noPolicyTimeRange'] = $this->agentNoPolicyTimeRange($value,$unit); $details['noPolicyTimeRange'] = $this->agentNoPolicyTimeRange($value,$unit,$manager_id);
$details['below50tPremiumTimeRange'] = $this->agentBelow50tPremiumTimeRange($value,$unit); $details['below50tPremiumTimeRange'] = $this->agentBelow50tPremiumTimeRange($value,$unit,$manager_id);
// 2. Check for overall emptiness (optional, but good practice) // 2. Check for overall emptiness (optional, but good practice)
@ -555,7 +560,7 @@ class DashboardController extends ResourceController
} }
//Step 1.1 //Step 1.1
public function insurerWise(){ public function insurerWise($manager_id){
$builder = $this->db->table('partner_policy pp'); $builder = $this->db->table('partner_policy pp');
@ -616,6 +621,8 @@ class DashboardController extends ResourceController
AND pp.created_on < DATE_FORMAT(DATE_ADD(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); ", null, false);
$builder->where('pp.manager_id',$manager_id);
$builder->where("pq.insurer_id != 0"); $builder->where("pq.insurer_id != 0");
$builder->groupBy('pq.insurer_id'); $builder->groupBy('pq.insurer_id');
$builder->orderBy('pq.insurer_id'); $builder->orderBy('pq.insurer_id');
@ -627,7 +634,7 @@ class DashboardController extends ResourceController
} }
//Step 1.2 //Step 1.2
public function brokerWise(){ public function brokerWise($manager_id){
$builder = $this->db->table('partner_policy pp'); $builder = $this->db->table('partner_policy pp');
$builder->select(" $builder->select("
@ -684,6 +691,8 @@ class DashboardController extends ResourceController
AND pp.created_on < DATE_FORMAT(DATE_ADD(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); ", null, false);
$builder->where('pp.manager_id',$manager_id);
$builder->groupBy('pb.id'); $builder->groupBy('pb.id');
$builder->orderBy('pb.id'); $builder->orderBy('pb.id');
@ -693,7 +702,7 @@ class DashboardController extends ResourceController
} }
//Step 1.3 //Step 1.3
public function productWise(){ public function productWise($manager_id){
$builder = $this->db->table('partner_policy pp'); $builder = $this->db->table('partner_policy pp');
$builder->select(" $builder->select("
DATE_FORMAT(CURRENT_DATE(), '%b') AS curr_month, DATE_FORMAT(CURRENT_DATE(), '%b') AS curr_month,
@ -744,6 +753,8 @@ class DashboardController extends ResourceController
AND pp.created_on < DATE_FORMAT(DATE_ADD(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); ", null, false);
$builder->where('pp.manager_id',$manager_id);
$builder->groupBy('pp.vehicle_type'); $builder->groupBy('pp.vehicle_type');
$query = $builder->get(); $query = $builder->get();
@ -754,7 +765,7 @@ class DashboardController extends ResourceController
} }
//Step 2.1 //Step 2.1
public function agentMonthlyPolicyCount($customDate,$limit){ public function agentMonthlyPolicyCount($customDate,$limit,$manager_id){
// 2.1 // 2.1
// $customDate = $custom_date; // '2025-11-05' or CURRENT_DATE() // $customDate = $custom_date; // '2025-11-05' or CURRENT_DATE()
@ -776,6 +787,8 @@ class DashboardController extends ResourceController
$builder->where("MONTH(pp.created_on) = MONTH('$customDate')", null, false); $builder->where("MONTH(pp.created_on) = MONTH('$customDate')", null, false);
$builder->where("YEAR(pp.created_on) = YEAR('$customDate')", null, false); $builder->where("YEAR(pp.created_on) = YEAR('$customDate')", null, false);
$builder->where('pp.manager_id',$manager_id);
$builder->groupBy(['pa.id']); $builder->groupBy(['pa.id']);
$builder->orderBy('policy_count', 'DESC'); $builder->orderBy('policy_count', 'DESC');
$builder->limit($limit); $builder->limit($limit);
@ -786,7 +799,7 @@ class DashboardController extends ResourceController
} }
//Step 2.2 //Step 2.2
public function agentMonthlyPremiumAmount($customDate,$limit){ public function agentMonthlyPremiumAmount($customDate,$limit,$manager_id){
// 2.2 // 2.2
// $customDate = $custom_date; // Example '2025-11-05' // $customDate = $custom_date; // Example '2025-11-05'
@ -807,6 +820,8 @@ class DashboardController extends ResourceController
$builder->where("MONTH(pp.created_on) = MONTH('$customDate')", null, false); $builder->where("MONTH(pp.created_on) = MONTH('$customDate')", null, false);
$builder->where("YEAR(pp.created_on) = YEAR('$customDate')", null, false); $builder->where("YEAR(pp.created_on) = YEAR('$customDate')", null, false);
$builder->where('pp.manager_id',$manager_id);
// $builder->groupBy(['pa.id']); // $builder->groupBy(['pa.id']);
$builder->orderBy('total_premium_amount', 'DESC'); $builder->orderBy('total_premium_amount', 'DESC');
$builder->limit($limit); $builder->limit($limit);
@ -816,7 +831,7 @@ class DashboardController extends ResourceController
} }
//Step 3 //Step 3
public function agentNoPolicyTimeRange($value,$unit){ public function agentNoPolicyTimeRange($value,$unit,$manager_id){
// $value = 10; // dynamic number (10, 50, 1, 2, 3, etc.) // $value = 10; // dynamic number (10, 50, 1, 2, 3, etc.)
// $unit = 'DAY'; // DAY, MONTH, YEAR (dynamic) // $unit = 'DAY'; // DAY, MONTH, YEAR (dynamic)
@ -839,6 +854,8 @@ class DashboardController extends ResourceController
false // IMPORTANT → allows raw SQL false // IMPORTANT → allows raw SQL
); );
$builder->where('pa.manager_id',$manager_id);
$builder->where('pp.id', null); $builder->where('pp.id', null);
$builder->orderBy('pa.name'); $builder->orderBy('pa.name');
$result = $builder->get()->getResultArray(); $result = $builder->get()->getResultArray();
@ -847,7 +864,7 @@ class DashboardController extends ResourceController
} }
//Step 4 //Step 4
public function agentBelow50tPremiumTimeRange($value,$unit){ public function agentBelow50tPremiumTimeRange($value,$unit,$manager_id){
// 4th // 4th
// $value = 10; // Dynamic (10, 50, 1, 2, 3...) // $value = 10; // Dynamic (10, 50, 1, 2, 3...)
@ -876,6 +893,9 @@ class DashboardController extends ResourceController
'pa.id = pp.agent_id', 'pa.id = pp.agent_id',
'left' 'left'
); );
$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); // false = prevent escaping raw SQL $builder->where("pp.created_on >= $interval", null, false); // false = prevent escaping raw SQL
$builder->orderBy('pp.created_on', 'DESC'); $builder->orderBy('pp.created_on', 'DESC');