FIX_DateRange

This commit is contained in:
sanjeev.p 2026-01-09 10:54:11 +05:30
parent 7381d19e3d
commit bf7b83d523

View File

@ -494,7 +494,9 @@ class ExcelExportController extends ResourceController
{
try{
$managerId = $this->request->getGet('manager_id');
$from_date = $this->request->getGet('from_date');
$to_date = $this->request->getGet('to_date');
if (empty($managerId)) {
$msg = "Missing: ";
$msg .= empty($managerId) ? "manager_id " : "";
@ -502,8 +504,32 @@ class ExcelExportController extends ResourceController
// $ref = ['debug_msg' => 'Missing required parameters: manager_id, broker_id, and month must be provided.'];
return $this->response->setJSON(['status' => 'error','code' => 400,'data' => [],'message' => 'Missing required parameters','ref' => $ref])->setStatusCode(200);
}
if (empty($from_date) || empty($to_date)) {
$data = $this->getDataLowPremiumAgent($managerId);
// Default: last 10 days
$fromObj = new \DateTime('-10 days');
$toObj = new \DateTime();
} else {
// Convert d-m-Y → DateTime
$fromObj = \DateTime::createFromFormat('d-m-Y', $from_date);
$toObj = \DateTime::createFromFormat('d-m-Y', $to_date);
if (!$fromObj || !$toObj) {
return $this->response->setJSON([
'status' => 'error',
'message' => 'Invalid date format (expected d-m-Y)',
]);
}
}
// For DB query
$fromDate = $fromObj->format('Y-m-d 00:00:00');
$toDate = $toObj->format('Y-m-d 23:59:59');
$data = $this->getDataLowPremiumAgent($managerId,$fromDate,$toDate);
if (empty($data)) {
throw new \RuntimeException('No low premium agents found...', 404);
}
@ -606,6 +632,8 @@ class ExcelExportController extends ResourceController
try{
$managerId = $this->request->getGet('manager_id');
$agentId = $this->request->getGet('agent_id');
$from_date = $this->request->getGet('from_date');
$to_date = $this->request->getGet('to_date');
// $month = $this->request->getGet('month');
if (empty($managerId) || empty($agentId)) {
@ -618,8 +646,33 @@ class ExcelExportController extends ResourceController
return $this->response->setJSON(['status' => 'error','code' => 400,'data' => [],'message' => 'Missing required parameters','ref' => $ref])->setStatusCode(200);
}
if (empty($from_date) || empty($to_date)) {
// Default: last 10 days
$fromObj = new \DateTime('-10 days');
$toObj = new \DateTime();
} else {
// Convert d-m-Y → DateTime
$fromObj = \DateTime::createFromFormat('d-m-Y', $from_date);
$toObj = \DateTime::createFromFormat('d-m-Y', $to_date);
if (!$fromObj || !$toObj) {
return $this->response->setJSON([
'status' => 'error',
'message' => 'Invalid date format (expected d-m-Y)',
]);
}
}
// For DB query
$fromDate = $fromObj->format('Y-m-d 00:00:00');
$toDate = $toObj->format('Y-m-d 23:59:59');
// Renamed helper function for consistency: getAgentMonthlyPoliciesData
$data = $this->getDataPerformingAgentsByID($managerId, $agentId); // , $month);
$data = $this->getDataPerformingAgentsByID($managerId, $agentId,$fromDate,$toDate); // , $month);
if (empty($data)) {
throw new \RuntimeException('No policies found for this agent for the specified month.', 404);
@ -731,6 +784,8 @@ class ExcelExportController extends ResourceController
try{
$managerId = $this->request->getGet('manager_id');
$from_date = $this->request->getGet('from_date');
$to_date = $this->request->getGet('to_date');
if (empty($managerId)) {
$msg = "Missing: manager_id";
@ -738,8 +793,40 @@ class ExcelExportController extends ResourceController
return $this->response->setJSON(['status' => 'error', 'code' => 400, 'data' => [], 'message' => 'Missing required parameters', 'ref' => $ref])->setStatusCode(200);
}
if (empty($from_date) || empty($to_date)) {
// Default: last 10 days
$fromObj = new \DateTime('-10 days');
$toObj = new \DateTime();
} else {
// Convert d-m-Y → DateTime
$fromObj = \DateTime::createFromFormat('d-m-Y', $from_date);
$toObj = \DateTime::createFromFormat('d-m-Y', $to_date);
if (!$fromObj || !$toObj) {
return $this->response->setJSON([
'status' => 'error',
'message' => 'Invalid date format (expected d-m-Y)',
]);
}
}
// For DB query
$fromDate = $fromObj->format('Y-m-d 00:00:00');
$toDate = $toObj->format('Y-m-d 23:59:59');
// For filename
$startDateFile = $fromObj->format('d_m_Y');
$endDateFile = $toObj->format('d_m_Y');
// For title
$startDateTitle = $fromObj->format('d-m-Y');
$endDateTitle = $toObj->format('d-m-Y');
// Renamed helper function for consistency: getAgentMonthlyPoliciesData
$data = $this->getDataPerformingAgentsTop50($managerId);
$data = $this->getDataPerformingAgentsTop50($managerId,$fromDate,$toDate);
$header = ['S.No', 'Partner Code', 'Partner Name', 'Policy Count', 'Premium Amount'];
if (empty($data)) {
@ -780,14 +867,13 @@ class ExcelExportController extends ResourceController
$totalRow[$lastColIndex] = $totalSum;
$finalData[] = $totalRow;
$monthName = date('M_Y') ;
$fileName = 'Performing_Partner_Top_50_Policies_Details_Monthly_Report_' . $monthName . '.xlsx';
$fileName = 'Performing_Partner_Top_50_Policies_Details_Monthly_Report.xlsx';
// --- CALL CENTRALIZED FUNCTION ---
$this->streamExcelFile(
$header,
$finalData,
"Performing Partner ( Top 50 ) Policies Details - Monthly Report ".$monthName,
"Performing Partner ( Top 50 ) Policies Details - From ".$startDateTitle." to ".$endDateTitle." Report",
$fileName,
true // This will ignore the bold/alignment logic for the last row
);
@ -838,6 +924,8 @@ class ExcelExportController extends ResourceController
{
try{
$managerId = $this->request->getGet('manager_id');
$from_date = $this->request->getGet('from_date');
$to_date = $this->request->getGet('to_date');
if (empty($managerId)) {
$msg = "Missing: ";
@ -847,7 +935,40 @@ class ExcelExportController extends ResourceController
return $this->response->setJSON(['status' => 'error','code' => 400,'data' => [],'message' => 'Missing required parameters','ref' => $ref])->setStatusCode(200);
}
$data = $this->getDataAgentsWithoutPolicies($managerId);
if (empty($from_date) || empty($to_date)) {
// Default: last 10 days
$fromObj = new \DateTime('-10 days');
$toObj = new \DateTime();
} else {
// Convert d-m-Y → DateTime
$fromObj = \DateTime::createFromFormat('d-m-Y', $from_date);
$toObj = \DateTime::createFromFormat('d-m-Y', $to_date);
if (!$fromObj || !$toObj) {
return $this->response->setJSON([
'status' => 'error',
'message' => 'Invalid date format (expected d-m-Y)',
]);
}
}
// For DB query
$fromDate = $fromObj->format('Y-m-d 00:00:00');
$toDate = $toObj->format('Y-m-d 23:59:59');
// For filename
$startDateFile = $fromObj->format('d_m_Y');
$endDateFile = $toObj->format('d_m_Y');
// For title
$startDateTitle = $fromObj->format('d-m-Y');
$endDateTitle = $toObj->format('d-m-Y');
$data = $this->getDataAgentsWithoutPolicies($managerId,$fromDate,$toDate);
if (empty($data)) {
throw new \RuntimeException('No Partners without policies found.', 404);
@ -871,19 +992,12 @@ class ExcelExportController extends ResourceController
}
// End Date: Today
$endDate = date('Ymd');
$endDateFile = date('d_m_Y');
$endDateTitle = date('d-m-Y');
// Start Date: 9 days ago (10th day is today)
$startDate = date('Ymd', strtotime('-9 days'));
$startDateFile = date('d_m_Y', strtotime('-9 days'));
$startDateTitle = date('d-m-Y', strtotime('-9 days'));
// --- Filename Generation ---
$fileName = 'Non_Performing_Partners_No_Business_For_Last_10_Days_' . $startDateFile . '_to_' . $endDateFile . '.xlsx';
// $fileName = 'Non_Performing_Partners_No_Business_For_Last_10_Days_' . $startDateFile . '_to_' . $endDateFile . '.xlsx';
$fileName = 'Non_Performing_Partners_No_Business_From_' . $startDateFile . '_To_' . $endDateFile . '.xlsx';
// Example output: Agents_Without_Policies_20251206_to_20251215.xlsx
@ -891,7 +1005,7 @@ class ExcelExportController extends ResourceController
$this->streamExcelFile(
$header,
$finalData,
"Non Performing Partners ( No Business For Last 10 Days " . $startDateTitle . " to " . $endDateTitle." )",
"Non Performing Partners ( No Business From " . $startDateTitle . " to " . $endDateTitle . " )",
$fileName,
false // This will ignore the bold/alignment logic for the last row
);
@ -1067,10 +1181,12 @@ class ExcelExportController extends ResourceController
]);
}
$fromDate = date('Y-m-d', strtotime('-10 days'));
$toDate = date('Y-m-d');
// 1. Fetch Data First
$monthlyData = $this->getDataPerformingAgentsByID($managerId, null);
$lowPremiumData = $this->getDataLowPremiumAgent($managerId);
$inactiveData = $this->getDataAgentsWithoutPolicies($managerId);
$monthlyData = $this->getDataPerformingAgentsByID($managerId,null,$fromDate,$toDate);
$lowPremiumData = $this->getDataLowPremiumAgent($managerId,$fromDate,$toDate);
$inactiveData = $this->getDataAgentsWithoutPolicies($managerId,$fromDate,$toDate);
// 2. Add Total Rows where needed (Premium is usually the last index)
if (!empty($monthlyData)) {
@ -1804,7 +1920,7 @@ class ExcelExportController extends ResourceController
* @param string $month ('current' or 'previous')
* @return array
*/
private function getDataPerformingAgentsByID($managerId, $AgentId): array
private function getDataPerformingAgentsByID($managerId, $AgentId,$fromDate,$toDate): array
{
$data = [];
@ -1843,9 +1959,11 @@ class ExcelExportController extends ResourceController
$builder->where('pp.policy_number IS NOT NULL');
$builder->where('pa.id', $AgentId);
$fromDate = date('Y-m-d', strtotime('-10 days'));
$toDate = date('Y-m-d');
// $fromDate = date('Y-m-d', strtotime('-10 days'));
// $toDate = date('Y-m-d');
$builder->where('pp.issued_date >=', $fromDate);
$builder->where('pp.issued_date <=', $toDate);
@ -1882,14 +2000,14 @@ class ExcelExportController extends ResourceController
}
public function getDataPerformingAgentsTop50($manager_id){
public function getDataPerformingAgentsTop50($manager_id,$fromDate,$toDate){
$data = [];
try {
$builder = $this->db->table('partner_policy pp');
$fromDate = date('Y-m-d', strtotime('-10 days'));
$toDate = date('Y-m-d');
// $fromDate = date('Y-m-d', strtotime('-10 days'));
// $toDate = date('Y-m-d');
$builder->select("
pa.agent_code,
@ -1934,7 +2052,7 @@ class ExcelExportController extends ResourceController
* @param string $managerId
* @return array
*/
private function getDataAgentsWithoutPolicies($managerId): array
private function getDataAgentsWithoutPolicies($managerId,$fromDate,$toDate): array
{
$data = [];
@ -1956,8 +2074,13 @@ class ExcelExportController extends ResourceController
$builder->join('partner_policy hist', 'pa.id = hist.agent_id', 'inner');
// 3. LEFT JOIN checks for policies in the last 10 days
$builder->join('partner_policy recent',
"pa.id = recent.agent_id AND recent.issued_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 10 DAY)",
// $builder->join('partner_policy recent',
// "pa.id = recent.agent_id AND recent.issued_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 10 DAY)",
// 'left'
// );
$builder->join('partner_policy recent',"pa.id = recent.agent_id
AND recent.issued_date >= '{$fromDate}'
AND recent.issued_date <= '{$toDate}'",
'left'
);
@ -2005,7 +2128,7 @@ class ExcelExportController extends ResourceController
* @return array
*/
//any changed in this query also change in do the same in DashboardController - getDataLowPremiumAgent
public function getDataLowPremiumAgent($manager_id){
public function getDataLowPremiumAgent($manager_id,$fromDate,$toDate){
$builder = $this->db->table('partner_policy pp');
@ -2028,6 +2151,9 @@ class ExcelExportController extends ResourceController
$builder->having('total_premium_amount <', 50000);
$builder->where('pp.issued_date >=', $fromDate);
$builder->where('pp.issued_date <=', $toDate);
// RAW condition must be inside where() with FALSE
// $builder->where("
// pp.issued_date >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 DAY)