From 78f77049b2f48606f63155ccfd9872f5dd0776c5 Mon Sep 17 00:00:00 2001 From: Balaji <104271023+tbalaji0001@users.noreply.github.com> Date: Mon, 18 Mar 2024 09:39:13 +0530 Subject: [PATCH] New Mayor Petition Module Mayor Petition module added. --- .../m_petition/controller/APIController.java | 156 ++++ .../m_petition/controller/MainController.java | 130 +++ .../m_petition/controller/package-info.java | 1 + .../m_petition/data/ComplaintType.java | 21 + .../m_petition/data/package-info.java | 1 + .../m_petition/entity/package-info.java | 1 + .../gccoffice/m_petition/package-info.java | 7 + .../m_petition/repository/package-info.java | 1 + .../m_petition/service/Petition.java | 671 ++++++++++++++++ .../m_petition/service/PetitionMaster.java | 58 ++ .../m_petition/service/package-info.java | 1 + .../modules/m_petition/modal-box.html | 116 +++ .../m_petition/petition_view_script.html | 291 +++++++ .../fragments/modules/m_petition/script.html | 360 +++++++++ .../modules/m_petition/search_form.html | 19 + .../modules/m_petition/complaint_list.html | 750 +++++++++++++++++ .../modules/m_petition/new_petition.html | 301 +++++++ .../modules/m_petition/petition_ack.html | 237 ++++++ .../modules/m_petition/petition_list.html | 282 +++++++ .../m_petition/petition_not_mapped_list.html | 267 ++++++ .../modules/m_petition/petition_update.html | 758 ++++++++++++++++++ .../modules/m_petition/petition_view.html | 158 ++++ .../m_petition/petition_view_modal_page.html | 108 +++ 23 files changed, 4695 insertions(+) create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/APIController.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/MainController.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/package-info.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/ComplaintType.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/package-info.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/entity/package-info.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/package-info.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/repository/package-info.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/Petition.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/PetitionMaster.java create mode 100644 src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/package-info.java create mode 100644 src/main/resources/templates/fragments/modules/m_petition/modal-box.html create mode 100644 src/main/resources/templates/fragments/modules/m_petition/petition_view_script.html create mode 100644 src/main/resources/templates/fragments/modules/m_petition/script.html create mode 100644 src/main/resources/templates/fragments/modules/m_petition/search_form.html create mode 100644 src/main/resources/templates/modules/m_petition/complaint_list.html create mode 100644 src/main/resources/templates/modules/m_petition/new_petition.html create mode 100644 src/main/resources/templates/modules/m_petition/petition_ack.html create mode 100644 src/main/resources/templates/modules/m_petition/petition_list.html create mode 100644 src/main/resources/templates/modules/m_petition/petition_not_mapped_list.html create mode 100644 src/main/resources/templates/modules/m_petition/petition_update.html create mode 100644 src/main/resources/templates/modules/m_petition/petition_view.html create mode 100644 src/main/resources/templates/modules/m_petition/petition_view_modal_page.html diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/APIController.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/APIController.java new file mode 100644 index 0000000..6653c96 --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/APIController.java @@ -0,0 +1,156 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import in.gov.chennaicorporation.gccoffice.m_petition.service.Petition; +import in.gov.chennaicorporation.gccoffice.m_petition.service.PetitionMaster; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + +@RequestMapping("gcc/api/m_petition") +@RestController("mpRest") // Mayor Petition Rest +public class APIController { + private PetitionMaster petitionMaster; + private Petition petition; + + @Autowired + public APIController(PetitionMaster petitionMaster,Petition petition) { + this.petitionMaster = petitionMaster; + this.petition = petition; + } + + @GetMapping(value="/getComplaintTypes") + public List getComplaintTypeList() { + return petitionMaster.getComplaintType(); + } + + @GetMapping(value="/getOfficerList") + public List getOfficerList() { + return petitionMaster.getOfficerList(); + } + + @GetMapping(value="/getPetitionTypes") + public List getPetitionTypes() { + return petitionMaster.getPetitionTypes(); + } + + @GetMapping(value="/getPetitionList") + public List getPetitionList() { + return petition.getPetitionList(); + } + + @GetMapping(value="/getUnmapPetitionList") + public List getUnmapPetitionList() { + return petition.getUnmapPetitionList(); + } + + @GetMapping(value="/getPetitionDetails") + public List getPetitionDetails(@RequestParam("petitionNo") String petitionNo) { + return petition.getPetitionDetails(petitionNo); + } + + @PostMapping(value="/savePetition") + public String savePetition( + @RequestParam("createdBy") String createdBy, + @RequestParam("petitionType") String petitionType, + @RequestParam("petitionerName") String petitionerName, + @RequestParam("petitionerMobile") String petitionerMobile, + @RequestParam("complaintType") String petitionerComplaint, + @RequestParam("san_page1") MultipartFile page1, + @RequestParam("san_page2") MultipartFile page2, + @RequestParam("san_page3") MultipartFile page3, + @RequestParam("san_page4") MultipartFile page4) { + + return petition.savePetition(petitionType, createdBy, petitionerName, petitionerMobile, petitionerComplaint, page1, page2, page3, page4); + } + + @PostMapping(value="/updatePetition") + public Boolean updatePetition( + @RequestParam("petitionType") String petitionType, + @RequestParam("petitionNo") String petitionNo, + @RequestParam("createdBy") String createdBy, + @RequestParam("petitionerName") String petitionerName, + @RequestParam("petitionerMobile") String petitionerMobile, + @RequestParam("petitionerAddress") String petitionerAddress, + @RequestParam("petitionerPincode") String petitionerPincode, + @RequestParam("complaintType") String petitionerComplaint, + @RequestParam("complaintNature") String complaintNature) { + + return petition.updatePetition(petitionNo, petitionType, createdBy, petitionerName, petitionerMobile, petitionerAddress, petitionerPincode, petitionerComplaint, complaintNature); + } + + @PostMapping(value="/mapComplientToOfficer") + public Boolean updatePetition( + @RequestParam("petitionId") String petitionId, + @RequestParam("petitionNo") String petitionNo, + @RequestParam("createdBy") String createdBy, + @RequestParam(value = "", required = false) String mapOfficers) { + + String com_mapping = mapOfficers; + + // First before Mapping need to unmaps old list + petition.unmapComplient(petitionId, petitionNo); + + if(com_mapping!=null) { + String[] com_mapping_parts = com_mapping.split(","); + for (String values : com_mapping_parts) { + String[] com_mapping_val = values.split("_"); + if (com_mapping_val.length > 0) { + String complientId = com_mapping_val[0]; + String offcierId = com_mapping_val[1]; + petition.mapComplientToOfficer(createdBy, petitionId, petitionNo, complientId, offcierId); + } + } + } + return true; + } + + + @GetMapping(value="/getComplaintMappingDetails") + public List getComplaintMappingDetails( + @RequestParam("petitionId") String petitionId, + @RequestParam("petitionNo") String petitionNo, + @RequestParam("complaintTypeId") String complaintTypeId) { + return petition.getComplaintMappingDetails(petitionNo,petitionId,complaintTypeId); + } + + @GetMapping(value="/getComplaintList") + public List getComplaintList() { + return petition.getComplaintList(); + } + + @GetMapping(value="/getComplaintListByPetitionId") + public List getComplaintList(@RequestParam("petitionId") String petitionId) { + return petition.getComplaintListByPetitionId(petitionId); + } + + @GetMapping(value="/getComplaintDetails") + public List getComplaintDetails(@RequestParam("mapId") String mapId) { + return petition.getComplaintDetails(mapId); + } + + @GetMapping(value="/getComplaintActionDetails") + public List getComplaintActionDetails(@RequestParam("mapId") String mapId) { + return petition.getComplaintActionDetails(mapId); + } + + @PostMapping(value="/saveComplanitStatus") + public String saveComplanitStatus( + @RequestParam("createdBy") String createdBy, + @RequestParam("mapId") String mapId, + @RequestParam("complaintStatus") String complaintStatus, + @RequestParam("complaintActionText") String complaintActionText, + @RequestParam("action_san_page1") MultipartFile actionPage1, + @RequestParam("petitionId") String petitionId, + @RequestParam("petitionNo") String petitionNo) { + + return petition.saveComplanitStatus(createdBy, mapId, complaintStatus, complaintActionText, actionPage1, petitionId, petitionNo); + } +} diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/MainController.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/MainController.java new file mode 100644 index 0000000..5030f46 --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/MainController.java @@ -0,0 +1,130 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.controller; + +import org.hibernate.hql.internal.ast.tree.RestrictableStatement; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.client.RestTemplate; + +import in.gov.chennaicorporation.gccoffice.service.Base64Util; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + +@RequestMapping("/gcc/m_petition") +@Controller("MayorPetitionController") +public class MainController { + private final RestTemplate restTemplate; + private String BasePath = "modules/m_petition/"; + @Autowired + public MainController(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + @GetMapping({"", "/", "/index", "/dashboard"}) + public String dashboard(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + return BasePath+"index"; + } + + @GetMapping({"/new_petition"}) + public String newPetition(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + return BasePath+"new_petition"; + } + + @GetMapping("/petition-ack/{petitionNo}") + public String petitionAck(Model model,@PathVariable("petitionNo") String petitionNo) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + model.addAttribute("petitionNo",petitionNo); + return BasePath+"petition_ack"; + } + + @GetMapping("/petition-list") + public String petitionList(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + return BasePath+"petition_list"; + } + + @GetMapping("/unmapped-petition-list") + public String unMappedPetitionList(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + return BasePath+"petition_not_mapped_list"; + } + + @GetMapping("/update-petition") + public String petitionUpadte(Model model,@RequestParam(value="petitionNo", required = false) String petitionNo) { + + if (petitionNo != null && !petitionNo.isEmpty()) { + // Decrypt the encrypted value + petitionNo = Base64Util.decodeBase64(petitionNo); + } + else { + petitionNo = null; + } + + + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + model.addAttribute("petitionNo",petitionNo); + return BasePath+"petition_update"; + } + + @GetMapping("/view-petition") + public String petitionView(Model model,@RequestParam(value="petitionNo", required = false) String petitionNo) { + + if (petitionNo != null && !petitionNo.isEmpty()) { + // Decrypt the encrypted value + petitionNo = Base64Util.decodeBase64(petitionNo); + } + else { + petitionNo = null; + } + + + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + model.addAttribute("petitionNo",petitionNo); + return BasePath+"petition_view"; + } + + @GetMapping("/view-petition-modal") + public String petitionViewModal(Model model,@RequestParam(value="petitionNo", required = false) String petitionNo) { + + if (petitionNo != null && !petitionNo.isEmpty()) { + // Decrypt the encrypted value + petitionNo = Base64Util.decodeBase64(petitionNo); + } + else { + petitionNo = null; + } + + + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + model.addAttribute("petitionNo",petitionNo); + return BasePath+"petition_view_modal_page"; + } + + @GetMapping("/search-petition") + public String petitionSearch(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + //model.addAttribute("petitionNo",petitionNo); + return BasePath+"petition_update"; + } + + @GetMapping("/complaint-list") + public String complaintList(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId",LoginUserId); + return BasePath+"complaint_list"; + } +} diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/package-info.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/package-info.java new file mode 100644 index 0000000..26006d9 --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/controller/package-info.java @@ -0,0 +1 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.controller; \ No newline at end of file diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/ComplaintType.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/ComplaintType.java new file mode 100644 index 0000000..d05aa6c --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/ComplaintType.java @@ -0,0 +1,21 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.data; + +import java.util.Map; + +public class ComplaintType { + private int complaintTypeId; + private String complaintType; + + public ComplaintType(Map map) { + this.complaintTypeId = (int) map.get("complaint_typeid"); + this.complaintType = (String) map.get("complaint_type"); + } + + public int getComplaintTypeId() { + return complaintTypeId; + } + + public String getComplaintType() { + return complaintType; + } +} diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/package-info.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/package-info.java new file mode 100644 index 0000000..bd0b33c --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/data/package-info.java @@ -0,0 +1 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.data; \ No newline at end of file diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/entity/package-info.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/entity/package-info.java new file mode 100644 index 0000000..8a257ad --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/entity/package-info.java @@ -0,0 +1 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.entity; \ No newline at end of file diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/package-info.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/package-info.java new file mode 100644 index 0000000..ccdd4b1 --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/package-info.java @@ -0,0 +1,7 @@ +/** + * + */ +/** + * + */ +package in.gov.chennaicorporation.gccoffice.m_petition; \ No newline at end of file diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/repository/package-info.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/repository/package-info.java new file mode 100644 index 0000000..52f87dc --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/repository/package-info.java @@ -0,0 +1 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.repository; \ No newline at end of file diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/Petition.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/Petition.java new file mode 100644 index 0000000..67e78ad --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/Petition.java @@ -0,0 +1,671 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.service; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.PreparedStatement; +import java.sql.Statement; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.sql.DataSource; + +import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.env.Environment; +import org.springframework.dao.DataAccessException; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import in.gov.chennaicorporation.gccoffice.m_petition.data.ComplaintType; +import in.gov.chennaicorporation.gccoffice.service.Base64Util; +import in.gov.chennaicorporation.gccoffice.service.LoginUserInfo; + +import org.springframework.jdbc.core.PreparedStatementCreator; +import org.springframework.jdbc.support.GeneratedKeyHolder; +import org.springframework.jdbc.support.KeyHolder; + +@Service +public class Petition { + private JdbcTemplate jdbcTemplate; + private final Environment environment; + private PetitionMaster petitionMaster; + + @Autowired + public Petition(Environment environment,PetitionMaster petitionMaster) { + this.environment = environment; + this.petitionMaster = petitionMaster; + } + + @Autowired + public void setDataSource(@Qualifier("mysqlMayorPetitionDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + @Transactional(readOnly = true) + public List getComplaintTypeList() { + return petitionMaster.getComplaintType(); + } + + @Transactional(readOnly = true) + public static List convertToComplaintTypes(List> complaintTypeMaps) { + return complaintTypeMaps.stream() + .map(ComplaintType::new) + .collect(Collectors.toList()); + } + + @Transactional(readOnly = true) + // Method to map complaint type IDs to their respective complaint types + public static String mapComplaintTypes(List complaintTypes, String complaint) { + String[] complaintIds = complaint.split(","); + StringBuilder complaintTxtBuilder = new StringBuilder(); + + for (String complaintId : complaintIds) { + int id = Integer.parseInt(complaintId); + for (ComplaintType type : complaintTypes) { + if (type.getComplaintTypeId() == id) { + if (complaintTxtBuilder.length() > 0) { + complaintTxtBuilder.append(","); + } + complaintTxtBuilder.append(type.getComplaintType()); + break; + } + } + } + + return complaintTxtBuilder.toString(); + } + + @Transactional(readOnly = true) + public List> getPetitionList() { + try { + String sqlQuery = "SELECT * FROM petition WHERE (`isactive`=1 AND `isdelete`=0)"; + List> result = jdbcTemplate.queryForList(sqlQuery); + Base64Util.encodeBase64(sqlQuery); + + // Iterate over the list of maps + for (Map map : result) { + // Get the value of the 'petitionNo' field from the map + String petitionNo = (String) map.get("petition_no"); + + // Encode the 'petitionNo' value using Base64Util + String petitionNoEncoded = Base64Util.encodeBase64(petitionNo); + + // Add the encoded value as 'petitionNoEncode' to the map + map.put("petitionNoEncode", petitionNoEncoded); + } + + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional(readOnly = true) + public List> getUnmapPetitionList() { + try { + String sqlQuery = "SELECT " + + " p.* " + + "FROM " + + " `petition` p " + + "WHERE " + + " p.`isactive` = 1 AND p.`isdelete` = 0 " + + " AND NOT EXISTS (" + + " SELECT 1 " + + " FROM `petition_mapping` pm " + + " WHERE (p.`petition_id` = pm.`petition_id`) AND (pm.`isactive` = 1 AND pm.`isdelete` = 0 ) " + + " )"; + List> result = jdbcTemplate.queryForList(sqlQuery); + + // Iterate over the list of maps + for (Map map : result) { + // Get the value of the 'petitionNo' field from the map + String petitionNo = (String) map.get("petition_no"); + + // Encode the 'petitionNo' value using Base64Util + String petitionNoEncoded = Base64Util.encodeBase64(petitionNo); + + // Add the encoded value as 'petitionNoEncode' to the map + map.put("petitionNoEncode", petitionNoEncoded); + } + + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + + @Transactional(readOnly = true) + public List> getPetitionDetails(String petitionNo) { + try { + String sqlQuery = "SELECT * FROM petition WHERE petition_no = ? AND (`isactive`=1 AND `isdelete`=0) LIMIT 1"; + List> result = jdbcTemplate.queryForList(sqlQuery, petitionNo); + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional + public String savePetition( + String petitionType, + String createdBy, + String petitionerName, + String petitionerMobile, + String petitionerComplaint, + MultipartFile page1, + MultipartFile page2, + MultipartFile page3, + MultipartFile page4) { + + //System.out.println("I am from Service Page "+petitionerName); + + //String complaintNature = ""; + int lastInsertId = 0; + String sqlQuery = "INSERT INTO `petition` " + + "(`petition_type`,`created_by`, `petitioner_name`, `petitioner_mobile`, " + + "`petitioner_complaint`, `petitioner_complaint_txt`) " + + "VALUES (?, ?, ?, ?, ?, ?)"; + + try { + // Complaint Type List + List complaintTypelist = getComplaintTypeList(); + // Convert the list of maps to a list of ComplaintType objects + List complaintTypes = convertToComplaintTypes(complaintTypelist); + + // Map complaint types + String petitionerComplaint_txt = mapComplaintTypes(complaintTypes, petitionerComplaint); + + KeyHolder keyHolder = new GeneratedKeyHolder(); + // Use JdbcTemplate's update method to execute the query with parameters + jdbcTemplate.update(connection -> { + PreparedStatement ps = connection.prepareStatement(sqlQuery, Statement.RETURN_GENERATED_KEYS); + ps.setString(1, petitionType); + ps.setString(2, createdBy); + ps.setString(3, petitionerName); + ps.setString(4, petitionerMobile); + ps.setString(5, petitionerComplaint); + ps.setString(6, petitionerComplaint_txt); + return ps; + }, keyHolder); + + // Get the last insert ID + lastInsertId = (int) keyHolder.getKey().longValue(); + + // Get the value of mp_ackno from application.properties + String ackno = environment.getProperty("mp_ackno"); + String ackno_prefix = environment.getProperty("mp_ackno_prefix"); + + // Convert ackno to int if needed + int acknoInt = Integer.parseInt(ackno); + + // Calculate the petition number + int petitionNo = (int) (lastInsertId + acknoInt); + + // Construct the petition number string + String petitionNoString = ackno_prefix + petitionNo; + + // Update the petition number in the database + updatePetitionNumber(lastInsertId, petitionNoString); + + // Add Petition Scan File in the database + addPetitionFile(createdBy,lastInsertId, petitionNoString, page1, page2, page3, page4); + + return petitionNoString; // If no exception, query executed successfully + } catch (DataAccessException e) { + // Handle exception (e.g., log error) + e.printStackTrace(); + return "error"; // Query execution failed + } + } + + @Transactional + public boolean updatePetitionNumber(int petitionId,String petitionNoString) { + String sqlQuery = "UPDATE `petition` SET `petition_no`='"+petitionNoString+"' WHERE `petition_id`='"+petitionId+"'"; + jdbcTemplate.update(sqlQuery); + return true; + } + + @Transactional + public String addPetitionFile(String createdBy, + int petitionId, + String petitionNoString, + MultipartFile page1, + MultipartFile page2, + MultipartFile page3, + MultipartFile page4) { + + String fileName=""; + for (int i = 1; i <= 4; i++) { + MultipartFile file = null; + switch (i) { + case 1: + file = page1; + fileName = "Scan1"; + break; + case 2: + file = page2; + fileName = "Scan2"; + break; + case 3: + file = page3; + fileName = "Scan3"; + break; + case 4: + file = page4; + fileName = "Scan4"; + break; + } + if (file != null && !file.isEmpty()) { + try { + // Get the bytes of the file + byte[] bytes = file.getBytes(); + + // Set the file path where you want to save it + String uploadDirectory = environment.getProperty("file.upload.directory"); + String serviceFolderName = environment.getProperty("mp_foldername"); + uploadDirectory = uploadDirectory + serviceFolderName; + + // File name + fileName = petitionId + "_" + fileName + "_" + petitionNoString + "_" + file.getOriginalFilename(); + + //File Size + Long fileSize = file.getSize(); + + // File Type + String fileType = file.getContentType(); + + // Create directory if it doesn't exist + Path directoryPath = Paths.get(uploadDirectory); + if (!Files.exists(directoryPath)) { + Files.createDirectories(directoryPath); + } + + String filePath = uploadDirectory + "/" + fileName; + + // Create a new Path object + Path path = Paths.get(filePath); + + // Write the bytes to the file + Files.write(path, bytes); + + // Save the file path to a database + String sqlQuery = "INSERT INTO `pentition_files`(`created_by`, `file_name`, `file_size`, `file_type`, `petition_no`, `petition_id`) " + + "VALUES ('"+createdBy+"','"+fileName+"','"+fileSize+"','"+fileType+"','"+petitionNoString+"','"+petitionId+"')"; + jdbcTemplate.update(sqlQuery); + + } catch (IOException e) { + e.printStackTrace(); + return "Failed to save file " + file.getOriginalFilename(); + } + } + + } + return "success"; + } + + @Transactional + public boolean updatePetition( + String petitionNo, + String petitionType, + String createdBy, + String petitionerName, + String petitionerMobile, + String petitionerAddress, + String petitionerPincode, + String petitionerComplaint, + String complaintNature) { + + try { + // Complaint Type List + List complaintTypelist = getComplaintTypeList(); + // Convert the list of maps to a list of ComplaintType objects + List complaintTypes = convertToComplaintTypes(complaintTypelist); + + // Map complaint types + String petitionerComplaint_txt = mapComplaintTypes(complaintTypes, petitionerComplaint); + + String sqlQuery = "UPDATE `petition` SET " + + "`petition_type`='"+petitionType+"', `created_by`='"+createdBy+"', `petitioner_name`='"+petitionerName+"', `petitioner_mobile`='"+petitionerMobile+"', " + + "`petitioner_address`='"+petitionerAddress+"', `petitioner_pincode`='"+petitionerPincode+"'," + + "`petitioner_complaint`='"+petitionerComplaint+"', `petitioner_complaint_txt`='"+petitionerComplaint_txt+"', `complaint_nature`='"+complaintNature+"' " + + "WHERE (`petition_no`='"+petitionNo+"') LIMIT 1"; + System.out.println(sqlQuery); + // Use JdbcTemplate's update method to execute the query with parameters + jdbcTemplate.update(sqlQuery); + + // Add Petition Scan File in the database + //addPetitionFile(createdBy,lastInsertId, petitionNoString, page1, page2, page3, page4); + + return true; // If no exception, query executed successfully + } catch (DataAccessException e) { + // Handle exception (e.g., log error) + e.printStackTrace(); + return false; // Query execution failed + } + } + + @Transactional + public boolean updatePetitionStatus(String petitionId,String petitionNo) { + String status_value = "close"; + List> petitionMappingDetails = getPetitionMappingDetails(petitionNo, petitionId); + + for (Map mapping : petitionMappingDetails) { + // Access values from the map using keys + Object status = mapping.get("status"); + // Check if status is "close" + if (!"close".equals(status)) { + status_value = "partial"; + } + + } + + String sqlQuery = "UPDATE `petition` SET `status`='"+status_value+"' WHERE `petition_no`='"+petitionNo+"' AND `petition_id`='"+petitionId+"' LIMIT 1"; + jdbcTemplate.update(sqlQuery); + System.out.println(sqlQuery); + return true; + } + + @Transactional(readOnly = true) + public List> getPetitionMappingDetails(String petitionNo, String petitionId) { + try { + String sqlQuery = "SELECT * FROM petition_mapping WHERE (`petition_id`= ? AND petition_no = ?) AND (`isactive`=1 AND `isdelete`=0)"; + List> result = jdbcTemplate.queryForList(sqlQuery, petitionId, petitionNo); + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional + public boolean unmapComplient(String petitionId, String petitionNo) { + String sqlQuery = "UPDATE `petition_mapping` SET `isactive`='0',`isdelete`='1' WHERE `petition_id`='"+petitionId+"' AND `petition_no`='"+petitionNo+"'"; + jdbcTemplate.update(sqlQuery); + return true; + } + + @Transactional + public boolean mapComplientToOfficer( + String createdBy, String petitionId, String petitionNo, String complaintId, String officerId) { + String sqlQuery = "INSERT INTO `petition_mapping`" + + "(`created_by`, `off_id`, `petition_no`, `complaint_typeid`, `petition_id`) " + + "VALUES (?, ?, ?, ?, ?)"; + jdbcTemplate.update(sqlQuery, createdBy, officerId, petitionNo, complaintId, petitionId); + return true; + } + + @Transactional + public boolean updateMapComplientStatus(String mapId,String status) { + String sqlQuery = "UPDATE `petition_mapping` SET `status`=? WHERE `mapid`=? LIMIT 1"; + jdbcTemplate.update(sqlQuery, status, mapId); + System.out.println(sqlQuery); + return true; + } + + @Transactional(readOnly = true) + public List> getComplaintMappingDetails(String petitionNo, String petitionId, String complaintTypeId) { + try { + String sqlQuery = "SELECT * FROM petition_mapping WHERE (`petition_id`= ? AND petition_no = ?) AND `complaint_typeid`= ? AND (`isactive`=1 AND `isdelete`=0) LIMIT 1"; + List> result = jdbcTemplate.queryForList(sqlQuery, petitionId, petitionNo,complaintTypeId); + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional(readOnly = true) + public List> getComplaintList() { + try { + String sqlQuery = "SELECT " + + " p.`petition_id`, p.`cdate`, p.`created_by`, p.`isactive`, p.`isdelete`, p.`petition_no`, " + + " p.`petitioner_address`, p.`petitioner_complaint`, p.`petitioner_complaint_txt`, " + + " p.`petitioner_mobile`, p.`petitioner_name`, p.`complaint_nature`, p.`petitioner_pincode`, " + + " pm.`mapid`, pm.`complaint_typeid`, pm.`off_id`, pm.`status`, om.`off_nm`, ctype.`complaint_type` " + + " FROM " + + " `petition` p, `petition_mapping` pm, `petition_master`.`officer_master` om, `petition_master`.`complaint_types` ctype " + + " WHERE " + + " (p.`isactive` = 1 AND p.`isdelete` = 0) " + + " AND (pm.`isactive` = 1 AND pm.`isdelete` = 0) " + + " AND (om.`isactive` = 1 AND om.`isdelete` = 0) " + + " AND (om.`off_id` = pm.`off_id`) " + + " AND (ctype.`complaint_typeid` = pm.`complaint_typeid`) " + + " AND (p.`petition_id` = pm.`petition_id`)" + + " "; + System.out.println(sqlQuery); + List> result = jdbcTemplate.queryForList(sqlQuery); + + // Iterate over the list of maps + for (Map map : result) { + // Get the value of the 'petitionNo' field from the map + String petitionNo = (String) map.get("petition_no"); + + // Encode the 'petitionNo' value using Base64Util + String petitionNoEncoded = Base64Util.encodeBase64(petitionNo); + + // Add the encoded value as 'petitionNoEncode' to the map + map.put("petitionNoEncode", petitionNoEncoded); + } + + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional(readOnly = true) + public List> getComplaintListByPetitionId(String petitionId) { + try { + String sqlQuery = "SELECT " + + " p.`petition_id`, p.`cdate`, p.`created_by`, p.`isactive`, p.`isdelete`, p.`petition_no`, " + + " p.`petitioner_address`, p.`petitioner_complaint`, p.`petitioner_complaint_txt`, " + + " p.`petitioner_mobile`, p.`petitioner_name`, p.`complaint_nature`, p.`petitioner_pincode`, p.`status` petition_status, " + + " pm.`mapid`, pm.`complaint_typeid`, pm.`off_id`, pm.`status` complaint_status, pm.`cdate` mappedOn, om.`off_nm`, ctype.`complaint_type` " + + " FROM " + + " `mayor_petition`.`petition` p,`mayor_petition`.`petition_mapping` pm, `petition_master`.`officer_master` om, `petition_master`.`complaint_types` ctype " + + " WHERE " + + " (p.`petition_id` = '"+petitionId+"' AND p.`isactive` = 1 AND p.`isdelete` = 0) " + + " AND (pm.`isactive` = 1 AND pm.`isdelete` = 0) " + + " AND (om.`isactive` = 1 AND om.`isdelete` = 0) " + + " AND (om.`off_id` = pm.`off_id`) " + + " AND (ctype.`complaint_typeid` = pm.`complaint_typeid`) " + + " AND (p.`petition_id` = pm.`petition_id`)" + + " "; + System.out.println(sqlQuery); + List> result = jdbcTemplate.queryForList(sqlQuery); + + // Iterate over the list of maps + for (Map map : result) { + // Get the value of the 'petitionNo' field from the map + String petitionNo = (String) map.get("petition_no"); + + // Encode the 'petitionNo' value using Base64Util + String petitionNoEncoded = Base64Util.encodeBase64(petitionNo); + + // Add the encoded value as 'petitionNoEncode' to the map + map.put("petitionNoEncode", petitionNoEncoded); + } + + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional(readOnly = true) + public List> getComplaintDetails(String mapid) { + try { + String sqlQuery = "SELECT " + + " p.`petition_id`, p.`cdate`, p.`created_by`, p.`isactive`, p.`isdelete`, p.`petition_no`, " + + " p.`petitioner_address`, p.`petitioner_complaint`, p.`petitioner_complaint_txt`, " + + " p.`petitioner_mobile`, p.`petitioner_name`, p.`complaint_nature`, p.`petitioner_pincode`, " + + " pm.`mapid`, pm.`complaint_typeid`, pm.`off_id`, pm.`status`, om.`off_nm`, ctype.`complaint_type` " + + " FROM " + + " `petition` p,`petition_mapping` pm, `petition_master`.`officer_master` om, `petition_master`.`complaint_types` ctype " + + " WHERE " + + " pm.`mapid`='"+mapid+"' " + + " AND (p.`isactive` = 1 AND p.`isdelete` = 0) " + + " AND (pm.`isactive` = 1 AND pm.`isdelete` = 0) " + + " AND (om.`isactive` = 1 AND om.`isdelete` = 0) " + + " AND (om.`off_id` = pm.`off_id`) " + + " AND (ctype.`complaint_typeid` = pm.`complaint_typeid`) " + + " AND (p.`petition_id` = pm.`petition_id`)" + + " "; + //System.out.println(sqlQuery); + List> result = jdbcTemplate.queryForList(sqlQuery); + + // Iterate over the list of maps + for (Map map : result) { + // Get the value of the 'petitionNo' field from the map + String petitionNo = (String) map.get("petition_no"); + + // Encode the 'petitionNo' value using Base64Util + String petitionNoEncoded = Base64Util.encodeBase64(petitionNo); + + // Add the encoded value as 'petitionNoEncode' to the map + map.put("petitionNoEncode", petitionNoEncoded); + } + + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional(readOnly = true) + public List> getComplaintActionDetails(String mapId) { + try { + String sqlQuery = "SELECT * FROM `petition_action_taken` WHERE (`mapid`= ? AND `isactive`=1 AND `isdelete`=0) LIMIT 1"; + List> result = jdbcTemplate.queryForList(sqlQuery, mapId); + return result; + } catch (DataAccessException e) { + e.printStackTrace(); + return null; // Return null or handle error appropriately + } + } + + @Transactional + public String saveComplanitStatus( + String createdBy, + String mapId, + String complaintStatus, + String complaintActionText, + MultipartFile actionPage1, + String petitionId, + String petitionNo) { + + //System.out.println("I am from Service Page "+petitionerName); + + //String complaintNature = ""; + int lastInsertId = 0; + String sqlQuery = "INSERT INTO `petition_action_taken` " + + "(`created_by`, `off_id`, `mapid`, `status`, " + + "`comments`) " + + "VALUES (?, ?, ?, ?, ?)"; + + try { + + KeyHolder keyHolder = new GeneratedKeyHolder(); + // Use JdbcTemplate's update method to execute the query with parameters + jdbcTemplate.update(connection -> { + PreparedStatement ps = connection.prepareStatement(sqlQuery, Statement.RETURN_GENERATED_KEYS); + ps.setString(1, createdBy); + ps.setString(2, createdBy); + ps.setString(3, mapId); + ps.setString(4, complaintStatus); + ps.setString(5, complaintActionText); + return ps; + }, keyHolder); + + // Get the last insert ID + lastInsertId = (int)keyHolder.getKey().longValue(); + String actionID = "error"; + if(lastInsertId>0) { + // Update Complaint Status + updateMapComplientStatus(mapId,"close"); + // Update Petition Status + updatePetitionStatus(petitionId,petitionNo); + // Add Action Scan File in the database + addActionFile(mapId,lastInsertId, actionPage1); + actionID = ""+lastInsertId; + } + + return actionID; // If no exception, query executed successfully + } catch (DataAccessException e) { + // Handle exception (e.g., log error) + e.printStackTrace(); + return "error"; // Query execution failed + } + } + + @Transactional + public String addActionFile( String mapId, int solmapid, + MultipartFile page1) { + + MultipartFile file = page1; + String fileName = "Scan1_"+solmapid; + + if (file != null && !file.isEmpty()) { + try { + // Get the bytes of the file + byte[] bytes = file.getBytes(); + + // Set the file path where you want to save it + String uploadDirectory = environment.getProperty("file.upload.directory"); + String serviceFolderName = environment.getProperty("mp_foldername"); + String serviceActionFolderName = environment.getProperty("mp_action_Foldername"); + + uploadDirectory = uploadDirectory + serviceFolderName +"/"+ serviceActionFolderName; + + // File name + fileName = mapId + "_" + fileName + "_" + file.getOriginalFilename(); + + //File Size + Long fileSize = file.getSize(); + + // File Type + String fileType = file.getContentType(); + + // Create directory if it doesn't exist + Path directoryPath = Paths.get(uploadDirectory); + if (!Files.exists(directoryPath)) { + Files.createDirectories(directoryPath); + } + + String filePath = uploadDirectory + "/" + fileName; + + // Create a new Path object + Path path = Paths.get(filePath); + + // Write the bytes to the file + Files.write(path, bytes); + + // Save the file path to a database + String sqlQuery = "UPDATE `petition_action_taken` SET " + + "`file_name`='"+fileName+"', " + + "`file_size`='"+fileSize+"', " + + "`file_type`='"+fileType+"' " + + "WHERE `solmapid`='"+solmapid+"' LIMIT 1"; + jdbcTemplate.update(sqlQuery); + + } catch (IOException e) { + e.printStackTrace(); + return "Failed to save file " + file.getOriginalFilename(); + } + } + return "success"; + } +} diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/PetitionMaster.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/PetitionMaster.java new file mode 100644 index 0000000..86bbf82 --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/PetitionMaster.java @@ -0,0 +1,58 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.service; + +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class PetitionMaster { + private JdbcTemplate jdbcTemplate; + + @Autowired + public void setDataSource(@Qualifier("mysqlPetitionMasterDataSource") DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } + + @Transactional(readOnly = true) + public List> getComplaintType(){ + String SqlQuery = ""; + + SqlQuery = "SELECT * FROM `complaint_types` WHERE `isactive`=1 AND `isdelete`=0"; + + List> result = jdbcTemplate.queryForList(SqlQuery); + + return result; + + } + + @Transactional(readOnly = true) + public List> getOfficerList(){ + String SqlQuery = ""; + + SqlQuery = "SELECT * FROM `officer_master` WHERE `isactive`=1 AND `isdelete`=0"; + + List> result = jdbcTemplate.queryForList(SqlQuery); + + return result; + + } + + @Transactional(readOnly = true) + public List> getPetitionTypes(){ + String SqlQuery = ""; + + SqlQuery = "SELECT * FROM `petition_types` WHERE `isactive`=1 AND `isdelete`=0 ORDER BY `orderby` ASC"; + + List> result = jdbcTemplate.queryForList(SqlQuery); + + return result; + + } +} diff --git a/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/package-info.java b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/package-info.java new file mode 100644 index 0000000..34d6803 --- /dev/null +++ b/src/main/java/in/gov/chennaicorporation/gccoffice/m_petition/service/package-info.java @@ -0,0 +1 @@ +package in.gov.chennaicorporation.gccoffice.m_petition.service; \ No newline at end of file diff --git a/src/main/resources/templates/fragments/modules/m_petition/modal-box.html b/src/main/resources/templates/fragments/modules/m_petition/modal-box.html new file mode 100644 index 0000000..ae2f994 --- /dev/null +++ b/src/main/resources/templates/fragments/modules/m_petition/modal-box.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/modules/m_petition/petition_view_script.html b/src/main/resources/templates/fragments/modules/m_petition/petition_view_script.html new file mode 100644 index 0000000..07b6d87 --- /dev/null +++ b/src/main/resources/templates/fragments/modules/m_petition/petition_view_script.html @@ -0,0 +1,291 @@ + + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/modules/m_petition/script.html b/src/main/resources/templates/fragments/modules/m_petition/script.html new file mode 100644 index 0000000..921cdf9 --- /dev/null +++ b/src/main/resources/templates/fragments/modules/m_petition/script.html @@ -0,0 +1,360 @@ + + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/modules/m_petition/search_form.html b/src/main/resources/templates/fragments/modules/m_petition/search_form.html new file mode 100644 index 0000000..e0f28b3 --- /dev/null +++ b/src/main/resources/templates/fragments/modules/m_petition/search_form.html @@ -0,0 +1,19 @@ +
+
+
+ + + + + + + +
+
+
\ No newline at end of file diff --git a/src/main/resources/templates/modules/m_petition/complaint_list.html b/src/main/resources/templates/modules/m_petition/complaint_list.html new file mode 100644 index 0000000..d4023cb --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/complaint_list.html @@ -0,0 +1,750 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoPetition No.NameMobile       Address       Postal CodeType of ComplaintDateStatusDepartment Officer
S.NoPetition No.NameMobileAddressPostal CodeType of ComplaintDateStatusDepartment Officer
+
+
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + + + + + diff --git a/src/main/resources/templates/modules/m_petition/new_petition.html b/src/main/resources/templates/modules/m_petition/new_petition.html new file mode 100644 index 0000000..9427a50 --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/new_petition.html @@ -0,0 +1,301 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ +
+
+
+
+
+
+

