diff --git a/src/main/java/com/gcc/commissionerreview/service/IeComplaintsService.java b/src/main/java/com/gcc/commissionerreview/service/IeComplaintsService.java index d16d4cb..bd345d4 100644 --- a/src/main/java/com/gcc/commissionerreview/service/IeComplaintsService.java +++ b/src/main/java/com/gcc/commissionerreview/service/IeComplaintsService.java @@ -530,7 +530,102 @@ public class IeComplaintsService { } // vendor api - public Map getvendorZoneActivity(String fromDate, String toDate, Integer complaintId) { + + public Map getvendorZoneActivity( + String fromDate, + String toDate, + Integer complaintId) { + + Map response = new HashMap<>(); + + try { + + StringBuilder sql = new StringBuilder(); + List params = new ArrayList<>(); + + sql.append("SELECT "); + sql.append("zm.zone_name, "); + + // TOTAL + sql.append("COUNT(DISTINCT CASE "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("WHEN DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + + } else { + + sql.append("WHEN 1=1 "); + } + + sql.append("THEN cd.ref_id END) AS total_count, "); + + // COMPLETED = VERIFIED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN cd.status = 'verified' "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("THEN cd.ref_id END) AS completed_count, "); + + // PENDING = PENDING + COMPLETED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN cd.status IN ('pending','completed') "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("THEN cd.ref_id END) AS pending_count "); + + sql.append("FROM gcc_street_vendor.zone_master zm "); + + sql.append("LEFT JOIN complaint_details cd "); + sql.append("ON zm.zone_name = cd.zone "); + sql.append("AND cd.is_delete = 0 "); + sql.append("AND cd.is_active = 1 "); + sql.append("AND cd.complaint_id IN (4,6,12) "); + + if (complaintId != null) { + + sql.append("AND cd.complaint_id = ? "); + params.add(complaintId); + } + + sql.append("GROUP BY zm.zone_name "); + sql.append("ORDER BY zm.zone_name "); + + List> result = jdbcTemplate.queryForList(sql.toString(), params.toArray()); + + response.put("status", "Success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "Error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getvendorZoneActivitywithoutcompletedandpending(String fromDate, String toDate, + Integer complaintId) { Map response = new HashMap<>(); @@ -612,7 +707,95 @@ public class IeComplaintsService { return response; } - public Map getvendorWardActivity(String zone, String complaintId, + public Map getvendorWardActivity( + String zone, + String complaintId, + String fromDate, + String toDate) { + + Map response = new HashMap<>(); + + try { + + StringBuilder sql = new StringBuilder(); + List params = new ArrayList<>(); + + sql.append("SELECT "); + sql.append("wm.ward_name AS ward, "); + + // TOTAL + sql.append("COUNT(DISTINCT cd.ref_id) AS total_count, "); + + // COMPLETED = VERIFIED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN cd.status = 'verified' "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("THEN cd.ref_id END) AS completed_count, "); + + // PENDING = PENDING + COMPLETED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN cd.status IN ('pending','completed') "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("THEN cd.ref_id END) AS pending_count "); + + sql.append("FROM gcc_street_vendor.ward_master wm "); + + sql.append("LEFT JOIN complaint_details cd "); + sql.append("ON wm.ward_name = cd.ward "); + sql.append("AND cd.zone = ? "); + params.add(zone); + + sql.append("AND cd.is_delete = 0 "); + sql.append("AND cd.is_active = 1 "); + sql.append("AND cd.complaint_id IN (4,6,12) "); + + if (complaintId != null && !complaintId.isEmpty()) { + + sql.append("AND cd.complaint_id = ? "); + params.add(complaintId); + } + + sql.append("WHERE wm.zone_id = ? "); + params.add(zone); + + sql.append("GROUP BY wm.ward_name "); + sql.append("ORDER BY wm.ward_name "); + + List> result = jdbcTemplate.queryForList( + sql.toString(), + params.toArray()); + + response.put("status", "Success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "Error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getvendorWardActivitywithoutcompletedandpending(String zone, String complaintId, String fromDate, String toDate) { Map response = new HashMap<>(); @@ -699,6 +882,158 @@ public class IeComplaintsService { Map response = new HashMap<>(); + try { + + StringBuilder sql = new StringBuilder(); + List params = new ArrayList<>(); + + String beforeImageColumn = "cd.image_path"; + String afterImageColumn = "comp.image_path"; + + sql.append("SELECT "); + sql.append("cm.complaint_name, "); + + sql.append( + "CASE " + + "WHEN cd.status = 'verified' THEN 'Completed' " + + "WHEN cd.status IN ('pending','completed') THEN 'Pending' " + + "ELSE cd.status " + + "END AS ie_status, "); + + sql.append("cd.street_name, "); + sql.append("cd.status, "); + sql.append("cd.street_name AS complaint_street_name, "); + /* sql.append("comp.street_name AS completion_street_name, "); */ + + sql.append("DATE_FORMAT(cd.cdate,'%d-%m-%Y') AS complaint_created_date, "); + sql.append("cd.remarks AS complaint_remarks, "); + + /* + * sql.append( + * "IFNULL(DATE_FORMAT(comp.cdate,'%d-%m-%Y'),'Pending') AS completion_date, "); + */ + + sql.append( + "CONCAT('" + fileBaseUrl + + "/gccofficialapp/files'," + + beforeImageColumn + + ") AS before_image, "); + + /* + * sql.append( + * "CASE " + + * "WHEN comp.image_path IS NOT NULL " + + * "THEN CONCAT('" + fileBaseUrl + "/gccofficialapp/files', comp.image_path) " + + * "ELSE '' " + + * "END AS after_image "); + */ + + // Completion Remarks + sql.append( + "CASE " + + "WHEN cd.status IN ('completed','verified') " + + "THEN IFNULL(comp.street_name,'') " + + "ELSE 'Pending' " + + "END AS completion_street_name, "); + + // Completion Date + sql.append( + "CASE " + + "WHEN cd.status IN ('completed','verified') " + + "THEN DATE_FORMAT(comp.cdate,'%d-%m-%Y') " + + "ELSE 'Pending' " + + "END AS completion_date, "); + + // After Image + sql.append( + "CASE " + + "WHEN cd.status IN ('completed','verified') " + + "AND comp.image_path IS NOT NULL " + + "THEN CONCAT('" + fileBaseUrl + "/gccofficialapp/files', comp.image_path) " + + "ELSE 'Pending' " + + "END AS after_image, "); + // complete remarks + sql.append( + "CASE WHEN cd.status IN ('completed','verified') THEN comp.remarks ELSE 'Pending' END AS completion_remarks "); + + sql.append("FROM complaint_details cd "); + + sql.append("LEFT JOIN complaint_master cm "); + sql.append("ON cm.complaint_id = cd.complaint_id "); + + /* + * sql.append("LEFT JOIN completion comp "); + * sql.append("ON comp.ref_id = cd.ref_id "); + */ + sql.append("LEFT JOIN completion comp "); + sql.append("ON comp.id = ( "); + sql.append(" SELECT MAX(c1.id) "); + sql.append(" FROM completion c1 "); + sql.append(" WHERE c1.ref_id = cd.ref_id "); + sql.append(") "); + + sql.append("WHERE cd.zone = ? "); + params.add(zone); + + sql.append("AND cd.ward = ? "); + params.add(ward); + + sql.append("AND cd.is_delete = 0 "); + sql.append("AND cd.is_active = 1 "); + + sql.append("AND cd.complaint_id IN (4,6,12) "); + + if (complaintId != null && !complaintId.isEmpty()) { + + sql.append("AND cd.complaint_id = ? "); + params.add(complaintId); + } + + // Updated status logic + if (status != null && !status.equalsIgnoreCase("all")) { + + if (status.equalsIgnoreCase("verified")) { + + sql.append("AND cd.status = 'verified' "); + + } else if (status.equalsIgnoreCase("pending")) { + + sql.append("AND cd.status IN ('pending','completed') "); + } + } + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + + params.add(fromDate); + params.add(toDate); + } + + sql.append("ORDER BY cd.cdate DESC "); + + List> result = jdbcTemplate.queryForList(sql.toString(), params.toArray()); + + response.put("status", "Success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "Error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getvendorComplaintDetailswithoutcompletedandpending(String zone, String ward, + String complaintId, String fromDate, String toDate, String status) { + + Map response = new HashMap<>(); + try { StringBuilder sql = new StringBuilder(); @@ -796,6 +1131,78 @@ public class IeComplaintsService { Map response = new HashMap<>(); + try { + + StringBuilder sql = new StringBuilder(); + + List params = new ArrayList<>(); + + sql.append("SELECT "); + sql.append("cm.complaint_id, "); + sql.append("cm.complaint_name, "); + + // TOTAL + sql.append("COUNT(DISTINCT cd.ref_id) AS total_count, "); + + // COMPLETED = VERIFIED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN cd.status = 'verified' "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("THEN cd.ref_id END) AS completed_count, "); + + // PENDING = PENDING + COMPLETED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN cd.status IN ('pending','completed') "); + + if (fromDate != null && !fromDate.isEmpty() + && toDate != null && !toDate.isEmpty()) { + + sql.append("AND DATE(cd.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("THEN cd.ref_id END) AS pending_count "); + + sql.append("FROM complaint_master cm "); + + sql.append("LEFT JOIN complaint_details cd "); + sql.append("ON cm.complaint_id = cd.complaint_id "); + + sql.append("WHERE cm.complaint_id IN (4,6,12) "); + + sql.append("GROUP BY cm.complaint_id, cm.complaint_name "); + + sql.append("ORDER BY cm.complaint_id"); + + List> result = jdbcTemplate.queryForList(sql.toString(), params.toArray()); + + response.put("status", "Success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "Error"); + response.put("message", "Something went wrong"); + } + + return response; + } + + public Map getvendorComplaintDashboardwithoutcompletedandpending(String fromDate, String toDate) { + + Map response = new HashMap<>(); + try { StringBuilder sql = new StringBuilder(); diff --git a/src/main/java/com/gcc/commissionerreview/service/TenementService.java b/src/main/java/com/gcc/commissionerreview/service/TenementService.java index ea7a73d..ea5b3b1 100644 --- a/src/main/java/com/gcc/commissionerreview/service/TenementService.java +++ b/src/main/java/com/gcc/commissionerreview/service/TenementService.java @@ -45,6 +45,86 @@ public class TenementService { } public Map getTenementDashboard( + String fromDate, + String toDate) { + + Map response = new HashMap<>(); + + try { + + String sql = ""; + + List> result; + + // WITHOUT DATE FILTER + if (fromDate == null || fromDate.isBlank() + || toDate == null || toDate.isBlank()) { + + sql = "SELECT " + + + "'Tenement' AS complaint_name, " + + + // TOTAL + "COUNT(*) AS total_count, " + + + // COMPLETED = VERIFIED + "COUNT(CASE " + + "WHEN final_status = 'verified' " + + "THEN 1 END) AS completed_count, " + + + // PENDING = CREATED + COMPLETED + "COUNT(CASE " + + "WHEN final_status IN ('created','completed') " + + "THEN 1 END) AS pending_count " + + + "FROM issue_list1"; + + result = jdbcTemplate.queryForList(sql); + + } else { + + sql = "SELECT " + + + "'Tenement' AS complaint_name, " + + + // TOTAL + "COUNT(*) AS total_count, " + + + // COMPLETED = VERIFIED + "COUNT(CASE " + + "WHEN final_status = 'verified' " + + "THEN 1 END) AS completed_count, " + + + // PENDING = CREATED + COMPLETED + "COUNT(CASE " + + "WHEN final_status IN ('created','completed') " + + "THEN 1 END) AS pending_count " + + + "FROM issue_list1 " + + + "WHERE DATE(cdate) BETWEEN ? AND ?"; + + result = jdbcTemplate.queryForList( + sql, + fromDate, + toDate); + } + + response.put("status", "Success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "Error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getTenementDashboardwithoutcompletedandpending( String fromDate, String toDate) { @@ -120,6 +200,101 @@ public class TenementService { } public Map getZoneActivity( + String fromDate, + String toDate) { + + Map response = new HashMap<>(); + + try { + + String sql = ""; + List> result; + + if (fromDate == null || fromDate.isBlank() + || toDate == null || toDate.isBlank()) { + + sql = "SELECT " + + "am.zone, " + + + "COUNT(DISTINCT il1.id) AS total_complaint_count, " + + + // COMPLETED = VERIFIED + "COUNT(DISTINCT CASE " + + "WHEN il1.final_status = 'verified' " + + "THEN il1.id END) " + + "AS total_complaint_closed_count, " + + + // PENDING = CREATED + COMPLETED + "COUNT(DISTINCT CASE " + + "WHEN il1.final_status IN ('created','completed') " + + "THEN il1.id END) " + + "AS total_complaint_pending_count " + + + "FROM asset_master am " + + + "LEFT JOIN asset_list al " + + "ON al.am_id = am.id " + + + "LEFT JOIN issue_list1 il1 " + + "ON il1.assetlist_id = al.id " + + + "GROUP BY am.zone " + + "ORDER BY am.zone"; + + result = jdbcTemplate.queryForList(sql); + + } else { + + sql = "SELECT " + + "am.zone, " + + + "COUNT(DISTINCT il1.id) AS total_complaint_count, " + + + // COMPLETED = VERIFIED + "COUNT(DISTINCT CASE " + + "WHEN il1.final_status = 'verified' " + + "THEN il1.id END) " + + "AS total_complaint_closed_count, " + + + // PENDING = CREATED + COMPLETED + "COUNT(DISTINCT CASE " + + "WHEN il1.final_status IN ('created','completed') " + + "THEN il1.id END) " + + "AS total_complaint_pending_count " + + + "FROM asset_master am " + + + "LEFT JOIN asset_list al " + + "ON al.am_id = am.id " + + + "LEFT JOIN issue_list1 il1 " + + "ON il1.assetlist_id = al.id " + + "AND DATE(il1.cdate) BETWEEN ? AND ? " + + + "GROUP BY am.zone " + + "ORDER BY am.zone"; + + result = jdbcTemplate.queryForList( + sql, + fromDate, + toDate); + } + + response.put("status", "success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getZoneActivitywithoutcompletedandpending( String fromDate, String toDate) { @@ -229,6 +404,81 @@ public class TenementService { } public Map getWardActivity( + String zone, + String fromDate, + String toDate) { + + Map response = new HashMap<>(); + + try { + + StringBuilder sql = new StringBuilder(); + List params = new ArrayList<>(); + + sql.append("SELECT "); + sql.append("wm.ward_name AS ward, "); + + sql.append("COUNT(DISTINCT il1.id) "); + sql.append("AS total_complaint_count, "); + + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN il1.final_status = 'verified' "); + sql.append("THEN il1.id END) "); + sql.append("AS total_complaint_closed_count, "); + + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN il1.final_status IN ('created','completed') "); + sql.append("THEN il1.id END) "); + sql.append("AS total_complaint_pending_count "); + + sql.append("FROM gcc_street_vendor.ward_master wm "); + + sql.append("LEFT JOIN asset_master am "); + sql.append("ON wm.ward_name = am.ward "); + sql.append("AND am.zone = ? "); + params.add(zone); + + sql.append("LEFT JOIN asset_list al "); + sql.append("ON al.am_id = am.id "); + + sql.append("LEFT JOIN issue_list1 il1 "); + sql.append("ON il1.assetlist_id = al.id "); + + if (fromDate != null + && !fromDate.isBlank() + && toDate != null + && !toDate.isBlank()) { + + sql.append("AND DATE(il1.cdate) BETWEEN ? AND ? "); + params.add(fromDate); + params.add(toDate); + } + + sql.append("WHERE wm.zone_id = ? "); + params.add(zone); + + sql.append("GROUP BY wm.ward_name "); + sql.append("ORDER BY wm.ward_name "); + + List> result = jdbcTemplate.queryForList( + sql.toString(), + params.toArray()); + + response.put("status", "success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getWardActivitywithoutcompletedandpending( String zone, String fromDate, @@ -300,8 +550,8 @@ public class TenementService { return response; } - // ================= SERVICE ================= + // ================= SERVICE ================= public Map getSchemeWiseReport( String ward, @@ -310,6 +560,84 @@ public class TenementService { Map response = new HashMap<>(); + try { + + StringBuilder sql = new StringBuilder(); + + List params = new ArrayList<>(); + + sql.append("SELECT "); + + sql.append("am.scheme_name, "); + sql.append("am.id as schemeid, "); + + // TOTAL + sql.append("COUNT(DISTINCT il1.id) "); + sql.append("AS total_complaint_count, "); + + // COMPLETED = VERIFIED ONLY + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN il1.final_status = 'verified' "); + sql.append("THEN il1.id END) "); + sql.append("AS total_complaint_closed_count, "); + + // PENDING = CREATED + COMPLETED + sql.append("COUNT(DISTINCT CASE "); + sql.append("WHEN il1.final_status IN ('created','completed') "); + sql.append("THEN il1.id END) "); + sql.append("AS total_complaint_pending_count "); + + sql.append("FROM asset_master am "); + + sql.append("LEFT JOIN asset_list al "); + sql.append("ON al.am_id = am.id "); + + sql.append("LEFT JOIN issue_list1 il1 "); + sql.append("ON il1.assetlist_id = al.id "); + + sql.append("WHERE am.ward = ? "); + params.add(ward); + + // DATE FILTER + if (fromDate != null && !fromDate.isBlank() + && toDate != null && !toDate.isBlank()) { + + sql.append("AND DATE(il1.cdate) BETWEEN ? AND ? "); + + params.add(fromDate); + params.add(toDate); + } + + sql.append("GROUP BY am.scheme_name, am.id "); + + sql.append("ORDER BY am.scheme_name "); + + List> result = jdbcTemplate.queryForList( + sql.toString(), + params.toArray()); + + response.put("status", "success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getSchemeWiseReportwithcompletedandpending( + + String ward, + String fromDate, + String toDate) { + + Map response = new HashMap<>(); + try { StringBuilder sql = new StringBuilder(); @@ -390,6 +718,154 @@ public class TenementService { Map response = new HashMap<>(); + try { + + StringBuilder sql = new StringBuilder(); + + List params = new ArrayList<>(); + + sql.append("SELECT "); + + sql.append("il1.id AS issuelist1_id, "); + sql.append("il1.final_status, "); + sql.append( + "CASE " + + "WHEN il1.final_status = 'verified' THEN 'Completed' " + + "WHEN il1.final_status IN ('created','completed') THEN 'Pending' " + + "ELSE il1.final_status " + + "END AS ie_status, "); + + sql.append("DATE_FORMAT(il1.cdate,'%d-%m-%Y') AS created_date, "); + + sql.append("IFNULL(il1.remarks,'') AS created_remarks, "); + + sql.append( + "CASE " + + "WHEN il1.before_image IS NOT NULL " + + "THEN CONCAT('" + fileBaseUrl + "/gccofficialapp/files', il1.before_image) " + + "ELSE '' END AS before_image, "); + + /* + * sql.append( + * "IFNULL(DATE_FORMAT(il2.cdate,'%d-%m-%Y'),'Pending') AS completed_date, "); + * + * sql.append( + * "IFNULL(il2.remarks,'Pending') AS completed_remarks, "); + * + * sql.append( + * "CASE " + + * "WHEN il2.after_image IS NOT NULL " + + * "THEN CONCAT('" + fileBaseUrl + "/gccofficialapp/files', il2.after_image) " + + * "ELSE '' END AS after_image, "); + */ + // Completed Date + sql.append( + "CASE " + + "WHEN il2.cdate IS NOT NULL " + + "THEN DATE_FORMAT(il2.cdate,'%d-%m-%Y') " + + "ELSE 'Pending' " + + "END AS completed_date, "); + + // Completed Remarks + sql.append( + "CASE " + + "WHEN il2.cdate IS NOT NULL " + + "THEN IFNULL(il2.remarks,'') " + + "ELSE 'Pending' " + + "END AS completed_remarks, "); + + // After Image + sql.append( + "CASE " + + "WHEN il2.after_image IS NOT NULL " + + "THEN CONCAT('" + fileBaseUrl + "/gccofficialapp/files', il2.after_image) " + + "ELSE '' " + + "END AS after_image, "); + + sql.append( + "IFNULL(DATE_FORMAT(il3.cdate,'%d-%m-%Y'),'') AS verified_date, "); + + sql.append( + "IFNULL(il3.remarks,'') AS verified_remarks, "); + + sql.append( + "CASE " + + "WHEN il3.verify_image IS NOT NULL " + + "THEN CONCAT('" + fileBaseUrl + "/gccofficialapp/files', il3.verify_image) " + + "ELSE '' END AS verify_image "); + + sql.append("FROM issue_list1 il1 "); + + sql.append("LEFT JOIN asset_list al "); + sql.append("ON al.id = il1.assetlist_id "); + + sql.append("LEFT JOIN issue_list2 il2 "); + sql.append("ON il2.issuelist1_id = il1.id "); + sql.append("AND il2.final_status = 'completed' "); + + sql.append("LEFT JOIN issue_list3 il3 "); + sql.append("ON il3.issuelist1_id = il1.id "); + + sql.append("WHERE il1.ward = ? "); + params.add(ward); + + sql.append("AND al.am_id = ? "); + params.add(schemeid); + + // Date Filter + if (fromDate != null && !fromDate.isBlank() + && toDate != null && !toDate.isBlank()) { + + sql.append("AND DATE(il1.cdate) BETWEEN ? AND ? "); + + params.add(fromDate); + params.add(toDate); + } + + // Updated Status Filter + if (status != null && !status.isEmpty()) { + + if ("verified".equalsIgnoreCase(status)) { + + sql.append("AND il1.final_status = 'verified' "); + + } else if ("pending".equalsIgnoreCase(status)) { + + sql.append( + "AND il1.final_status IN ('created','completed') "); + } + } + + sql.append("ORDER BY il1.id DESC "); + + List> result = jdbcTemplate.queryForList( + sql.toString(), + params.toArray()); + + response.put("status", "success"); + response.put("data", result); + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "error"); + response.put("message", e.getMessage()); + } + + return response; + } + + public Map getComplaintDetailswithoutcompletedandpending( + + String ward, + String schemeid, + String status, + String fromDate, + String toDate) { + + Map response = new HashMap<>(); + try { StringBuilder sql = new StringBuilder(); diff --git a/src/main/resources/templates/modules/vendorreport.html b/src/main/resources/templates/modules/vendorreport.html index 8f3418f..fb97786 100644 --- a/src/main/resources/templates/modules/vendorreport.html +++ b/src/main/resources/templates/modules/vendorreport.html @@ -330,10 +330,13 @@ Before Image Complaint Created Date complaint Created Street + Complaint Created Remarks - After Image - Completion Date - Completion Street + Rectified Image + Rectified Date + + Rectified Remarks + IE Status @@ -425,9 +428,10 @@ Created Date Created Remarks Before Image - Completed Date - Completed Remarks - After Image + Rectified Date + Rectified Remarks + Rectified Image + IE Status @@ -638,6 +642,10 @@ ${c.after_image ? ` 0 ? ` +onclick="openComplaintDetails('${zone}','${ward}','4','verified')"> ${h.completed_count} @@ -1412,7 +1426,7 @@ ${t.total_count} ${t.completed_count > 0 ? ` +onclick="openComplaintDetails('${zone}','${ward}','6','verified')"> ${t.completed_count} @@ -1481,7 +1495,7 @@ ${g.total_count} ${g.completed_count > 0 ? ` +onclick="openComplaintDetails('${zone}','${ward}','12','verified')"> ${g.completed_count} @@ -1759,6 +1773,12 @@ ${ten.total_complaint_count} }); } function openComplaintDetails(zone, ward, complaintId, status) { + if ($.fn.DataTable.isDataTable('#complaintTable')) { + $('#complaintTable').DataTable().clear().destroy(); + } + + // Clear old rows + $("#complaintDetailsBody").empty(); let fromDate = $("#fromDate").val(); let toDate = $("#toDate").val(); @@ -1800,30 +1820,84 @@ style="width:80px;height:80px;" class="preview-img" style="cursor:pointer" >` ${item.complaint_created_date || ''} ${item.complaint_street_name || ''} +${item.complaint_remarks || ''} -${item.after_image ? - - `` - + ${item.after_image && item.after_image !== 'Pending' + ? `` : 'Pending'} + + ${item.completion_date || 'Pending'} -${item.completion_street_name || 'Pending'} + + +${item.completion_remarks || 'Pending'} + +${item.ie_status || 'Pending'} `; }); $("#complaintDetailsBody").html(html); + /*if ($.fn.DataTable.isDataTable('#complaintTable')) { + $('#complaintTable').DataTable().destroy(); + }*/ + + $('#complaintTable').DataTable({ + + pageLength: 10, + + lengthMenu: [ + [10, 25, 50, 100], + [10, 25, 50, 100] + ], + + searching: true, + + ordering: false, + + dom: 'Bfrtip', + + buttons: [ + + { + extend: 'excelHtml5', + text: 'Download Excel', + title: 'Complaint_Details_Ward' + }, + + { + extend: 'pdfHtml5', + text: 'Download PDF', + title: 'Complaint_Details_Ward', + + orientation: 'landscape', + + pageSize: 'A4', + + exportOptions: { + columns: [1, 2, 3, 5, 6, 7, 8] + } + } + + ] + }); $("#complaintModal").modal("show"); }); } function openComplaintDetailslastworkinglive(zone, ward, complaintId) { + if ($.fn.DataTable.isDataTable('#complaintTable')) { + $('#complaintTable').DataTable().destroy(); + } + + // Clear old rows + $("#complaintDetailsBody").empty(); let fromDate = $("#fromDate").val(); let toDate = $("#toDate").val(); @@ -2035,7 +2109,7 @@ ${row.total_complaint_closed_count > 0 onclick="openTenementComplaintModal( '${ward}', '${row.schemeid}', -'completed' +'verified' )"> ${row.total_complaint_closed_count} @@ -2056,7 +2130,7 @@ ${row.total_complaint_pending_count > 0 onclick="openTenementComplaintModal( '${ward}', '${row.schemeid}', -'created' +'pending' )"> ${row.total_complaint_pending_count} @@ -2185,6 +2259,9 @@ ${row.total_complaint_pending_count} ${row.after_image ? `` : 'Pending'} +${row.ie_status || 'pending'} + +