diff --git a/app/Controllers/AgentController.php b/app/Controllers/AgentController.php index e71be0d..4d99710 100644 --- a/app/Controllers/AgentController.php +++ b/app/Controllers/AgentController.php @@ -461,7 +461,7 @@ class AgentController extends ResourceController } elseif ($normalizedHeader === 'rto') { $headerMap['rto_id'] = $colIndex; } elseif ($normalizedHeader === 'segment') { - $headerMap['segment_id'] = $colIndex; + $headerMap['segment'] = $colIndex; } elseif ($normalizedHeader === 'comp') { $headerMap['comp'] = $colIndex; } elseif ($normalizedHeader === 'tp') { @@ -473,7 +473,7 @@ class AgentController extends ResourceController } } - if (!isset($headerMap['insurer_id'], $headerMap['rto_id'], $headerMap['segment_id'], $headerMap['vehicle_type_id'])) { + if (!isset($headerMap['insurer_id'], $headerMap['rto_id'], $headerMap['segment'], $headerMap['vehicle_type_id'])) { throw new \RuntimeException('Invalid grid header. Required: TYPE, INSURER, RTO, SEGMENT'); } @@ -544,7 +544,7 @@ class AgentController extends ResourceController $insurerRaw = trim((string) ($row[$headerMap['insurer_id']] ?? '')); $rtoRaw = trim((string) ($row[$headerMap['rto_id']] ?? '')); - $segmentRaw = trim((string) ($row[$headerMap['segment_id']] ?? '')); + $segmentRaw = trim((string) ($row[$headerMap['segment']] ?? '')); $vehicleTypeRaw = trim((string) ($row[$headerMap['vehicle_type_id']] ?? $segmentRaw)); if ($insurerRaw === '' || $rtoRaw === '' || $segmentRaw === '' || $vehicleTypeRaw === '') { @@ -629,7 +629,7 @@ class AgentController extends ResourceController 'vehicle_type_id' => $vehicleTypeRaw, 'insurer_id' => (string) $insurerId, 'rto_id' => (string) $rtoId, - 'segment_id' => $segmentRaw, + 'segment' => $segmentRaw, 'comp' => $compSanitized, 'tp' => $tpSanitized, 'fuel' => $fuel, @@ -643,7 +643,7 @@ class AgentController extends ResourceController ->where('vehicle_type_id', $vehicleTypeRaw) ->where('insurer_id', (string) $insurerId) ->where('rto_id', (string) $rtoId) - ->where('segment_id', $segmentRaw) + ->where('segment', $segmentRaw) ->where('partner_id', (string) $partnerId) ->first(); @@ -792,7 +792,7 @@ class AgentController extends ResourceController ->get() ->getResultArray(); - $segmentMaster = $db->table('vehicle_type') + $vehicleTypeMaster = $db->table('vehicle_type') ->select('id, vehicle_type') ->where('is_active', 1) ->orderBy('vehicle_type', 'ASC') @@ -832,7 +832,7 @@ class AgentController extends ResourceController 'code' => 200, 'data' => [ 'rto_master' => $rtoMaster, - 'segment_master' => $segmentMaster, + 'vehicle_type_master' => $vehicleTypeMaster, 'plan_master' => $planMaster, 'partner_master' => $partnerMaster, 'months' => $months, @@ -855,15 +855,17 @@ class AgentController extends ResourceController $partnerId = (int) ($this->request->getGet('partner_id') ?? 0); $rtoId = (int) ($this->request->getGet('rto_id') ?? 0); - $segmentId = (int) ($this->request->getGet('segment_id') ?? 0); + $vehicleTypeId = (int) ($this->request->getGet('vehicle_type_id') ?? 0); $planType = trim((string) ($this->request->getGet('insurance_plan_type') ?? '')); $month = trim((string) ($this->request->getGet('month') ?? '')); + $segment = trim((string) ($this->request->getGet('segment') ?? '')); - if ($partnerId <= 0 || $rtoId <= 0 || $segmentId <= 0 || $planType === '') { + + if ($partnerId <= 0 || $rtoId <= 0 || $vehicleTypeId <= 0 || $planType === '' || $segment === '') { return $this->respond([ 'status' => 'failed', 'code' => 200, - 'data' => 'partner_id, rto_id, segment_id and insurance_plan_type are required', + 'data' => 'partner_id, rto_id, vehicle_type_id, segment and insurance_plan_type are required', ], 200); } @@ -903,7 +905,8 @@ class AgentController extends ResourceController ->join('vehicle_type vt', 'vt.id = pgd.vehicle_type_id', 'left') ->where('pgd.partner_id', $partnerId) ->where('pgd.rto_id', $rtoId) - ->where('pgd.segment_id', $segmentId) + ->where('pgd.segment', $segment) + ->where('pgd.vehicle_type_id', $vehicleTypeId) ->where("DATE_FORMAT(pgd.created_at, '%Y-%m') =", $effectiveMonth) ->orderBy('pgd.id', 'DESC') ->get() @@ -970,15 +973,16 @@ class AgentController extends ResourceController $partnerId = (int) ($this->request->getGet('partner_id') ?? 0); $rtoId = (int) ($this->request->getGet('rto_id') ?? 0); - $segmentId = (int) ($this->request->getGet('segment_id') ?? 0); + $segment = (int) ($this->request->getGet('segment') ?? 0); + $vehicleTypeId = (int) ($this->request->getGet('vehicle_type_id') ?? 0); $planType = trim((string) ($this->request->getGet('insurance_plan_type') ?? '')); $month = trim((string) ($this->request->getGet('month') ?? '')); - if ($partnerId <= 0 || $rtoId <= 0 || $segmentId <= 0 || $planType === '') { + if ($partnerId <= 0 || $rtoId <= 0 || $vehicleTypeId <= 0 || $planType === '' || $segment === '') { return $this->respond([ 'status' => 'failed', 'code' => 200, - 'data' => 'partner_id, rto_id, segment_id and insurance_plan_type are required', + 'data' => 'partner_id, rto_id, vehicle_type_id, segment and insurance_plan_type are required', ], 200); } @@ -999,16 +1003,18 @@ class AgentController extends ResourceController COALESCE(pa.retention_rate, 0) AS retention_rate, rm.rto_code, rm.rto_name, - vt.vehicle_type AS segment_name, + vt.vehicle_type AS vehicle_type_name, + pdg.segment, pgd.comp, pgd.tp ") ->join('partner_agent pa', 'pa.id = pgd.partner_id', 'left') ->join('rto_master rm', 'rm.id = pgd.rto_id', 'left') - ->join('vehicle_type vt', 'vt.id = pgd.segment_id', 'left') + ->join('vehicle_type vt', 'vt.id = pgd.vehicle_type_id', 'left') ->where('pgd.partner_id', $partnerId) ->where('pgd.rto_id', $rtoId) - ->where('pgd.segment_id', $segmentId) + ->where('pgd.segment', $segment) + ->where('pgd.vehicle_type_id', $vehicleTypeId) ->where("DATE_FORMAT(pgd.created_at, '%Y-%m') =", $effectiveMonth) ->orderBy('pgd.id', 'DESC') ->get() @@ -1063,6 +1069,7 @@ class AgentController extends ResourceController 'Partner', 'Partner Code', 'RTO', + 'Type', 'Segment', 'Insurance Plan', 'Grid %', @@ -1076,7 +1083,8 @@ class AgentController extends ResourceController $row['partner_name'] ?? '', $row['agent_code'] ?? '', trim((string) (($row['rto_code'] ?? '') . ' - ' . ($row['rto_name'] ?? '')), ' -'), - $row['segment_name'] ?? '', + $row['vehicle_type_name'] ?? '', + $row['segment'] ?? '', $row['insurance_plan_type'] ?? $planType, $row['grid_rate_percentage'] ?? 0, $row['retention_rate_percentage'] ?? 0, diff --git a/app/Models/PartnerGridDetailsModel.php b/app/Models/PartnerGridDetailsModel.php index 873f2fb..9f6086b 100644 --- a/app/Models/PartnerGridDetailsModel.php +++ b/app/Models/PartnerGridDetailsModel.php @@ -22,7 +22,7 @@ class PartnerGridDetailsModel extends Model 'vehicle_type_id', 'insurer_id', 'rto_id', - 'segment_id', + 'segment', 'comp', 'tp', 'fuel', @@ -48,7 +48,7 @@ class PartnerGridDetailsModel extends Model 'vehicle_type_id' => 'permit_empty|max_length[50]', 'insurer_id' => 'required|max_length[50]', 'rto_id' => 'required|max_length[50]', - 'segment_id' => 'required|max_length[100]', + 'segment' => 'required|max_length[100]', 'comp' => 'permit_empty|max_length[50]', 'tp' => 'permit_empty|max_length[50]', 'remarks' => 'permit_empty|max_length[255]', @@ -69,7 +69,11 @@ class PartnerGridDetailsModel extends Model 'required' => 'RTO is required.', 'max_length' => 'RTO code must not exceed 50 characters.', ], - 'segment_id' => [ + 'vehicle_type_id' => [ + 'required' => 'Type is required.', + 'max_length' => 'Type must not exceed 50 characters.', + ], + 'segment' => [ 'required' => 'Segment is required.', 'max_length' => 'Segment must not exceed 100 characters.', ], @@ -110,11 +114,19 @@ class PartnerGridDetailsModel extends Model } /** - * Get records by Segment ID + * Get records by Segment */ - public function getBySegment(string $segmentId) + public function getBySegment(string $segment) { - return $this->where('segment_id', $segmentId)->findAll(); + return $this->where('segment', $segment)->findAll(); + } + + /** + * Get records by Vehicle Type ID + */ + public function getByType(string $vehicleTypeId) + { + return $this->where('vehicle_type_id', $vehicleTypeId)->findAll(); } /** @@ -148,8 +160,11 @@ class PartnerGridDetailsModel extends Model if (!empty($filters['rto_id'])) { $builder->where('rto_id', $filters['rto_id']); } - if (!empty($filters['segment_id'])) { - $builder->where('segment_id', $filters['segment_id']); + if (!empty($filters['vehicle_type_id'])) { + $builder->where('vehicle_type_id', $filters['vehicle_type_id']); + } + if (!empty($filters['segment'])) { + $builder->where('segment', $filters['segment']); } if (!empty($filters['partner_id'])) { $builder->where('partner_id', $filters['partner_id']);