New Petition Form

+
+
+ +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+ + +
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+
+ + +
+ + + + + + diff --git a/src/main/resources/templates/modules/m_petition/petition_ack.html b/src/main/resources/templates/modules/m_petition/petition_ack.html new file mode 100644 index 0000000..a0814cd --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/petition_ack.html @@ -0,0 +1,237 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + + +
+
+
+
+
This is ack1
+
+
+
+ +
+
+
+
This is ack2
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+ + + + + + diff --git a/src/main/resources/templates/modules/m_petition/petition_list.html b/src/main/resources/templates/modules/m_petition/petition_list.html new file mode 100644 index 0000000..603ab9b --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/petition_list.html @@ -0,0 +1,282 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoPetition No.NameMobileAddressPostal CodeType of ComplaintDateStatusDepartmentAction
S.NoPetition No.NameMobileAddressPostal CodeType of ComplaintDateStatusDepartmentAction
+
+
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + + + + + diff --git a/src/main/resources/templates/modules/m_petition/petition_not_mapped_list.html b/src/main/resources/templates/modules/m_petition/petition_not_mapped_list.html new file mode 100644 index 0000000..4eb6263 --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/petition_not_mapped_list.html @@ -0,0 +1,267 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+
+
+
+

These are the petitions that are currently not assigned to any department officer:

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S.NoPetition No.NameMobileAddressPostal CodeType of ComplaintDateStatusDepartmentAction
S.NoPetition No.NameMobileAddressPostal CodeType of ComplaintDateStatusDepartmentAction
+
+
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + + + + + diff --git a/src/main/resources/templates/modules/m_petition/petition_update.html b/src/main/resources/templates/modules/m_petition/petition_update.html new file mode 100644 index 0000000..6b10599 --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/petition_update.html @@ -0,0 +1,758 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ +
+
+
+
+
+
+

