diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index c0bcafe..0000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,3 +0,0 @@ -wrapperVersion=3.3.4 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip diff --git a/src/main/java/com/gcc/flagpoles/configuration/AppConfig.java b/src/main/java/com/gcc/flagpoles/configuration/AppConfig.java index df0ddbc..d768981 100644 --- a/src/main/java/com/gcc/flagpoles/configuration/AppConfig.java +++ b/src/main/java/com/gcc/flagpoles/configuration/AppConfig.java @@ -11,11 +11,6 @@ import org.springframework.web.client.RestTemplate; @ConfigurationProperties(prefix = "app") public class AppConfig { - @Bean - public RestTemplate restTemplate() { - return new RestTemplate(); - } - private String title; private String baseUrl; private String getOtpUrl; diff --git a/src/main/java/com/gcc/flagpoles/configuration/DataSourceConfig.java b/src/main/java/com/gcc/flagpoles/configuration/DataSourceConfig.java new file mode 100644 index 0000000..beb559d --- /dev/null +++ b/src/main/java/com/gcc/flagpoles/configuration/DataSourceConfig.java @@ -0,0 +1,83 @@ +package com.gcc.flagpoles.configuration; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +@Configuration +@EnableTransactionManagement +public class DataSourceConfig { + + // For Local + private static final String host = "localhost"; + private static final String dbpassword = "root"; + + // For AWS + // private static String host = + // "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306"; + // private static String dbpassword = "gcc-facial-password"; + + @Configuration + public static class MyDataSourceConfig { + + @Primary + @Bean(name = "mysqlgccFlagPoleDataSource") + public DataSource mysqlgccFlagPoleDataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dataSource.setUrl("jdbc:mysql://" + host + "/gcc_flag_pole"); + dataSource.setUsername("root"); + dataSource.setPassword(dbpassword); + return dataSource; + } + + @Bean(name = "mysqlgccFlagPoleTransactionManager") + public PlatformTransactionManager mysqlgccFlagPoleTransactionManager( + @Qualifier("mysqlgccFlagPoleDataSource") DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); + } + + @Bean(name = "mysqlerpBuildingPlanTransactionManager") + public PlatformTransactionManager mysqlerpBuildingPlanTransactionManager( + @Qualifier("mysqlerpBuildingPlanDataSource") DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); + } + + @Bean(name = "mysqlerpBuildingPlanDataSource") + public DataSource mysqlerpBuildingPlanDataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dataSource.setUrl("jdbc:mysql://" + host + "/erp_building_plan"); + dataSource.setUsername("root"); + dataSource.setPassword(dbpassword); + return dataSource; + } + + // @Bean(name = "awserpBuildingPlanDataSource") + // public DataSource awserpBuildingPlanDataSource() { + // DriverManagerDataSource dataSource = new DriverManagerDataSource(); + // dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + // dataSource.setUrl("jdbc:mysql://" + awshost + "/erp_building_plan"); + // dataSource.setUsername("root"); + // dataSource.setPassword(awsdbpassword); + // return dataSource; + // } + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + } + +} diff --git a/src/main/java/com/gcc/flagpoles/controller/ApiController.java b/src/main/java/com/gcc/flagpoles/controller/ApiController.java index 0c91295..67b9fe8 100644 --- a/src/main/java/com/gcc/flagpoles/controller/ApiController.java +++ b/src/main/java/com/gcc/flagpoles/controller/ApiController.java @@ -88,9 +88,9 @@ public class ApiController { String MobileNo = mobile; System.out.print("\n MobileNo---:" + mobile); Random rand = new Random(); - // int otp = rand.nextInt(90000) + 10000; + int otp = rand.nextInt(90000) + 10000; - int otp = 22222; + //int otp = 22222; System.out.print("\n otp---:" + otp); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MMM-yyyy%20HH:mm"); LocalDateTime now = LocalDateTime.now(); @@ -178,9 +178,9 @@ public class ApiController { String MobileNo = mobile; System.out.print("\n MobileNo---:" + mobile); Random rand = new Random(); - // int otp = rand.nextInt(90000) + 10000; + int otp = rand.nextInt(90000) + 10000; - int otp = 22222; + //int otp = 22222; System.out.print("\n otp---:" + otp); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MMM-yyyy%20HH:mm"); LocalDateTime now = LocalDateTime.now(); @@ -638,7 +638,6 @@ public class ApiController { // } @PostMapping("/Confirm") - @Transactional public ResponseEntity confirmPayment(@RequestBody Map data) { String refId = data.get("id").toString(); diff --git a/src/main/java/com/gcc/flagpoles/controller/BuildingPlanController.java b/src/main/java/com/gcc/flagpoles/controller/BuildingPlanController.java new file mode 100644 index 0000000..866eaf8 --- /dev/null +++ b/src/main/java/com/gcc/flagpoles/controller/BuildingPlanController.java @@ -0,0 +1,51 @@ +package com.gcc.flagpoles.controller; + +import java.sql.Timestamp; +import java.time.LocalDate; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.*; +import org.springframework.http.MediaType; + +import com.gcc.flagpoles.service.BuildingPlanService; + +@RestController +@RequestMapping("/flagpolesregistration/buildingPlan/api") +public class BuildingPlanController { + + private BuildingPlanService buildingPlanService; + + @Autowired + public BuildingPlanController(BuildingPlanService buildingPlanService) { + this.buildingPlanService = buildingPlanService; + } + + @PostMapping(value = "/save", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + public int saveBuildingPlan(@RequestBody Map buildingPlan) { + + return buildingPlanService.awsSaveData(buildingPlan); + + } + + @PostMapping(value = "/saveLastRecords", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + public int saveLastRecords(@RequestBody Map buildingPlan) { + + return buildingPlanService.saveLastRecords(buildingPlan); + + } + + @GetMapping("getLastRecord") + public int getLastRecord(){ + return buildingPlanService.getLastRecord(); + } + + @PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + public int updateBuildingPlan(@RequestBody Map buildingPlan) { + + return buildingPlanService.updateBuildingPlan(buildingPlan); + + } + +} diff --git a/src/main/java/com/gcc/flagpoles/service/BookingService.java b/src/main/java/com/gcc/flagpoles/service/BookingService.java index 29fb81a..529324c 100644 --- a/src/main/java/com/gcc/flagpoles/service/BookingService.java +++ b/src/main/java/com/gcc/flagpoles/service/BookingService.java @@ -2,18 +2,30 @@ package com.gcc.flagpoles.service; 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 BookingService { @Autowired - private JdbcTemplate jdbcTemplate; + private JdbcTemplate mysqlJdbcTemplate; + + @Autowired + public void setMysqlDataSource(@Qualifier("mysqlgccFlagPoleDataSource") DataSource mysqlDataSource) { + System.out.println("Setting MySQL DataSource: " + mysqlDataSource); + this.mysqlJdbcTemplate = new JdbcTemplate(mysqlDataSource); + System.out.println("MySQL JdbcTemplate created: " + this.mysqlJdbcTemplate); + } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public Map getTempBookingByTempId(int tempbookid) { String sql = "SELECT * FROM temp_request_details where tempbookid = ?"; - return jdbcTemplate.queryForMap(sql, tempbookid); + return mysqlJdbcTemplate.queryForMap(sql, tempbookid); } } diff --git a/src/main/java/com/gcc/flagpoles/service/BuildingPlanService.java b/src/main/java/com/gcc/flagpoles/service/BuildingPlanService.java new file mode 100644 index 0000000..78c943e --- /dev/null +++ b/src/main/java/com/gcc/flagpoles/service/BuildingPlanService.java @@ -0,0 +1,243 @@ +package com.gcc.flagpoles.service; + +import java.sql.Timestamp; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +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 BuildingPlanService { + + @Autowired + private JdbcTemplate mysqlJdbcTemplate; + + @Autowired + public void setMysqlDataSource(@Qualifier("mysqlerpBuildingPlanDataSource") DataSource mysqlDataSource) { + System.out.println("Setting MySQL DataSource: " + mysqlDataSource); + this.mysqlJdbcTemplate = new JdbcTemplate(mysqlDataSource); + System.out.println("MySQL JdbcTemplate created: " + this.mysqlJdbcTemplate); + } + + @Transactional(transactionManager = "mysqlerpBuildingPlanTransactionManager") + public int awsSaveData(Map buildingPlan) { + + String psn_num = (String) buildingPlan.get("PSN_NUM"); + System.out.println(psn_num); + LocalDateTime application_date = toTimestamp(buildingPlan.get("APPLICATION_DATE")); + String ba_num = (String) buildingPlan.get("BA_NUM"); + LocalDateTime appv_date = toTimestamp(buildingPlan.get("APPV_DATE")); + String service_type = (String) buildingPlan.get("SERVICE_TYPE"); + String sital_areasqmt = buildingPlan.get("SITAL_AREASQMT") != null + ? buildingPlan.get("SITAL_AREASQMT").toString() + : null; + String sital_areasqft = buildingPlan.get("SITAL_AREASQFT") != null + ? buildingPlan.get("SITAL_AREASQFT").toString() + : null; + String description = (String) buildingPlan.get("DESCRIPTION"); + String zone = (String) buildingPlan.get("ZONE"); + String ward = (String) buildingPlan.get("WARD"); + String area = (String) buildingPlan.get("AREA"); + String loc = (String) buildingPlan.get("LOC"); + String street = (String) buildingPlan.get("STREET"); + String owner_name = (String) buildingPlan.get("OWNER_NAME"); + String mobilephone = (String) buildingPlan.get("MOBILEPHONE"); + String fathername = (String) buildingPlan.get("FATHERNAME"); + String plotdoornumber = (String) buildingPlan.get("PLOTDOORNUMBER"); + String plotblocknumber = (String) buildingPlan.get("PLOTBLOCKNUMBER"); + String plotnumber = (String) buildingPlan.get("PLOTNUMBER"); + String plotsurveynumber = (String) buildingPlan.get("PLOTSURVEYNUMBER"); + String plotlandmark = (String) buildingPlan.get("PLOTLANDMARK"); + String citytown = (String) buildingPlan.get("CITYTOWN"); + String pincode = buildingPlan.get("PINCODE") != null + ? buildingPlan.get("PINCODE").toString() + : null; + + + String sql = "INSERT INTO bpa_application_data (psn_num, application_date, ba_num, appv_date, service_type, sital_areasqmt, sital_areasqft, description, zone, ward, area, loc, street, owner_name, mobilephone, fathername, plotdoornumber, plotblocknumber, plotnumber, plotsurveynumber, plotlandmark, citytown, pincode) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + try { + return mysqlJdbcTemplate.update(sql, psn_num, application_date, ba_num, appv_date, service_type, + sital_areasqmt, sital_areasqft, description, zone, ward, area, loc, street, owner_name, mobilephone, + fathername, plotdoornumber, plotblocknumber, plotnumber, plotsurveynumber, plotlandmark, citytown, + pincode); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + private LocalDateTime toTimestamp(Object value) { + + if (value == null) { + return null; + } + + try { + + if (value instanceof String) { + String s = value.toString(); + + return toLocalDateTime(s); + } + + throw new IllegalArgumentException( + "Unsupported date type: " + value.getClass() + ); + + } catch (Exception e) { + throw new IllegalArgumentException( + "Invalid datetime format: " + value, e + ); + } + } + + + public LocalDateTime toLocalDateTime(String value) { + + + if (value.endsWith("Z") || value.contains("+")) { + return Instant.parse(value) + .atZone(ZoneId.of("Asia/Kolkata")) + .toLocalDateTime(); + } + + + return LocalDateTime.parse(value); + } + + + public int getLastRecord() { + String sql = "SELECT IFNULL(MAX(id), 0) FROM bpa_application_data"; + + try { + return mysqlJdbcTemplate.queryForObject(sql, Integer.class); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + public int saveLastRecords(Map buildingPlan) { + int id = (Integer) buildingPlan.get("id"); + String psn_num = (String) buildingPlan.get("psn_num"); + System.out.println(psn_num); + LocalDateTime application_date = toTimestamp(buildingPlan.get("application_date")); + String ba_num = (String) buildingPlan.get("ba_num"); + LocalDateTime appv_date = toTimestamp(buildingPlan.get("appv_date")); + String service_type = (String) buildingPlan.get("service_type"); + String sital_areasqmt = buildingPlan.get("sital_areasqmt") != null + ? buildingPlan.get("sital_areasqmt").toString() + : null; + String sital_areasqft = buildingPlan.get("sital_areasqft") != null + ? buildingPlan.get("sital_areasqft").toString() + : null; + String description = (String) buildingPlan.get("description"); + String zone = (String) buildingPlan.get("zone"); + String ward = (String) buildingPlan.get("ward"); + String area = (String) buildingPlan.get("area"); + String loc = (String) buildingPlan.get("loc"); + String street = (String) buildingPlan.get("street"); + String owner_name = (String) buildingPlan.get("owner_name"); + String mobilephone = (String) buildingPlan.get("mobilephone"); + String fathername = (String) buildingPlan.get("fathername"); + String plotdoornumber = (String) buildingPlan.get("plotdoornumber"); + String plotblocknumber = (String) buildingPlan.get("plotblocknumber"); + String plotnumber = (String) buildingPlan.get("plotnumber"); + String plotsurveynumber = (String) buildingPlan.get("plotsurveynumber"); + String plotlandmark = (String) buildingPlan.get("plotlandmark"); + String citytown = (String) buildingPlan.get("citytown"); + String pincode = buildingPlan.get("pincode") != null + ? buildingPlan.get("pincode").toString() + : null; + + + String sql = "INSERT INTO bpa_application_data (id, psn_num, application_date, ba_num, appv_date, service_type, sital_areasqmt, sital_areasqft, description, zone, ward, area, loc, street, owner_name, mobilephone, fathername, plotdoornumber, plotblocknumber, plotnumber, plotsurveynumber, plotlandmark, citytown, pincode) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + try { + return mysqlJdbcTemplate.update(sql, id, psn_num, application_date, ba_num, appv_date, service_type, + sital_areasqmt, sital_areasqft, description, zone, ward, area, loc, street, owner_name, mobilephone, + fathername, plotdoornumber, plotblocknumber, plotnumber, plotsurveynumber, plotlandmark, citytown, + pincode); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + @Transactional(transactionManager = "mysqlerpBuildingPlanTransactionManager") + public int updateBuildingPlan(Map buildingPlan) { + + String psn_num = (String) buildingPlan.get("PSN_NUM"); + System.out.println("PSN"+psn_num); + LocalDateTime application_date = toTimestamp(buildingPlan.get("APPLICATION_DATE")); + String ba_num = (String) buildingPlan.get("BA_NUM"); + LocalDateTime appv_date = toTimestamp(buildingPlan.get("APPV_DATE")); + String service_type = (String) buildingPlan.get("SERVICE_TYPE"); + String sital_areasqmt = buildingPlan.get("SITAL_AREASQMT") != null + ? buildingPlan.get("SITAL_AREASQMT").toString() + : null; + String sital_areasqft = buildingPlan.get("SITAL_AREASQFT") != null + ? buildingPlan.get("SITAL_AREASQFT").toString() + : null; + String description = (String) buildingPlan.get("DESCRIPTION"); + String zone = (String) buildingPlan.get("ZONE"); + String ward = (String) buildingPlan.get("WARD"); + String area = (String) buildingPlan.get("AREA"); + String loc = (String) buildingPlan.get("LOC"); + String street = (String) buildingPlan.get("STREET"); + String owner_name = (String) buildingPlan.get("OWNER_NAME"); + String mobilephone = (String) buildingPlan.get("MOBILEPHONE"); + String fathername = (String) buildingPlan.get("FATHERNAME"); + String plotdoornumber = (String) buildingPlan.get("PLOTDOORNUMBER"); + String plotblocknumber = (String) buildingPlan.get("PLOTBLOCKNUMBER"); + String plotnumber = (String) buildingPlan.get("PLOTNUMBER"); + String plotsurveynumber = (String) buildingPlan.get("PLOTSURVEYNUMBER"); + String plotlandmark = (String) buildingPlan.get("PLOTLANDMARK"); + String citytown = (String) buildingPlan.get("CITYTOWN"); + String pincode = buildingPlan.get("PINCODE") != null + ? buildingPlan.get("PINCODE").toString() + : null; + + + String sql = + "UPDATE bpa_application_data SET " + + "application_date = ?, " + + "ba_num = ?, " + + "appv_date = ?, " + + "service_type = ?, " + + "sital_areasqmt = ?, " + + "sital_areasqft = ?, " + + "description = ?, " + + "zone = ?, " + + "ward = ?, " + + "area = ?, " + + "loc = ?, " + + "street = ?, " + + "owner_name = ?, " + + "mobilephone = ?, " + + "fathername = ?, " + + "plotdoornumber = ?, " + + "plotblocknumber = ?, " + + "plotnumber = ?, " + + "plotsurveynumber = ?, " + + "plotlandmark = ?, " + + "citytown = ?, " + + "pincode = ? " + + "WHERE psn_num = ?"; + try { + return mysqlJdbcTemplate.update(sql, application_date, ba_num, appv_date, service_type, sital_areasqmt, sital_areasqft, description, zone, ward, + area, loc, street, owner_name, mobilephone, fathername, plotdoornumber, plotblocknumber, plotnumber, plotsurveynumber, plotlandmark, citytown, pincode, psn_num); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } +} diff --git a/src/main/java/com/gcc/flagpoles/service/DropDownService.java b/src/main/java/com/gcc/flagpoles/service/DropDownService.java index 2a9aaeb..28ccfcd 100644 --- a/src/main/java/com/gcc/flagpoles/service/DropDownService.java +++ b/src/main/java/com/gcc/flagpoles/service/DropDownService.java @@ -8,8 +8,11 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.sql.DataSource; + import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.ResponseEntity; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; @@ -24,7 +27,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class DropDownService { @Autowired - private JdbcTemplate jdbcTemplate; + private JdbcTemplate mysqlJdbcTemplate; + + @Autowired + public void setMysqlDataSource(@Qualifier("mysqlgccFlagPoleDataSource") DataSource mysqlDataSource) { + System.out.println("Setting MySQL DataSource: " + mysqlDataSource); + this.mysqlJdbcTemplate = new JdbcTemplate(mysqlDataSource); + System.out.println("MySQL JdbcTemplate created: " + this.mysqlJdbcTemplate); + } // @Autowired // private RestTemplate restTemplate; @@ -39,17 +49,17 @@ public class DropDownService { public List> getPoleMaterialList() { String sql = " SELECT * FROM pole_material where is_active = '1' "; - return jdbcTemplate.queryForList(sql); + return mysqlJdbcTemplate.queryForList(sql); } public List> getEventTypes() { String sql = " SELECT * FROM event_type where is_active = '1' "; - return jdbcTemplate.queryForList(sql); + return mysqlJdbcTemplate.queryForList(sql); } public List> getFlagMaterialList() { String sql = "SELECT * FROM flag_material where is_active = '1' "; - return jdbcTemplate.queryForList(sql); + return mysqlJdbcTemplate.queryForList(sql); } public Map getZoneAndWardByStreet(String streetName) { @@ -150,7 +160,7 @@ public class DropDownService { public List> getAllcharges() { String sql = "SELECT * FROM waste_collection_charges where is_active = 1 "; - return jdbcTemplate.queryForList(sql); + return mysqlJdbcTemplate.queryForList(sql); } // public Map fetchZones() throws Exception { @@ -172,12 +182,12 @@ public class DropDownService { // get zones public List> getZonesList() { String sql = " SELECT id,zone_name from zones where is_active = 1 "; - return jdbcTemplate.queryForList(sql); + return mysqlJdbcTemplate.queryForList(sql); } // get wardsby zone id public List> getWardsByZoneId(int zoneId) { String sql = "SELECT id, ward_name FROM wards WHERE zone_id = ? AND is_active = 1 "; - return jdbcTemplate.queryForList(sql, zoneId); + return mysqlJdbcTemplate.queryForList(sql, zoneId); } } diff --git a/src/main/java/com/gcc/flagpoles/service/PaymentService.java b/src/main/java/com/gcc/flagpoles/service/PaymentService.java index 866ee4d..cd56e3f 100644 --- a/src/main/java/com/gcc/flagpoles/service/PaymentService.java +++ b/src/main/java/com/gcc/flagpoles/service/PaymentService.java @@ -1,6 +1,7 @@ package com.gcc.flagpoles.service; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; @@ -19,11 +20,19 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Map; +import javax.sql.DataSource; + @Service public class PaymentService { + @Autowired + private JdbcTemplate mysqlJdbcTemplate; @Autowired - private JdbcTemplate jdbcTemplate; + public void setMysqlDataSource(@Qualifier("mysqlgccFlagPoleDataSource") DataSource mysqlDataSource) { + System.out.println("Setting MySQL DataSource: " + mysqlDataSource); + this.mysqlJdbcTemplate = new JdbcTemplate(mysqlDataSource); + System.out.println("MySQL JdbcTemplate created: " + this.mysqlJdbcTemplate); + } @Autowired private RequestService requestService; @@ -31,7 +40,7 @@ public class PaymentService { @Autowired private WhatsappMessageService whatsappMessageService; - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public int saveorderLog( String order_id, @@ -46,7 +55,7 @@ public class PaymentService { KeyHolder keyHolder = new GeneratedKeyHolder(); try { - int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() { + int affectedRows = mysqlJdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[] { "id" }); @@ -80,7 +89,7 @@ public class PaymentService { return 0; } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public int savePayment(String totalAmount, String payment_id, String payment_orderid, @@ -97,7 +106,7 @@ public class PaymentService { KeyHolder keyHolder = new GeneratedKeyHolder(); try { - int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() { + int affectedRows = mysqlJdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[] { "id" }); diff --git a/src/main/java/com/gcc/flagpoles/service/RefundService.java b/src/main/java/com/gcc/flagpoles/service/RefundService.java index ee4959c..701356d 100644 --- a/src/main/java/com/gcc/flagpoles/service/RefundService.java +++ b/src/main/java/com/gcc/flagpoles/service/RefundService.java @@ -9,6 +9,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.sql.DataSource; + import com.gcc.flagpoles.constants.AppConstants; import com.razorpay.RazorpayClient; import com.razorpay.RazorpayException; @@ -16,6 +18,7 @@ import com.razorpay.Refund; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.http.ResponseEntity; @@ -36,18 +39,27 @@ public class RefundService { BookingService bookingService; @Autowired - private JdbcTemplate jdbcTemplate; + private JdbcTemplate mysqlJdbcTemplate; + + @Autowired + public void setMysqlDataSource(@Qualifier("mysqlgccFlagPoleDataSource") DataSource mysqlDataSource) { + System.out.println("Setting MySQL DataSource: " + mysqlDataSource); + this.mysqlJdbcTemplate = new JdbcTemplate(mysqlDataSource); + System.out.println("MySQL JdbcTemplate created: " + this.mysqlJdbcTemplate); + } + @Transactional("mysqlgccFlagPoleTransactionManager") public List> refund(int refund_id) { String refundsql = "select * from refund_info where refund_id=?"; - return jdbcTemplate.queryForList(refundsql.toString(), refund_id); + return mysqlJdbcTemplate.queryForList(refundsql.toString(), refund_id); } + @Transactional("mysqlgccFlagPoleTransactionManager") public Map getBookingForRefund(String refId) { - List> list = jdbcTemplate.queryForList(""" + List> list = mysqlJdbcTemplate.queryForList(""" SELECT urd.id AS booking_id, urd.refid, @@ -74,6 +86,7 @@ public class RefundService { return list.get(0); } + @Transactional("mysqlgccFlagPoleTransactionManager") public void validateRefundEligibility(Map booking) { Object eventDateObj = booking.get("event_date"); @@ -104,6 +117,7 @@ public class RefundService { } } + @Transactional("mysqlgccFlagPoleTransactionManager") public Refund initiateRazorpayRefund( String paymentId, double amount) throws RazorpayException { @@ -137,20 +151,21 @@ public class RefundService { reason); // 2️⃣ Update payment table - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE payment SET paymentstatus = 'refunded' WHERE order_id = ? """, orderId); // 3️⃣ Update booking status - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE user_request_details SET booking_status = 'CANCELLED' WHERE refid = ? """, refId); } + @Transactional("mysqlgccFlagPoleTransactionManager") public int saveRefund(int bookingId, int pid, double refundAmount, String refundId, String refundStatus, String desc) { @@ -172,7 +187,7 @@ public class RefundService { System.out.println(" desc = " + desc); try { - int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() { + int affectedRows = mysqlJdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { diff --git a/src/main/java/com/gcc/flagpoles/service/RequestService.java b/src/main/java/com/gcc/flagpoles/service/RequestService.java index 46f4194..2f442d4 100644 --- a/src/main/java/com/gcc/flagpoles/service/RequestService.java +++ b/src/main/java/com/gcc/flagpoles/service/RequestService.java @@ -12,7 +12,10 @@ import java.util.LinkedHashMap; 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.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; @@ -24,7 +27,14 @@ import org.springframework.util.MultiValueMap; public class RequestService { @Autowired - private JdbcTemplate jdbcTemplate; + private JdbcTemplate mysqlJdbcTemplate; + + @Autowired + public void setMysqlDataSource(@Qualifier("mysqlgccFlagPoleDataSource") DataSource mysqlDataSource) { + System.out.println("Setting MySQL DataSource: " + mysqlDataSource); + this.mysqlJdbcTemplate = new JdbcTemplate(mysqlDataSource); + System.out.println("MySQL JdbcTemplate created: " + this.mysqlJdbcTemplate); + } @Autowired private SMSService smsService; @@ -38,7 +48,7 @@ public class RequestService { } } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public String saveFlagPoleRequest( Map applicant, Map event, @@ -68,7 +78,7 @@ public class RequestService { // Integer deposit = 50; // Default deposit // Insert into user_request_details - jdbcTemplate.update(connection -> { + mysqlJdbcTemplate.update(connection -> { PreparedStatement ps = connection.prepareStatement(insertRequestSql, Statement.RETURN_GENERATED_KEYS); ps.setString(1, applicant.get("name").toString()); @@ -99,7 +109,7 @@ public class RequestService { // 🔥 Update user_request_details with refId // ================================================ String updateRefSql = "UPDATE user_request_details SET refid = ? WHERE id = ?"; - jdbcTemplate.update(updateRefSql, refId, userReqId); + mysqlJdbcTemplate.update(updateRefSql, refId, userReqId); // SQL for inserting street details (refid added) String insertStreetSql = """ @@ -112,7 +122,7 @@ public class RequestService { // Insert each street record including refid for (Map s : streets) { - jdbcTemplate.update(insertStreetSql, + mysqlJdbcTemplate.update(insertStreetSql, s.get("streetName"), s.get("lat"), s.get("long"), @@ -133,7 +143,7 @@ public class RequestService { return refId; // or return refId if required } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public String saveTempBooking( Map applicant, Map event, @@ -142,7 +152,7 @@ public class RequestService { // 1️⃣ Insert TEMP booking (without refid) KeyHolder keyHolder = new GeneratedKeyHolder(); - jdbcTemplate.update(con -> { + mysqlJdbcTemplate.update(con -> { PreparedStatement ps = con.prepareStatement(""" INSERT INTO temp_booking ( @@ -183,7 +193,7 @@ public class RequestService { String tempRefId = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + tempId; // Update temp_booking with refid - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE temp_booking SET refid = ? WHERE id = ? @@ -191,7 +201,7 @@ public class RequestService { // Insert TEMP street details for (Map s : streets) { - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" INSERT INTO temp_street_details ( temp_refid, @@ -228,11 +238,11 @@ public class RequestService { return tempRefId; } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public String moveTempToFinal(String tempRefId) { // Insert into FINAL booking table ONLY IF PAYMENT COMPLETED - int inserted = jdbcTemplate.update(""" + int inserted = mysqlJdbcTemplate.update(""" INSERT INTO user_request_details ( applicant_name, @@ -275,19 +285,19 @@ public class RequestService { "Payment not completed or temp record not found for refId: " + tempRefId); } - Integer newId = jdbcTemplate.queryForObject( + Integer newId = mysqlJdbcTemplate.queryForObject( "SELECT LAST_INSERT_ID()", Integer.class); String finalRefId = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + newId; - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE user_request_details SET refid = ? WHERE id = ? """, finalRefId, newId); // Insert streets - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" INSERT INTO street_details ( street_name, latitude, longitude, zone, ward, @@ -305,14 +315,14 @@ public class RequestService { """, newId, finalRefId, tempRefId); // Mark TEMP inactive - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE temp_booking SET is_active = 0, is_delete = 1 WHERE refid = ? """, tempRefId); - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE temp_street_details SET is_active = 0, is_delete = 1 @@ -322,10 +332,10 @@ public class RequestService { return finalRefId; } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public void updateFinePaymentStatus(String refId) { - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE fine_collection SET payment_status = 'COMPLETED' WHERE ref_id = ? @@ -334,10 +344,10 @@ public class RequestService { """, refId); } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public void updateRestorationPaymentStatus(String refId) { - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE restoration SET payment_status = 'COMPLETED' WHERE ref_id = ? @@ -346,10 +356,10 @@ public class RequestService { """, refId); } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public void updateTempPaymentStatus(String tempRefId, String status) { - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE temp_booking SET payment_status = ? WHERE refid = ? @@ -358,9 +368,10 @@ public class RequestService { """, status, tempRefId); } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getFineDetails(String refid) { String sql = "select * from fine_collection where ref_id=?"; - return jdbcTemplate.queryForList(sql, refid); + return mysqlJdbcTemplate.queryForList(sql, refid); } // public boolean isRequestNearby(double latitude, double longitude) { @@ -447,6 +458,7 @@ public class RequestService { // return jdbcTemplate.queryForList(sql, requestId); // } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public Map getPaymentByRefIdAndType(String refId, String type) { String sql = """ @@ -463,7 +475,7 @@ public class RequestService { LIMIT 1 """; - List> list = jdbcTemplate.queryForList(sql, refId, type); + List> list = mysqlJdbcTemplate.queryForList(sql, refId, type); // ✅ Return null safely instead of throwing exception return list.isEmpty() ? null : list.get(0); @@ -502,6 +514,7 @@ public class RequestService { // return jdbcTemplate.queryForList(sql, refId); // } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getDetailsByRequestIdTemp(String refId) { String sql = """ @@ -545,7 +558,7 @@ public class RequestService { AND ud.is_delete = 0 """; - return jdbcTemplate.queryForList(sql, refId); + return mysqlJdbcTemplate.queryForList(sql, refId); } // public List> getFinalDetailsByRefId(String refId) { @@ -584,6 +597,7 @@ public class RequestService { // return jdbcTemplate.queryForList(sql, refId); // } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getFinalDetailsByRefId(String refId) { String sql = """ @@ -634,11 +648,12 @@ public class RequestService { WHERE urd.refid = ? """; - return jdbcTemplate.queryForList(sql, refId); + return mysqlJdbcTemplate.queryForList(sql, refId); } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getTempStreetDetails(String refId) { - return jdbcTemplate.queryForList(""" + return mysqlJdbcTemplate.queryForList(""" SELECT street_name, zone, ward FROM temp_street_details WHERE temp_refid = ? @@ -647,8 +662,9 @@ public class RequestService { """, refId); } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getFinalStreetDetails(String refId) { - return jdbcTemplate.queryForList(""" + return mysqlJdbcTemplate.queryForList(""" SELECT street_name, zone, ward FROM street_details WHERE refid = ? @@ -658,7 +674,7 @@ public class RequestService { } public boolean existsInFinal(String refId) { - Integer cnt = jdbcTemplate.queryForObject( + Integer cnt = mysqlJdbcTemplate.queryForObject( "SELECT COUNT(*) FROM user_request_details WHERE refid = ?", Integer.class, refId); @@ -685,6 +701,7 @@ public class RequestService { // return jdbcTemplate.queryForList(sql, RefId); // } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getUserDetailsfromTemp(String refId) { String sql = """ @@ -705,19 +722,19 @@ public class RequestService { WHERE ud.refid = ? """; - return jdbcTemplate.queryForList(sql, refId); + return mysqlJdbcTemplate.queryForList(sql, refId); } - @Transactional + @Transactional("mysqlgccFlagPoleTransactionManager") public int updatePaymentStatus(String RefId) { String sql = "UPDATE user_request_details SET payment_status = 'COMPLETED' WHERE refid = ? "; - return jdbcTemplate.update(sql, RefId); + return mysqlJdbcTemplate.update(sql, RefId); } - @Transactional + @Transactional("mysqlgccFlagPoleTransactionManager") public int updatePaymentStatusInOrderLog(String RefId, String OrderId) { String sql = "UPDATE order_log SET order_status = 'captured' WHERE ref_id = ? and order_id= ? "; - return jdbcTemplate.update(sql, RefId, OrderId); + return mysqlJdbcTemplate.update(sql, RefId, OrderId); } // public List> searchRequestsByRefIdOrMobile( @@ -813,6 +830,7 @@ public class RequestService { // return new ArrayList<>(resultMap.values()); // } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> searchRequestsByRefIdOrMobile( String refId, String mobileNumber) { @@ -882,7 +900,7 @@ public class RequestService { sql.append(" ORDER BY urd.cdate DESC, sd.id "); - List> rows = jdbcTemplate.queryForList(sql.toString(), params.toArray()); + List> rows = mysqlJdbcTemplate.queryForList(sql.toString(), params.toArray()); // 🔥 GROUP BY REFID Map> resultMap = new LinkedHashMap<>(); @@ -925,19 +943,22 @@ public class RequestService { return new ArrayList<>(resultMap.values()); } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getFineDetailsForUser(String RefId) { String sql = "SELECT user_name,mob_no,fine_amount FROM fine_collection WHERE ref_id = ? "; - return jdbcTemplate.queryForList(sql, RefId); + return mysqlJdbcTemplate.queryForList(sql, RefId); } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> getRestorationDetailsForUser(String RefId) { String sql = "SELECT amount,remarks,image_path FROM restoration WHERE ref_id = ? "; - return jdbcTemplate.queryForList(sql, RefId); + return mysqlJdbcTemplate.queryForList(sql, RefId); } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public List> eventPostponed(String RefId) { String sql = "SELECT * from user_request_details WHERE refid = ? "; - return jdbcTemplate.queryForList(sql, RefId); + return mysqlJdbcTemplate.queryForList(sql, RefId); } private List getEventDateRange(LocalDate startDate, int noOfDays) { @@ -1000,6 +1021,7 @@ public class RequestService { // """, refId); // } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") private void insertIntoHistoryAfterAction( String refId, String aeStatus, @@ -1008,7 +1030,7 @@ public class RequestService { String bookingStatus, String approvedBy) { - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" INSERT INTO user_request_details_history ( refid, @@ -1059,10 +1081,10 @@ public class RequestService { refId); } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public String cancelEvent(String refId) { - Map record = jdbcTemplate.queryForMap(""" + Map record = mysqlJdbcTemplate.queryForMap(""" SELECT event_date FROM user_request_details WHERE refid = ? @@ -1086,7 +1108,7 @@ public class RequestService { "CANCELLED", "USER"); - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE user_request_details SET booking_status = 'CANCELLED' WHERE refid = ? @@ -1095,6 +1117,7 @@ public class RequestService { return "CANCELLED"; } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public boolean isStreetAvailableForRangeStrict( String streetName, String zone, @@ -1124,7 +1147,7 @@ public class RequestService { ) """; - Integer count = jdbcTemplate.queryForObject( + Integer count = mysqlJdbcTemplate.queryForObject( sql, Integer.class, streetName, @@ -1247,14 +1270,14 @@ public class RequestService { // return "POSTPONED"; // } - @Transactional + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public String postponeEvent(String refId, LocalDate newStartDate) { if (isAlreadyPostponed(refId)) { return "POSTPONE_ALREADY_USED"; } - Map record = jdbcTemplate.queryForMap(""" + Map record = mysqlJdbcTemplate.queryForMap(""" SELECT event_date, no_of_days FROM user_request_details WHERE refid = ? @@ -1267,7 +1290,7 @@ public class RequestService { return "NOT_ALLOWED"; } - List> streets = jdbcTemplate.queryForList(""" + List> streets = mysqlJdbcTemplate.queryForList(""" SELECT street_name, zone, ward, latitude, longitude FROM street_details WHERE refid = ? @@ -1298,7 +1321,7 @@ public class RequestService { "POSTPONED", "USER"); - jdbcTemplate.update(""" + mysqlJdbcTemplate.update(""" UPDATE user_request_details SET event_date = ?, @@ -1313,8 +1336,9 @@ public class RequestService { return "POSTPONED"; } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public boolean isAlreadyPostponed(String refId) { - Integer count = jdbcTemplate.queryForObject(""" + Integer count = mysqlJdbcTemplate.queryForObject(""" SELECT COUNT(*) FROM user_request_details_history WHERE refid = ? @@ -1324,9 +1348,10 @@ public class RequestService { return count != null && count > 0; } + @Transactional(transactionManager = "mysqlgccFlagPoleTransactionManager") public boolean isUserExistsByMobile(String mobile) { - Integer count = jdbcTemplate.queryForObject( + Integer count = mysqlJdbcTemplate.queryForObject( "SELECT COUNT(*) FROM user_request_details WHERE mobile_number = ?", Integer.class, mobile); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 257b306..7470be5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,2 @@ +#spring.profiles.active=prod spring.profiles.active=dev \ No newline at end of file diff --git a/src/main/resources/templates/modules/flagpolesregistration/requestform.html b/src/main/resources/templates/modules/flagpolesregistration/requestform.html index 2d5a322..debadcb 100644 --- a/src/main/resources/templates/modules/flagpolesregistration/requestform.html +++ b/src/main/resources/templates/modules/flagpolesregistration/requestform.html @@ -384,7 +384,7 @@
-
diff --git a/src/test/java/com/gcc/flagpoles/FlagpolesApplicationTests.java b/src/test/java/com/gcc/flagpoles/FlagpolesApplicationTests.java deleted file mode 100644 index faba12a..0000000 --- a/src/test/java/com/gcc/flagpoles/FlagpolesApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gcc.flagpoles; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class FlagpolesApplicationTests { - - @Test - void contextLoads() { - } - -}