diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..83a3b6f --- /dev/null +++ b/.classpath @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..b01d263 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + gccoffice + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..abdea9a --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..67cd90e --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/gccoffice_uploads/socialmedia_1913_regcompfiles/2026/08/resolved_img_06082026175501_Screenshot(11).png b/gccoffice_uploads/socialmedia_1913_regcompfiles/2026/08/resolved_img_06082026175501_Screenshot(11).png new file mode 100644 index 0000000..c97dd93 Binary files /dev/null and b/gccoffice_uploads/socialmedia_1913_regcompfiles/2026/08/resolved_img_06082026175501_Screenshot(11).png differ diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/controller/SocialMediaApiController.java b/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/controller/SocialMediaApiController.java index 79dd379..c530437 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/controller/SocialMediaApiController.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/controller/SocialMediaApiController.java @@ -433,6 +433,11 @@ public class SocialMediaApiController { return socialservice.getFilteredRegComps(); } + @GetMapping("/getcompstatus") + public Map getcompstatus(String complaintNumber) { + return socialservice.getcompstatus(complaintNumber); + } + @PostMapping("/approveComplaint") @ResponseBody public Map approveComplaint( diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/service/SocialMediaService.java b/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/service/SocialMediaService.java index 325b41f..12f54e6 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/service/SocialMediaService.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/callcenterqaqc/service/SocialMediaService.java @@ -6,6 +6,8 @@ import java.util.Base64; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -373,16 +375,19 @@ public class SocialMediaService { // Get the bytes of the file byte[] bytes = file.getBytes(); + String originalFileName = file.getOriginalFilename(); + String extension = originalFileName.substring(originalFileName.lastIndexOf('.') + 1).toLowerCase(); - BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes)); - byte[] compressedBytes = compressImage(image, 0.5f); // Compress with 50%quality + if ("jpg".equals(extension) || "jpeg".equals(extension)) { + BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes)); + byte[] compressedBytes = compressImage(image, 0.5f); // Compress with 50% quality - // Write the bytes to the file - Files.write(path, bytes); - - // Write the bytes to the file - Files.write(path, compressedBytes); - + // Write the compressed bytes to the file + Files.write(path, compressedBytes); + } else { + // Write the original bytes to the file + Files.write(path, bytes); + } //System.out.println(filePath); return filepath_txt; @@ -428,52 +433,60 @@ public class SocialMediaService { if (responseEntity.getStatusCode().is2xxSuccessful()) { String responseBody = responseEntity.getBody(); - //System.out.println("Response Body: " + responseBody); - + + //System.out.println("RAW Response Body: " + responseBody); + + // Fix malformed fields + responseBody = fixMalformedField(responseBody, "complaintdetails", "OfficialMobile"); + responseBody = fixMalformedField(responseBody, "mediaLink", "COMP_MODE"); +// +// System.out.println("Altered Response Body: " + responseBody); + + ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(responseBody); JsonNode complaintDetails = rootNode.path(0).path("ComplaintListHistory").path(0); - String registerDate=complaintDetails.path("complaintopendate").asText("N/A"); - //System.out.println("registerdate====="+registerDate); - - String formattedDate = "N/A"; // Default value if parsing fails - - if (!registerDate.equals("N/A") && !registerDate.isEmpty()) { - try { - // Parse the input date string - SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); - Date date = inputFormat.parse(registerDate); - - // Format the date to dd-MM-yyyy - SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy"); - formattedDate = outputFormat.format(date); - } catch (Exception e) { - e.printStackTrace(); // Log exception for debugging - } - } +// String registerDate=complaintDetails.path("complaintopendate").asText("N/A"); +// //System.out.println("registerdate====="+registerDate); +// +// String formattedDate = "N/A"; // Default value if parsing fails +// +// if (!registerDate.equals("N/A") && !registerDate.isEmpty()) { +// try { +// // Parse the input date string +// SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); +// Date date = inputFormat.parse(registerDate); +// +// // Format the date to dd-MM-yyyy +// SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy"); +// formattedDate = outputFormat.format(date); +// } catch (Exception e) { +// e.printStackTrace(); // Log exception for debugging +// } +// } if (!complaintDetails.isMissingNode()) { // Existing fields - resultMap.put("complaintid", complaintDetails.path("complaintid").asText("N/A")); - resultMap.put("complaintdate", formattedDate); - resultMap.put("complainantName", complaintDetails.path("CustomerName").asText("N/A")); - resultMap.put("mobileNumber", complaintDetails.path("CustomerMobile").asText("N/A")); - resultMap.put("complaintType", complaintDetails.path("complainttype").asText("N/A")); - resultMap.put("description", complaintDetails.path("complaintdetails").asText("N/A")); +// resultMap.put("complaintid", complaintDetails.path("complaintid").asText("N/A")); +// resultMap.put("complaintdate", formattedDate); +// resultMap.put("complainantName", complaintDetails.path("CustomerName").asText("N/A")); +// resultMap.put("mobileNumber", complaintDetails.path("CustomerMobile").asText("N/A")); +// resultMap.put("complaintType", complaintDetails.path("complainttype").asText("N/A")); + //resultMap.put("description", complaintDetails.path("complaintdetails").asText("N/A")); resultMap.put("currentStatus", complaintDetails.path("complaintcurrentstatus").asText("N/A")); - resultMap.put("Street", complaintDetails.path("Street").asText("N/A")); - resultMap.put("Area", complaintDetails.path("Area").asText("N/A")); - resultMap.put("Landmark", complaintDetails.path("Landmark").asText("N/A")); - resultMap.put("Location", complaintDetails.path("Location").asText("N/A")); - resultMap.put("Zone", complaintDetails.path("Zone").asText("N/A")); - resultMap.put("Division", complaintDetails.path("Division").asText("N/A")); - resultMap.put("OfficialMobile", complaintDetails.path("OfficialMobile").asText("N/A")); - resultMap.put("gender", complaintDetails.path("GENDER").asText("N/A")); - resultMap.put("deptname",complaintDetails.path("DEPT_NAME").asText("N/A")); - resultMap.put("compmode", complaintDetails.path("COMP_MODE").asText("N/A")); - resultMap.put("Officialname", complaintDetails.path("Officialname").asText("N/A")); +// resultMap.put("Street", complaintDetails.path("Street").asText("N/A")); +// resultMap.put("Area", complaintDetails.path("Area").asText("N/A")); +// resultMap.put("Landmark", complaintDetails.path("Landmark").asText("N/A")); +// resultMap.put("Location", complaintDetails.path("Location").asText("N/A")); +// resultMap.put("Zone", complaintDetails.path("Zone").asText("N/A")); +// resultMap.put("Division", complaintDetails.path("Division").asText("N/A")); +// resultMap.put("OfficialMobile", complaintDetails.path("OfficialMobile").asText("N/A")); +// resultMap.put("gender", complaintDetails.path("GENDER").asText("N/A")); +// resultMap.put("deptname",complaintDetails.path("DEPT_NAME").asText("N/A")); +// resultMap.put("compmode", complaintDetails.path("COMP_MODE").asText("N/A")); +// resultMap.put("Officialname", complaintDetails.path("Officialname").asText("N/A")); } @@ -487,6 +500,29 @@ public class SocialMediaService { return resultMap; } + + private String fixMalformedField(String json, String fieldName, String nextFieldName) { + + Pattern pattern = Pattern.compile( + "\"" + Pattern.quote(fieldName) + "\":\"\"(.*?)\"\",\"" + Pattern.quote(nextFieldName) + "\"", + Pattern.DOTALL); + + Matcher matcher = pattern.matcher(json); + + if (matcher.find()) { + String value = matcher.group(1); + + // Escape any quotes inside the value + value = value.replace("\"", "\\\""); + + json = matcher.replaceFirst( + "\"" + fieldName + "\":\"" + + Matcher.quoteReplacement(value) + + "\",\"" + nextFieldName + "\""); + } + + return json; + } public Map getFilteredRegComps() { @@ -495,7 +531,7 @@ public class SocialMediaService { try { String sql = - "SELECT src.complaint_number, src.created_date,CONCAT('" + fileBaseUrl + "/gcc/files',src.resolved_img) AS img_full_path,al.agent_name as agent_name,src.remarks as remarks" + + "SELECT src.complaint_number as complaintnumber, date_format(src.created_date,'%d-%m-%Y %H:%i') as submitted_date,CONCAT('" + fileBaseUrl + "/gcc/files',src.resolved_img) AS img_full_path,al.agent_name as agent_name,src.remarks as remarks" + " FROM socialmedia_reg_completed src " + " LEFT JOIN agents_list al ON al.agent_id=src.cby " + "WHERE src.is_processed = 0 " + @@ -504,70 +540,70 @@ public class SocialMediaService { List> dbList = jdbcTemplate.queryForList(sql); - List> finalList = new ArrayList<>(); - - for (Map row : dbList) { - - String complaintNumber = - String.valueOf(row.get("complaint_number")); - - Map complaintDetails = - getDetailsByComplaintNumber(complaintNumber); - - String currentStatus = - String.valueOf( - complaintDetails.getOrDefault( - "currentStatus", - "" - ) - ); - - //System.out.println("currentStatus==="+currentStatus); - - if ("REGISTERED".equalsIgnoreCase(currentStatus) - || "FORWARDED".equalsIgnoreCase(currentStatus)) { - - Map resultRow = new HashMap<>(); - - resultRow.put("complaintnumber", complaintNumber); - //resultRow.put("submitted_date", row.get("created_date")); - Timestamp ts = (Timestamp) row.get("created_date"); - - SimpleDateFormat sdf = - new SimpleDateFormat("dd/MM/yyyy HH:mm"); - - resultRow.put("submitted_date", sdf.format(ts)); - - String img = (String) row.get("img_full_path"); - resultRow.put("img_full_path", img); - - String agent_name = (String) row.get("agent_name"); - resultRow.put("agent_name", agent_name); - - String remarks = (String) row.get("remarks"); - resultRow.put("remarks", remarks); - - finalList.add(resultRow); - - } else { - - String updateSql = - "UPDATE socialmedia_reg_completed " + - "SET updated_by = ?, " + - "updated_date = NOW(), " + - "isactive = 0, " + - "isdelete = 1 " + - "WHERE complaint_number = ?"; - - jdbcTemplate.update( - updateSql, - 0, - complaintNumber - ); - } - } - - if (finalList.isEmpty()) { +// List> finalList = new ArrayList<>(); +// +// for (Map row : dbList) { +// +// String complaintNumber = +// String.valueOf(row.get("complaint_number")); +// +// Map complaintDetails = +// getDetailsByComplaintNumber(complaintNumber); +// +// String currentStatus = +// String.valueOf( +// complaintDetails.getOrDefault( +// "currentStatus", +// "" +// ) +// ); +// +// //System.out.println("currentStatus==="+currentStatus); +// +// if ("REGISTERED".equalsIgnoreCase(currentStatus) +// || "FORWARDED".equalsIgnoreCase(currentStatus)) { +// +// Map resultRow = new HashMap<>(); +// +// resultRow.put("complaintnumber", complaintNumber); +// //resultRow.put("submitted_date", row.get("created_date")); +// Timestamp ts = (Timestamp) row.get("created_date"); +// +// SimpleDateFormat sdf = +// new SimpleDateFormat("dd/MM/yyyy HH:mm"); +// +// resultRow.put("submitted_date", sdf.format(ts)); +// +// String img = (String) row.get("img_full_path"); +// resultRow.put("img_full_path", img); +// +// String agent_name = (String) row.get("agent_name"); +// resultRow.put("agent_name", agent_name); +// +// String remarks = (String) row.get("remarks"); +// resultRow.put("remarks", remarks); +// +// finalList.add(resultRow); +// +// } else { +// +// String updateSql = +// "UPDATE socialmedia_reg_completed " + +// "SET updated_by = ?, " + +// "updated_date = NOW(), " + +// "isactive = 0, " + +// "isdelete = 1 " + +// "WHERE complaint_number = ?"; +// +// jdbcTemplate.update( +// updateSql, +// 0, +// complaintNumber +// ); +// } +// } + + if (dbList.isEmpty()) { response.put("status", "nodata"); response.put("message", "No registered complaints found."); @@ -575,7 +611,7 @@ public class SocialMediaService { } else { response.put("status", "success"); - response.put("details", finalList); + response.put("details", dbList); } } catch (Exception e) { @@ -592,9 +628,9 @@ public class SocialMediaService { public Map approveComplaint(String complaintId, String remarks, String imgFullPath, String userid) { Map response = new HashMap<>(); - + try { - + Integer updated_by = Integer.parseInt(userid); String erp_name=get1913AdminErpusernamebyId(userid); @@ -819,4 +855,59 @@ public class SocialMediaService { return response; } + public Map getcompstatus(String complaintNumber) { + + Map response = new HashMap<>(); + try { + + Map complaintDetails = + getDetailsByComplaintNumber(complaintNumber); + + String currentStatus = + String.valueOf( + complaintDetails.getOrDefault( + "currentStatus", + "" + ) + ); + + //System.out.println("currentStatus==="+currentStatus); + + if ("REGISTERED".equalsIgnoreCase(currentStatus) + || "FORWARDED".equalsIgnoreCase(currentStatus)) { + + response.put("status", "success"); + response.put("message", "Status Not Changed"); + + } else { + + String updateSql = + "UPDATE socialmedia_reg_completed " + + "SET updated_by = ?, " + + "updated_date = NOW(), " + + "isactive = 0, " + + "isdelete = 1 " + + "WHERE complaint_number = ? AND isactive = 1 AND isdelete = 0"; + + jdbcTemplate.update( + updateSql, + 0, + complaintNumber + ); + response.put("status", "changed"); + response.put("message", complaintNumber+" Complaint Already Moved to "+currentStatus); + + } + + } catch (Exception e) { + e.printStackTrace(); + + response.put("status", "error"); + response.put("message", e.getMessage()); + } + + + return response; + } + } diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/configuration/DataSourceConfig.java b/src/main/java/in/gov/chennaicorporation/gccoffice/configuration/DataSourceConfig.java index 1b406ce..6da1f44 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/configuration/DataSourceConfig.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/configuration/DataSourceConfig.java @@ -24,8 +24,8 @@ import java.util.Properties; @EnableTransactionManagement public class DataSourceConfig { - // private static String host = "localhost:3306"; - // private static String dbpassword = "root"; +// private static String host = "localhost:3306"; +// private static String dbpassword = "root"; // private static String dbpassword = "gccroot"; diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/ApiController.java b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/ApiController.java index 0d9b465..badaecd 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/ApiController.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/ApiController.java @@ -269,7 +269,11 @@ public class ApiController { @RequestParam (required = false)String tamil_landmark, @RequestParam (required = false)String tamil_gender, @RequestParam (required = false)String tamil_present_district, - @RequestParam String userId) { + @RequestParam String userId, + @RequestParam Integer religion, + @RequestParam(required = false) Integer diff_type, + @RequestParam(required = false) String other_disability, + @RequestParam(required = false) String familyDetails) { //String presentAddress = door_no + ", " + streetname + ", " + areaname; @@ -331,7 +335,8 @@ public class ApiController { streetVendorPhotoPath, name, f_h_name, mobile_number,dob, gender, social_category, diff_abled, education_status, marital_status, no_of_fam_mem, are_any_fam_mem_invol_str,presentAddress, present_district, present_pincode, - rationCardPath,aadharFrontPhotoPath, aadharBackPhotoPath,aadharNo,userId,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamilvending_category); + rationCardPath,aadharFrontPhotoPath, aadharBackPhotoPath,aadharNo,userId,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamilvending_category, + religion,diff_type,other_disability,familyDetails); if (saveStatus == null || saveStatus.equals("error")) { return ResponseEntity.ok(Map.of( @@ -458,7 +463,11 @@ public class ApiController { @RequestParam (required = false)String tamil_gender, @RequestParam (required = false)String tamil_present_district, @RequestParam String userId, - @RequestParam String vendor_req_id){ + @RequestParam String vendor_req_id, + @RequestParam Integer religion, + @RequestParam(required = false) Integer diff_type, + @RequestParam(required = false) String other_disability, + @RequestParam(required = false) String familyDetails){ String data = streetVendorService.logEntry(userId, vendor_req_id); @@ -511,7 +520,8 @@ public class ApiController { streetVendorPhotoPath, name, f_h_name, mobile_number,dob, gender, social_category, diff_abled, education_status, marital_status, no_of_fam_mem, are_any_fam_mem_invol_str,presentAddress, present_district, present_pincode, - rationCardPath,aadharFrontPhotoPath, aadharBackPhotoPath,aadharNo,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamilvending_category,userId,vendor_req_id); + rationCardPath,aadharFrontPhotoPath, aadharBackPhotoPath,aadharNo,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamilvending_category,userId,vendor_req_id, + religion,diff_type,other_disability,familyDetails); if(sts.equals("Error")) { return ResponseEntity.ok(Map.of( @@ -617,7 +627,13 @@ public class ApiController { return streetVendorService.ViewWardDropdown(zone); } - + + @GetMapping("/getrelationship") + public List> getrelationship() { + + return streetVendorService.fetchrelationship(); + + } } diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/CreateEventAPIController.java b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/CreateEventAPIController.java index 6c004c6..315f262 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/CreateEventAPIController.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/CreateEventAPIController.java @@ -208,5 +208,75 @@ public class CreateEventAPIController { return createventservices.finalvendorDetailsById(requestId); } + + @GetMapping("/getvendorforcertificate") + public List> getvendorforcertificate( + @RequestParam(required = false) String meeting, + @RequestParam(required = false) String status, + @RequestParam(required = false) String zone, + @RequestParam(required = false) String ward, + @RequestParam String userId) { + + return createventservices.getvendorforcertificate(zone,ward,meeting,status,userId); + + } + + @GetMapping("/getstreetsbyward") + public List> getstreetsbyward(String ward){ + + return createventservices.getstreetsbyward(ward); + } + + @PostMapping("/giveCertificate") + public ResponseEntity> giveCertificate( + + @RequestParam Integer vdid, + @RequestParam String zone, + @RequestParam String ward, + @RequestParam String street_id, + @RequestParam String street_name, + @RequestParam String cby) { + + Map response = new HashMap<>(); + + try { + + boolean status = createventservices.giveCertificate( + vdid, + zone, + ward, + street_id, + street_name, + cby); + if (status) { + + response.put("status", "success"); + response.put("message", "Certificate generated successfully."); + + } else { + + response.put("status", "error"); + response.put("message", "Unable to generate certificate."); + + } + + } catch (Exception e) { + + e.printStackTrace(); + + response.put("status", "error"); + response.put("message", "Something went wrong."); + + } + + return ResponseEntity.ok(response); + } + + @GetMapping("/getapprovedcertificates") + public List> getapprovedcertificates(String zone,String ward,String street_id){ + + return createventservices.getapprovedcertificates(zone,ward,street_id); + } + } diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/MainController.java b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/MainController.java index 98e83ac..9af4a2e 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/MainController.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/controller/MainController.java @@ -107,6 +107,11 @@ public class MainController { //System.out.println("educationList===="+educationList); model.addAttribute("educationList", educationList); + List> religionList=streetVendorService.fetchReligion(); + model.addAttribute("religionList", religionList); + + List> DiffAbledList=streetVendorService.fetchdifferently_abled(); + model.addAttribute("DiffAbledList", DiffAbledList); List>vendingCategories=streetVendorService.fetchvendingCategory(); @@ -184,6 +189,12 @@ public class MainController { List>educationList=streetVendorService.fetchEducationStatus(); model.addAttribute("educationList", educationList); + List> religionList=streetVendorService.fetchReligion(); + model.addAttribute("religionList", religionList); + + List> DiffAbledList=streetVendorService.fetchdifferently_abled(); + model.addAttribute("DiffAbledList", DiffAbledList); + List>vendingCategories=streetVendorService.fetchvendingCategory(); model.addAttribute("vendingCategories", vendingCategories); @@ -212,5 +223,23 @@ public class MainController { return "modules/vendors/certificate"; } + @GetMapping("/approvedcertificate") + public String viewapprovedcertificate(Model model) + { + String LoginUserId = LoginUserInfo.getLoginUserId(); + int userId = Integer.parseInt(LoginUserId); + model.addAttribute("LoginUserId",LoginUserId); + + String zone=streetVendorService.getloginUserZone(userId); + model.addAttribute("zone",zone); + //System.out.println("zone="+zone); + + String UserRole = LoginUserInfo.getUserRole(); + model.addAttribute("UserRole", UserRole); + + return "modules/vendors/approvedcertificates"; + } + + } diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/StreetVendorService.java b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/StreetVendorService.java index 4991c23..caa6504 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/StreetVendorService.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/StreetVendorService.java @@ -9,6 +9,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.security.SecureRandom; import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Types; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -31,6 +33,7 @@ import org.springframework.core.env.Environment; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; @@ -38,6 +41,9 @@ import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + @Service @@ -103,6 +109,34 @@ public class StreetVendorService { return jdbcTemplate.queryForList(query); } + + public List> fetchReligion() { + String query = "SELECT id,religion " + + "FROM religion_master " + + "WHERE is_active=1 AND is_delete=0 "; + + + return jdbcTemplate.queryForList(query); + } + + public List> fetchdifferently_abled() { + String query = "SELECT id,name " + + "FROM differently_abled_master " + + "WHERE is_active=1 AND is_delete=0 "; + + + return jdbcTemplate.queryForList(query); + } + + public List> fetchrelationship() { + String query = "SELECT id,name " + + "FROM relationship_master " + + "WHERE is_active=1 AND is_delete=0 "; + + + return jdbcTemplate.queryForList(query); + } + public List> fetchvendingCategory() { String query = "SELECT id,vending_category_name " + "FROM vending_category_master " + @@ -218,7 +252,8 @@ public class StreetVendorService { Integer education_status, Integer marital_status, Integer no_of_fam_mem, Boolean are_any_fam_mem_invol_str, String presentAddress, String present_district, Integer present_pincode, String rationCardPath, String aadharFrontPhotoPath, String aadharBackPhotoPath,String aadharNo,String userId,String tamil_name,String tamil_f_h_name,String tamil_landmark, - String tamil_gender,String tamil_present_district,@RequestParam Integer tamilvending_category) { + String tamil_gender,String tamil_present_district,@RequestParam Integer tamilvending_category, + Integer religion,Integer diff_type,String other_disability,String familyDetails) { int isWeb=1; String latitudeVal = (latitude != null && !latitude.trim().isEmpty()) ? latitude : null; @@ -227,7 +262,7 @@ public class StreetVendorService { String wardVal = (ward != null && !ward.trim().isEmpty()) ? ward : null; String dobVal = (dob != null && !dob.trim().isEmpty()) ? dob : null; String vendingAddressVal = (landmark != null && !landmark.trim().isEmpty()) ? landmark : null; - + String other_diff=(other_disability != null && !other_disability.trim().isEmpty()) ? other_disability : null; String sql = "INSERT INTO vendor_details (" @@ -235,8 +270,9 @@ public class StreetVendorService { + "bank_acc_status, bank_passbook, street_vendor_photo, name, f_h_name, mob_no, " + "dob,gender,social_category, diff_abled, education_status, marital_status,no_of_fam_mem, " + "are_any_fam_mem_invol_str_ven,present_address, present_district, present_pincode, ration_card_photo, aadhar_front_photo, " - + "aadhar_back_photo,aadhar_no,is_web,cby,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamil_vending_category " - + ") VALUES (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?)"; + + "aadhar_back_photo,aadhar_no,is_web,cby,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamil_vending_category, " + + "diff_type,other_disability,religion " + + ") VALUES (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; KeyHolder keyHolder = new GeneratedKeyHolder(); @@ -298,6 +334,10 @@ public class StreetVendorService { ps.setString(38, tamil_present_district); if (tamilvending_category != null) ps.setInt(39, tamilvending_category); else ps.setNull(39, java.sql.Types.INTEGER); + if (diff_type != null) ps.setInt(40, diff_type); + else ps.setNull(40, java.sql.Types.INTEGER); + ps.setString(41, other_diff); + ps.setInt(42,religion); return ps; }, keyHolder); //return keyHolder.getKey().intValue(); @@ -308,6 +348,55 @@ public class StreetVendorService { String updateSql = " UPDATE vendor_details SET vendor_req_id = ? WHERE id = ? "; jdbcTemplate.update(updateSql,refId, generatedId); + + if (familyDetails != null && !familyDetails.trim().isEmpty()) { + + ObjectMapper mapper = new ObjectMapper(); + + List> members = + mapper.readValue(familyDetails, + new TypeReference>>() {}); + + String familySql = + "INSERT INTO familymembers_details " + + "(vendor_req_id,name,age,relation,cby) " + + "VALUES (?,?,?,?,?)"; + + jdbcTemplate.batchUpdate(familySql, new BatchPreparedStatementSetter() { + + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + + Map member = members.get(i); + + ps.setString(1, refId); + + ps.setString(2, + member.get("name") == null ? null : + member.get("name").toString()); + + if (member.get("age") != null) + ps.setInt(3, + Integer.parseInt(member.get("age").toString())); + else + ps.setNull(3, Types.INTEGER); + + if (member.get("relationship") != null) + ps.setInt(4, + Integer.parseInt(member.get("relationship").toString())); + else + ps.setNull(4, Types.INTEGER); + + ps.setString(5, userId); + } + + @Override + public int getBatchSize() { + return members.size(); + } + }); + } + return refId; } //return "error"; @@ -442,15 +531,37 @@ public class StreetVendorService { "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', vd.ration_card_photo) AS view_ration_card_photo, " + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', vd.street_vendor_photo) AS view_street_vendor_photo, " + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', vd.aadhar_front_photo) AS view_aadhar_front_photo, " + - "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', vd.aadhar_back_photo) AS view_aadhar_back_photo " + "CONCAT('" + fileBaseUrl + "/gccofficialapp/files', vd.aadhar_back_photo) AS view_aadhar_back_photo, "+ + " rm.religion as religion_name,dam.name as diff_name " + "FROM vendor_details vd " + "LEFT JOIN social_category_master scm on vd.social_category = scm.id " + "LEFT JOIN vending_category_master vcm ON vd.vending_category=vcm.id " + "LEFT JOIN education_master em on vd.education_status = em.id " + "LEFT JOIN marital_status_master mm on vd.marital_status = mm.id " + + "LEFT JOIN religion_master rm on rm.id=vd.religion " + + "LEFT JOIN differently_abled_master dam on dam.id=vd.diff_type " + "WHERE vd.vendor_req_id = ?"; - return jdbcTemplate.queryForList(sql,requestId); + List> vendorList = jdbcTemplate.queryForList(sql, requestId); + + if (!vendorList.isEmpty()) { + + String familySql = + "SELECT fm.id, fm.name, fm.age, fm.relation, " + + "rm.name AS relation_name " + + "FROM familymembers_details fm " + + "LEFT JOIN relationship_master rm ON rm.id = fm.relation " + + "WHERE fm.vendor_req_id = ? " + + "AND fm.isactive = 1 " + + "AND fm.isdelete = 0"; + + List> familyMembers = + jdbcTemplate.queryForList(familySql, requestId); + + vendorList.get(0).put("familymembers_details", familyMembers); + } + + return vendorList; } @@ -461,7 +572,8 @@ public class StreetVendorService { Integer social_category, Boolean diff_abled, Integer education_status, Integer marital_status, Integer no_of_fam_mem, Boolean are_any_fam_mem_invol_str, String presentAddress, String present_district, Integer present_pincode, String rationCardPath, String aadharFrontPhotoPath, String aadharBackPhotoPath, - String aadharNo,String tamil_name,String tamil_f_h_name, String tamil_landmark,String tamil_gender,String tamil_present_district,Integer tamilvending_category, String userId, String vendor_req_id) { + String aadharNo,String tamil_name,String tamil_f_h_name, String tamil_landmark,String tamil_gender,String tamil_present_district,Integer tamilvending_category, String userId, String vendor_req_id, + Integer religion,Integer diff_type,String other_disability,String familyDetails) { String latitudeVal = (latitude != null && !latitude.trim().isEmpty()) ? latitude : null; @@ -470,27 +582,67 @@ public class StreetVendorService { String wardVal = (ward != null && !ward.trim().isEmpty()) ? ward : null; String dobVal = (dob != null && !dob.trim().isEmpty()) ? dob : null; String vendingAddressVal = (landmark != null && !landmark.trim().isEmpty()) ? landmark : null; + String otherDiff = (other_disability != null && !other_disability.trim().isEmpty()) ? other_disability : null; String sql="UPDATE vendor_details SET " + "latitude =?,longitude=?,zone=?, ward=?, vending_address=?,vending_district=?, vending_pincode=?, vending_category=?, vending_space=?, pm_svanidhi_loan=?, " + "bank_acc_status=?, bank_passbook=?, street_vendor_photo=?, name=?, f_h_name=?, mob_no=?, " + "dob=?,gender=?,social_category=?, diff_abled=?, education_status=?, marital_status=?,no_of_fam_mem=?, " + "are_any_fam_mem_invol_str_ven=?,present_address=?, present_district=?, present_pincode=?, ration_card_photo=?, aadhar_front_photo=?, " - + "aadhar_back_photo=?,aadhar_no=?,updated_date=NOW(),tamil_name=?,tamil_f_h_name=?,tamil_landmark=?,tamil_gender=?,tamil_present_district=?,tamil_vending_category=?,edit_by=? " + + "aadhar_back_photo=?,aadhar_no=?,updated_date=NOW(),tamil_name=?,tamil_f_h_name=?,tamil_landmark=?,tamil_gender=?,tamil_present_district=?,tamil_vending_category=?,edit_by=?, " + + "religion=?,diff_type=?,other_disability=? " + " WHERE vendor_req_id = ? AND editable=1"; - //AND is_web=1 + try { int rows=jdbcTemplate.update(sql, latitudeVal, longitudeVal, zoneVal, wardVal, vendingAddressVal, vending_district, vending_pincode, vending_category, vending_space, pm_svanidhi_loan, bank_acc_status, bankPassbookPath, streetVendorPhotoPath, name, f_h_name, mobile_number, dobVal, gender, social_category, diff_abled, education_status, marital_status, no_of_fam_mem, are_any_fam_mem_invol_str, presentAddress, present_district, present_pincode, rationCardPath, aadharFrontPhotoPath, aadharBackPhotoPath, aadharNo, - tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamilvending_category,userId, + tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamilvending_category,userId,religion,diff_type,otherDiff, vendor_req_id); - if (rows==1) { - return "Success"; + if (rows == 1) { + + // Step 1 - Deactivate old family members + String deactivateSql = + "UPDATE familymembers_details " + + "SET isactive = 0, isdelete = 1 " + + "WHERE vendor_req_id = ? " + + "AND isactive = 1 " + + "AND isdelete = 0"; + + jdbcTemplate.update(deactivateSql, vendor_req_id); + + // Step 2 - Insert latest family members + if (familyDetails != null && !familyDetails.trim().isEmpty()) { + + ObjectMapper mapper = new ObjectMapper(); + + List> members = + mapper.readValue(familyDetails, + new TypeReference>>() {}); + + String insertSql = + "INSERT INTO familymembers_details " + + "(vendor_req_id, name, age, relation, cby) " + + "VALUES (?, ?, ?, ?, ?)"; + + for (Map member : members) { + + jdbcTemplate.update( + insertSql, + vendor_req_id, + member.get("name"), + member.get("age"), + member.get("relationship"), + userId + ); + } + } + + return "Success"; } else { return "Error"; @@ -504,8 +656,8 @@ public class StreetVendorService { public String logEntry(String userId, String vendor_req_id) { - String sql="INSERT INTO vendor_details_web_log (name,f_h_name,gender,dob,social_category,diff_abled,mob_no,aadhar_no,present_address,present_district,present_pincode,vending_address,vending_district,vending_pincode,vending_category,vending_space,bank_acc_status,bank_passbook,ration_card_photo,street_vendor_photo,aadhar_front_photo,aadhar_back_photo,zone,ward,pm_svanidhi_loan,vendor_req_id,education_status,marital_status,no_of_fam_mem,are_any_fam_mem_invol_str_ven,latitude,longitude,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamil_vending_category,cby) " - + " SELECT name,f_h_name,gender,dob,social_category,diff_abled,mob_no,aadhar_no,present_address,present_district,present_pincode,vending_address,vending_district,vending_pincode,vending_category,vending_space,bank_acc_status,bank_passbook,ration_card_photo,street_vendor_photo,aadhar_front_photo,aadhar_back_photo,zone,ward,pm_svanidhi_loan,vendor_req_id,education_status,marital_status,no_of_fam_mem,are_any_fam_mem_invol_str_ven,latitude,longitude,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamil_vending_category,? FROM vendor_details WHERE vendor_req_id=?"; + String sql="INSERT INTO vendor_details_web_log (name,f_h_name,gender,dob,social_category,diff_abled,mob_no,aadhar_no,present_address,present_district,present_pincode,vending_address,vending_district,vending_pincode,vending_category,vending_space,bank_acc_status,bank_passbook,ration_card_photo,street_vendor_photo,aadhar_front_photo,aadhar_back_photo,zone,ward,pm_svanidhi_loan,vendor_req_id,education_status,marital_status,no_of_fam_mem,are_any_fam_mem_invol_str_ven,latitude,longitude,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamil_vending_category,diff_type,other_disability,religion,cby) " + + " SELECT name,f_h_name,gender,dob,social_category,diff_abled,mob_no,aadhar_no,present_address,present_district,present_pincode,vending_address,vending_district,vending_pincode,vending_category,vending_space,bank_acc_status,bank_passbook,ration_card_photo,street_vendor_photo,aadhar_front_photo,aadhar_back_photo,zone,ward,pm_svanidhi_loan,vendor_req_id,education_status,marital_status,no_of_fam_mem,are_any_fam_mem_invol_str_ven,latitude,longitude,tamil_name,tamil_f_h_name,tamil_landmark,tamil_gender,tamil_present_district,tamil_vending_category,diff_type,other_disability,religion,? FROM vendor_details WHERE vendor_req_id=?"; try { jdbcTemplate.update(sql, userId,vendor_req_id); @@ -574,8 +726,10 @@ public class StreetVendorService { public List> vendorDetailsById(String requestId) { - String sql = "SELECT vd.id,vd.vendor_req_id, vd.name, vd.mob_no, vd.dob, vd.gender, vd.diff_abled, vd.f_h_name, scm.category_name, " + + String sql = "SELECT vd.id,vd.vendor_req_id, vd.name, vd.mob_no, date_format(vd.dob,'%d-%m-%Y') as dob_format, vd.gender, vd.diff_abled, vd.f_h_name, scm.category_name, " + + " rm.religion as religion_name,dam.name as diff_name,vd.other_disability,vd.no_of_fam_mem, " + "CONCAT_WS(', ', vd.present_address, vd.present_district, vd.present_pincode) AS residental_address, " + + "vd.tamil_name,vd.tamil_f_h_name,vd.tamil_landmark,vd.tamil_gender,vd.tamil_present_district,tvcm.tamil_vending_category_name as tamil_vending_category_name,vd.aadhar_no as aadhar_no, "+ "CONCAT_WS(', ', vd.vending_address, vd.vending_district, vd.vending_pincode) AS business_address, vd.bank_acc_status, " + "ifnull(CONCAT('" + fileBaseUrl + "/gccofficialapp/files',vd.bank_passbook),'') as bank_passbook, " + "ifnull(CONCAT('" + fileBaseUrl + "/gccofficialapp/files',vd.ration_card_photo),'') as ration_card_photo, " + @@ -596,14 +750,40 @@ public class StreetVendorService { "LEFT JOIN education_master em on em.id= vd.education_status " + "LEFT JOIN marital_status_master msm on msm.id= vd.marital_status " + "LEFT JOIN social_category_master scm on vd.social_category = scm.id " + - "LEFT JOIN vending_category_master vcm ON vd.vending_category=vcm.id " + + "LEFT JOIN vending_category_master vcm ON vd.vending_category=vcm.id " + + "LEFT JOIN tamil_vending_category_master tvcm ON vd.tamil_vending_category=tvcm.id " + "LEFT JOIN vending_time_master vtm on va1.vendor_timing_id = vtm.id " + "LEFT JOIN transaction_mode_master tmm on va1.transaction_mode_id = tmm.id " + "LEFT JOIN vending_type_master vtym ON va1.vendor_type = vtym.typeid " + "LEFT JOIN vending_sub_type_master vstym ON va1.vendor_sub_type = vstym.subtypeid " + + "LEFT JOIN religion_master rm on rm.id=vd.religion " + + "LEFT JOIN differently_abled_master dam on dam.id=vd.diff_type " + "WHERE vd.id = ? "; - return jdbcTemplate.queryForList(sql, requestId); + + List> vendorList = jdbcTemplate.queryForList(sql, requestId); + + if (!vendorList.isEmpty()) { + + String vendorReqId = (String) vendorList.get(0).get("vendor_req_id"); + + String familySql = + "SELECT fm.id, fm.name, fm.age, fm.relation, " + + "rm.name AS relation_name " + + "FROM familymembers_details fm " + + "LEFT JOIN relationship_master rm ON rm.id = fm.relation " + + "WHERE fm.vendor_req_id = ? " + + "AND fm.isactive = 1 " + + "AND fm.isdelete = 0"; + + List> familyMembers = + jdbcTemplate.queryForList(familySql, vendorReqId); + + vendorList.get(0).put("familymembers_details", familyMembers); + } + + return vendorList; + } diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/createventService.java b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/createventService.java index 2b8056f..0a35699 100644 --- a/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/createventService.java +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/vendor/service/createventService.java @@ -30,11 +30,18 @@ import org.springframework.transaction.annotation.Transactional; public class createventService { private JdbcTemplate jdbcTemplate; + + private JdbcTemplate strjdbcTemplate; @Autowired public void setDataSource(@Qualifier("mysqlVendingCommitteDataSource") DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } + + @Autowired + public void setDataSource2(@Qualifier("mysqlGccStreetVendorDataSource") DataSource dataSource) { + this.strjdbcTemplate = new JdbcTemplate(dataSource); + } @Autowired public StreetVendorService streetVendorService; @@ -181,10 +188,16 @@ public class createventService { * ============================================================ */ if ("Approved".equalsIgnoreCase(status)) { + + Integer expiryYears = jdbcTemplate.queryForObject( + "SELECT idcard_expire_year FROM info_details WHERE isactive = 1 AND isdelete=0 LIMIT 1", + Integer.class + ); + String currentYear = java.time.Year.now().toString(); String uid_no = zone + "_" + ward + "_" + currentYear + "_" + generatedId; - jdbcTemplate.update("UPDATE vendor_request_list SET uid_no=? WHERE id=?", uid_no, generatedId); + jdbcTemplate.update("UPDATE vendor_request_list SET uid_no=?, expire_date = DATE_ADD(CURDATE(), INTERVAL ? YEAR) WHERE id=?", uid_no,expiryYears, generatedId); } /* @@ -206,12 +219,10 @@ public class createventService { * Send WhatsApp notification * ============================================================ */ - String result = sendWhatsappMsg(mob_no, status, vendor_req_number); + sendWhatsappMsg(mob_no, status, vendor_req_number); response.put("status", "success"); - response.put("message", result.equals("200") - ? "Details submitted successfully!" - : "Details submitted, but WhatsApp msg failed."); + response.put("message","Details submitted successfully!"); return ResponseEntity.ok(response); @@ -612,6 +623,19 @@ public class createventService { return Collections.emptyList(); } } + + public List> getCertificateDetails(String vendorReqId) { + + String sql = + "SELECT id, zone, ward, street_id, street_name, " + + "status, cby, DATE_FORMAT(cdate,'%d-%m-%Y %h:%i %p') AS cdate " + + "FROM vending_certificate " + + "WHERE vdid = ? " + + "AND isactive = 1 " + + "AND isdelete = 0"; + + return jdbcTemplate.queryForList(sql, vendorReqId); + } public List> finalvendorDetailsById(String requestId) { @@ -623,6 +647,13 @@ public class createventService { } Map base = org_list.get(0); + + // Add certificate details + List> certificateDetails = + getCertificateDetails(requestId); + + base.put("certificate_details", certificateDetails); + // Get full request history (multiple rows) List> historyList = getvendingfinaldata(requestId); @@ -644,25 +675,26 @@ public class createventService { String sql = "SELECT all_logs.vdid, " + " all_logs.vc_status, " + " all_logs.vc_remarks, " + + " all_logs.uid_no, " + " CONCAT_WS('- ', ce.event_name, DATE_FORMAT(ce.event_date, '%d-%m-%Y')) AS event_name, " + " DATE_FORMAT(all_logs.cdate, '%d-%m-%Y %l:%i %p') AS vc_Inspection_date " + "FROM (" + - " SELECT vrl.vdid, vrl.status AS vc_status, vrl.remarks AS vc_remarks, " + + " SELECT vrl.vdid, vrl.status AS vc_status, vrl.remarks AS vc_remarks,vrl.uid_no as uid_no, " + " vrl.event_req_id, vrl.cdate " + " FROM vendor_request_list vrl " + " WHERE vrl.vdid = ? AND vrl.isactive = 1 " + " UNION ALL " + - " SELECT vpl.vdid, vpl.status AS vc_status, vpl.remarks AS vc_remarks, " + + " SELECT vpl.vdid, vpl.status AS vc_status, vpl.remarks AS vc_remarks,NULL, " + " vpl.event_req_id, vpl.cdate " + " FROM vendor_postponed_list vpl " + " WHERE vpl.vdid = ? AND vpl.isactive = 1 " + " UNION ALL " + - " SELECT phl.vdid, phl.status AS vc_status, phl.remarks AS vc_remarks, " + + " SELECT phl.vdid, phl.status AS vc_status, phl.remarks AS vc_remarks,NULL, " + " phl.event_req_id, phl.cdate " + " FROM postponed_history_log phl " + " WHERE phl.vdid = ? " + @@ -726,4 +758,154 @@ public class createventService { return result; } + public List> getvendorforcertificate(String zone, String ward, String meeting, String status, String userId) { + + StringBuilder sql = new StringBuilder( + " SELECT vd.id,vd.name,vd.vendor_req_id,vd.zone,vd.ward,vd.mob_no,vrl.status,vrl.uid_no " + + "FROM gcc_street_vendor.vendor_details vd " + + "JOIN vendingcommitte.vendor_request_list vrl ON vrl.vdid=vd.id " + + "WHERE vrl.status='Approved' AND vrl.isactive=1 AND vrl.isdelete=0 AND vd.isactive=1 " + + "AND NOT EXISTS ( " + + "SELECT 1 " + + "FROM vending_certificate vc " + + "WHERE vc.vdid = vrl.vdid " + + "AND vc.isactive = 1 " + + "AND vc.isdelete = 0 " + + ") " + ); + + List params = new ArrayList<>(); + + // Add zone if not empty + if (zone != null && !zone.trim().isEmpty()) { + sql.append(" AND vd.zone = ?"); + params.add(zone); + } + + // Add ward if not empty + if (ward != null && !ward.trim().isEmpty()) { + sql.append(" AND vd.ward = ?"); + params.add(ward); + } + + if (meeting != null && !meeting.trim().isEmpty()) { + sql.append(" AND vrl.event_req_id = ?"); + params.add(Integer.parseInt(meeting)); + } + + sql.append(" AND vrl.cby = ?"); + params.add(Integer.parseInt(userId)); + + try { + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } + + public List> getstreetsbyward(String ward) { + + String sql="SELECT zone,ward,area,location,streetid,street FROM erp_street_master WHERE ward=? AND is_active=1 AND is_delete=0"; + + try { + return jdbcTemplate.queryForList(sql, ward); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } + + + public boolean giveCertificate(Integer vdid, + String zone, + String ward, + String street_id, + String street_name, + String cby) { + + Integer expiryYears = jdbcTemplate.queryForObject( + "SELECT certificate_expire_year FROM info_details WHERE isactive = 1 AND isdelete=0 LIMIT 1", + Integer.class + ); + + + String sql = + "INSERT INTO vending_certificate " + + "(vdid, zone, ward, street_id, street_name, status, cby, expire_date) " + + "VALUES (?, ?, ?, ?, ?, 'Approved', ?, DATE_ADD(CURDATE(), INTERVAL ? YEAR))"; + + try { + + int rows = jdbcTemplate.update( + sql, + vdid, + zone, + ward, + street_id, + street_name, + cby, + expiryYears + ); + + return rows > 0; + + } catch (Exception e) { + + e.printStackTrace(); + return false; + + } + + } + + public List> getapprovedcertificates(String zone, String ward, String street_id) { + + StringBuilder sql = new StringBuilder( + "SELECT " + + "vd.id, " + + "vd.name, " + + "vd.vendor_req_id, " + + "vc.zone, " + + "vc.ward, " + + "vd.mob_no, " + + "vc.status as certificate_status, " + + "vc.street_id, " + + "vc.street_name " + + "FROM gcc_street_vendor.vendor_details vd " + + "JOIN vendingcommitte.vending_certificate vc ON vc.vdid = vd.id " + + "WHERE vc.status = 'Approved' " + + "AND vc.isactive = 1 " + + "AND vc.isdelete = 0 " + + "AND vd.isactive = 1 " + ); + + List params = new ArrayList<>(); + + if (zone != null && !zone.trim().isEmpty()) { + sql.append(" AND vc.zone = ?"); + params.add(zone); + } + + if (ward != null && !ward.trim().isEmpty()) { + sql.append(" AND vc.ward = ?"); + params.add(ward); + } + + if (street_id != null && !street_id.trim().isEmpty()) { + sql.append(" AND vc.street_id = ?"); + params.add(street_id); + } + + sql.append(" ORDER BY vc.zone, vc.ward, vc.street_name, vd.name"); + + try { + return jdbcTemplate.queryForList(sql.toString(), params.toArray()); + } catch (Exception e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } + + } diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties index e6efdd2..c188cc6 100644 --- a/src/main/resources/application-local.properties +++ b/src/main/resources/application-local.properties @@ -1,3 +1,4 @@ assets.base-url=/assets/ + fileBaseUrl=http://localhost:8064 diff --git a/src/main/resources/templates/modules/callcenterqaqc/socialmediaregcompclosing.html b/src/main/resources/templates/modules/callcenterqaqc/socialmediaregcompclosing.html index dc1385b..c54da6c 100644 --- a/src/main/resources/templates/modules/callcenterqaqc/socialmediaregcompclosing.html +++ b/src/main/resources/templates/modules/callcenterqaqc/socialmediaregcompclosing.html @@ -397,12 +397,73 @@ }); $(document).on('click', '.btn-info', function () { - const complaintNumber = $(this).data('complaint-number'); + + const complaintNumber = $(this).data('complaint-number'); const remarks = $(this).data('remarks'); const imgFullPath = $(this).data('img'); - viewDetails(complaintNumber, remarks, imgFullPath); - }); + $('#pageLoader').show(); + $.ajax({ + url: '/gcc/api/callcenterqaqc/socialmedia/getcompstatus', + type: 'GET', + data: { + complaintNumber: complaintNumber + }, + success: function (response) { + $('#pageLoader').hide(); + + if (response.status === "success") { + + // Status not changed, continue + viewDetails(complaintNumber, remarks, imgFullPath); + + } else if (response.status === "changed") { + + Swal.fire({ + allowOutsideClick: false, + allowEscapeKey: false, + allowEnterKey: false, + icon: 'warning', + title: 'Notice', + text: response.message, + confirmButtonText: 'OK' + }).then((result) => { + if (result.isConfirmed) { + location.reload(); + } + }); + + } else if (response.status === "error") { + + Swal.fire({ + icon: 'error', + title: 'Error', + text: response.message + }); + + } else { + + Swal.fire({ + icon: 'error', + title: 'Error', + text: 'Unexpected response from server.' + }); + + } + }, + error: function (xhr, status, error) { + $('#pageLoader').hide(); + Swal.fire({ + icon: 'error', + title: 'Error', + text: 'Failed to communicate with the server.' + }); + + console.error(error); + } + }); + + }); function viewDetails(complaintNumber, remarks, imgFullPath) { document.getElementById('modalBody').innerHTML = '

Please wait, loading data...

'; diff --git a/src/main/resources/templates/modules/vendors/EventList.html b/src/main/resources/templates/modules/vendors/EventList.html index ab44294..a0077af 100644 --- a/src/main/resources/templates/modules/vendors/EventList.html +++ b/src/main/resources/templates/modules/vendors/EventList.html @@ -124,7 +124,7 @@
- + + + + + +
+ +
+ + +
+ + +
+ + + +
+ + +
+ + + + +
+ + + + + + + +
+
+
+ Certificate Approved List +
+
+
+ + + + + + + + + + + + + + + + + +
S.NoZoneWardVendor NameMobile NumberStreetView
+
+
+
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + diff --git a/src/main/resources/templates/modules/vendors/certificate.html b/src/main/resources/templates/modules/vendors/certificate.html index 16eaaee..3b0e933 100644 --- a/src/main/resources/templates/modules/vendors/certificate.html +++ b/src/main/resources/templates/modules/vendors/certificate.html @@ -59,6 +59,70 @@ .comment hr { border-top: 1px solid #ccc; } + + .certificate{ + background:#fff; + border:2px solid #000; + padding:25px; + font-family:'Times New Roman', serif; +} + +.certificate table{ + margin-top:15px; +} + +.certificate table th{ + width:35%; + background:#f4f4f4; + font-weight:bold; + vertical-align:middle; +} + +.certificate table td{ + vertical-align:middle; +} + +.certificate h4{ + margin-bottom:5px; + color: green; +} + +.certificate h5{ + margin-bottom:5px; + color: blue; +} + +.certificate .sub-content{ + font-size: medium; + +} +.green-row td{ + border:2px solid green !important; +} +.certificate table{ + width:100%; + table-layout:fixed; + border-collapse:collapse; +} + +.certificate table td, +.certificate table th{ + word-wrap:break-word; + vertical-align:middle; +} +#certificateStreet + .select2-container{ + width:100% !important; +} + +.select2-selection{ + overflow:hidden; +} + +.select2-selection__rendered{ + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; +} @@ -82,7 +146,7 @@
Vending Certificate
- Vending Committe + Vending Committee
@@ -170,7 +234,9 @@ Public Name Mobile ID Status + UID Number View Details + Certificate @@ -222,6 +288,28 @@ + + + +