Edit / Update Petition Form

+
+

+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ + +
+ + + + + + + + + diff --git a/src/main/resources/templates/modules/m_petition/petition_view.html b/src/main/resources/templates/modules/m_petition/petition_view.html new file mode 100644 index 0000000..778187d --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/petition_view.html @@ -0,0 +1,158 @@ + + + + + + + +
+ +
+ + +
+ +
+ +
+
+ +
+
+
+
+
+

Petition Details

+
+ Print +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
நாள் / Date:
ஒப்புகை சீட்டு எண்/ Acknowledgement No:
பெயர் / Name:
கைபேசி எண் / Mobile No.
Address of petitioner / மனுதாரரின் முகவரி:
புகாரின் தன்மை / Nature of complaint:
+

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
Petition Status:
Total number of complaints in this petition:
Total Complaints Completed:
Total Complaints Pending:
+ + + + + + + + + + + + + +
Pending Summary
+ +
+
+
+ +
+
List of Complaints in this Petition and Their Status:
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+ + +
+ + + + + + + diff --git a/src/main/resources/templates/modules/m_petition/petition_view_modal_page.html b/src/main/resources/templates/modules/m_petition/petition_view_modal_page.html new file mode 100644 index 0000000..d97dd7a --- /dev/null +++ b/src/main/resources/templates/modules/m_petition/petition_view_modal_page.html @@ -0,0 +1,108 @@ + + + + + + +
+
+
+
+

Petition Details

+
+ Print +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
நாள் / Date:
ஒப்புகை சீட்டு எண்/ Acknowledgement No:
பெயர் / Name:
கைபேசி எண் / Mobile No.
மனுதாரரின் முகவரி / Address of petitioner:
புகாரின் தன்மை / Nature of complaint:
+

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
Petition Status:
Total number of complaints in this petition:
Total Complaints Completed:
Total Complaints Pending:
+ + + + + + + + + + + + + +
Pending Summary
+ +
+
+
+ +
+
List of Complaints in this Petition and Their Status:
+
+
+
+
+
+
+ +
+ + + + +