From 6a701cf277e6cfe945cdcc8f3fc6b065b8449a5d Mon Sep 17 00:00:00 2001 From: kanimozhi <136799210+KaNi-04@users.noreply.github.com> Date: Tue, 29 Jul 2025 15:35:11 +0530 Subject: [PATCH] Half Deposit Amount added and BookingServiceImpl changes --- .../controller/AdminAPIController.java | 2 + .../controller/Admincontroller.java | 19 +- .../controller/UserAPIController.java | 16 +- .../gcc/communityHall/entity/HallDetails.java | 14 +- .../repository/BookingDetailsRepository.java | 293 +- .../communityHall/service/BookingService.java | 6 + .../service/HallDetailService.java | 2 +- .../service/Impl/BookingServiceImpl.java | 65 +- .../service/Impl/HallDetailServiceImpl.java | 4 +- .../resources/application-prod.properties | 1 + .../templates/admin/halldetailslist.html | 3070 +++++++++-------- .../resources/templates/admin/reports.html | 177 +- .../resources/templates/user/dashboard.html | 8 +- .../templates/user/hallbookingform.html | 3 + .../templates/user/viewhallform.html | 5 +- 15 files changed, 2041 insertions(+), 1644 deletions(-) diff --git a/src/main/java/com/gcc/communityHall/controller/AdminAPIController.java b/src/main/java/com/gcc/communityHall/controller/AdminAPIController.java index 1a167acb..28f68d7c 100644 --- a/src/main/java/com/gcc/communityHall/controller/AdminAPIController.java +++ b/src/main/java/com/gcc/communityHall/controller/AdminAPIController.java @@ -211,6 +211,7 @@ public class AdminAPIController { @RequestParam("hallInchargeMobno") long hallInchargeMobno, @RequestParam("hallInchargeName") String hallInchargeName, @RequestParam("depositAmount") float depositAmount, + @RequestParam("halfDepositAmount") float halfDepositAmount, @RequestParam("fullDayRent") float fullDayRent, @RequestParam("halfDayRent") float halfDayRent, @RequestParam("parkingCapacity") String parkingCapacity, @@ -237,6 +238,7 @@ public class AdminAPIController { hallDetails.setHallInchargeMobno(hallInchargeMobno); hallDetails.setHallInchargeName(hallInchargeName); hallDetails.setDepositAmount(depositAmount); + hallDetails.setHalfDepositAmount(halfDepositAmount); hallDetails.setFullDayRent(fullDayRent); hallDetails.setHalfDayRent(halfDayRent); hallDetails.setParkingCapacity(parkingCapacity); diff --git a/src/main/java/com/gcc/communityHall/controller/Admincontroller.java b/src/main/java/com/gcc/communityHall/controller/Admincontroller.java index a004d4a1..7a49e6d5 100644 --- a/src/main/java/com/gcc/communityHall/controller/Admincontroller.java +++ b/src/main/java/com/gcc/communityHall/controller/Admincontroller.java @@ -399,6 +399,7 @@ public class Admincontroller { public String saveHall( @RequestParam String hallName, @RequestParam float depositAmount, + @RequestParam float halfdepositAmt, @RequestParam float halfDayAmt, @RequestParam float fullDayAmt, @RequestParam float gst, @@ -422,7 +423,7 @@ public class Admincontroller { @RequestParam("hallImages") MultipartFile[] hallImages, HttpSession session) { String updatedId = (String) session.getAttribute("employeeId"); hallDetailService.saveHall(hallName, depositAmount, halfDayAmt, fullDayAmt, gst, hallArea, ebNumber, ebCostPerUnit, parkingCapacity, seatingCapacity, doorNo, - street, area, zone, division, landMark, city, pinCode, latitude, longitude, hallInchargeName, hallInchargeNo, updatedId, hallImages); + street, area, zone, division, landMark, city, pinCode, latitude, longitude, hallInchargeName, hallInchargeNo, updatedId, hallImages, halfdepositAmt); String adminname = (String) session.getAttribute("usertype"); Integer loginid = (Integer) session.getAttribute("id"); ApplicationLogs logs = new ApplicationLogs(); @@ -649,6 +650,22 @@ public class Admincontroller { model.addAttribute("reporttype", reporttype); } + if ("10".equals(request)) { + + List zoneWiseBookingList = bookingService.getZoneWiseBookingList(fromDate, toDate); + model.addAttribute("zoneWiseBookingList", zoneWiseBookingList); + + // Fetch all hall data (not dependent on zone dropdown yet) + List hallWiseBookingList = bookingService.getAllHallWiseBookingList(fromDate, toDate); + String hallWiseBookingJson = new ObjectMapper().writeValueAsString(hallWiseBookingList); + model.addAttribute("hallWiseBookingList", hallWiseBookingJson); + + // Fetch all counter data + List counterWiseBookingList = bookingService.getAllCounterWiseBookingList(fromDate, toDate); + String counterWiseBookingJson = new ObjectMapper().writeValueAsString(counterWiseBookingList); + model.addAttribute("counterWiseBookingList", counterWiseBookingJson); + } + model.addAttribute("filterby", filterby); model.addAttribute("users", userList); model.addAttribute("bookings", bookingList); diff --git a/src/main/java/com/gcc/communityHall/controller/UserAPIController.java b/src/main/java/com/gcc/communityHall/controller/UserAPIController.java index ddf4e138..744df340 100644 --- a/src/main/java/com/gcc/communityHall/controller/UserAPIController.java +++ b/src/main/java/com/gcc/communityHall/controller/UserAPIController.java @@ -1729,12 +1729,13 @@ public class UserAPIController { double fullDayAmount = hallDetails.getFullDayRent(); double halfDayAmount = hallDetails.getHalfDayRent(); double depositAmount = hallDetails.getDepositAmount(); + double halfDepositAmount = hallDetails.getHalfDepositAmount(); double gstRate = hallDetails.getGst(); Map response = new HashMap<>(); double amount = calculateAmount(numDays, startPeriod, endPeriod, fullDayAmount, halfDayAmount); - double totalDepositAmount = calculateDepositAmount(numDays, startPeriod, endPeriod, depositAmount); + double totalDepositAmount = calculateDepositAmount(numDays, startPeriod, endPeriod, depositAmount, halfDepositAmount); double totalAmount; double discountAmount = 0.0; response.put("reasonforBooking", reasonforBooking); @@ -1887,17 +1888,17 @@ public class UserAPIController { } } - public double calculateDepositAmount(double numDays, String startPeriod, String endPeriod, double depositAmount) { + public double calculateDepositAmount(double numDays, String startPeriod, String endPeriod, double depositAmount, double HalfDepositAmount) { double damount = 0; - + // FOR FULL DAY // If there is only one day if (numDays == 1) { if ("1".equals(startPeriod) && "2".equals(endPeriod)) { damount = depositAmount; } else if ("1".equals(startPeriod) && "1".equals(endPeriod)) { - damount = depositAmount; + damount = HalfDepositAmount; } else if ("2".equals(startPeriod) && "2".equals(endPeriod)) { - damount = depositAmount; + damount = HalfDepositAmount; } else { damount = numDays; } @@ -1906,16 +1907,15 @@ public class UserAPIController { if ("1".equals(startPeriod) && "2".equals(endPeriod)) { damount = depositAmount * numDays; } else if ("1".equals(startPeriod) && "1".equals(endPeriod)) { - damount = depositAmount * (numDays - 1) + depositAmount; + damount = depositAmount * (numDays - 1) + HalfDepositAmount; } else if ("2".equals(startPeriod) && "2".equals(endPeriod)) { - damount = depositAmount * (numDays - 1) + depositAmount; + damount = depositAmount * (numDays - 1) + HalfDepositAmount; } else if ("2".equals(startPeriod) && "1".equals(endPeriod)) { damount = depositAmount * (numDays - 2) + depositAmount; } else { damount = numDays; } } - return damount; } diff --git a/src/main/java/com/gcc/communityHall/entity/HallDetails.java b/src/main/java/com/gcc/communityHall/entity/HallDetails.java index 6f59ed63..92fb6730 100644 --- a/src/main/java/com/gcc/communityHall/entity/HallDetails.java +++ b/src/main/java/com/gcc/communityHall/entity/HallDetails.java @@ -56,6 +56,10 @@ public class HallDetails { @Column(name = "deposit_amount", nullable = false) private float depositAmount; + + @Column(name = "half_deposit_amount", nullable = false) + private float halfDepositAmount; + @Column(name="full_day_rent",nullable=false) private float fullDayRent; @Column(name="half_day_rent",nullable=false) @@ -363,6 +367,14 @@ public class HallDetails { public void setHallDetailsConcession(List hallDetailsConcession) { this.hallDetailsConcession = hallDetailsConcession; - } + } + + public float getHalfDepositAmount() { + return halfDepositAmount; + } + + public void setHalfDepositAmount(float halfDepositAmount) { + this.halfDepositAmount = halfDepositAmount; + } } diff --git a/src/main/java/com/gcc/communityHall/repository/BookingDetailsRepository.java b/src/main/java/com/gcc/communityHall/repository/BookingDetailsRepository.java index 567f8735..f63a69be 100644 --- a/src/main/java/com/gcc/communityHall/repository/BookingDetailsRepository.java +++ b/src/main/java/com/gcc/communityHall/repository/BookingDetailsRepository.java @@ -77,8 +77,8 @@ public interface BookingDetailsRepository extends JpaRepository findFutureEventsByHallId(Integer hallId); - @Query(value = "select count(users_user_id), us.user_status from booking_details bd inner join users us on us.user_id = bd.users_user_id \r\n" - + "where users_user_id=:userId and booking_status in ('APPROVED','COMPLETED','WAITING_FOR_NOC','WAITING_FOR_NOC_APPROVAL') and DATE_SUB(CURDATE(), INTERVAL 1 YEAR) \r\n" + @Query(value = "select count(users_user_id), us.user_status from booking_details bd inner join users us on us.user_id = bd.users_user_id \r" + + "where users_user_id=:userId and booking_status in ('APPROVED','COMPLETED','WAITING_FOR_NOC','WAITING_FOR_NOC_APPROVAL') and DATE_SUB(CURDATE(), INTERVAL 1 YEAR) \r" + "and us.user_status not in ('PENDING')", nativeQuery = true) int checkUserBookinglimitation(int userId); @@ -143,29 +143,29 @@ public interface BookingDetailsRepository extends JpaRepository getBookingHallDetailsReport(@Param("fromDate") String fromDate, @Param("toDate") String toDate); - @Query(value = "SELECT \r\n" - + " COALESCE( SUM(\r\n" - + " CASE \r\n" - + " WHEN start_date = CURDATE() THEN 1\r\n" - + " ELSE 0\r\n" - + " END\r\n" - + " ),0) AS currente,\r\n" - + " COALESCE( SUM(\r\n" - + " CASE \r\n" - + " \r\n" - + " WHEN start_date < CURDATE() THEN 1\r\n" - + " ELSE 0\r\n" - + " END\r\n" - + " ), 0) AS past,\r\n" - + " COALESCE( SUM(\r\n" - + " CASE \r\n" - + " \r\n" - + " WHEN start_date > CURDATE() THEN 1\r\n" - + " ELSE 0\r\n" - + " END\r\n" - + " ),0) AS FUTURE\r\n" - + "FROM \r\n" - + " booking_details hall\r\n" + @Query(value = "SELECT \r" + + " COALESCE( SUM(\r" + + " CASE \r" + + " WHEN start_date = CURDATE() THEN 1\r" + + " ELSE 0\r" + + " END\r" + + " ),0) AS currente,\r" + + " COALESCE( SUM(\r" + + " CASE \r" + + " \r" + + " WHEN start_date < CURDATE() THEN 1\r" + + " ELSE 0\r" + + " END\r" + + " ), 0) AS past,\r" + + " COALESCE( SUM(\r" + + " CASE \r" + + " \r" + + " WHEN start_date > CURDATE() THEN 1\r" + + " ELSE 0\r" + + " END\r" + + " ),0) AS FUTURE\r" + + "FROM \r" + + " booking_details hall\r" + " where hall_details_hall_id= :hall_id and booking_status='APPROVED'", nativeQuery = true) List> pieChartCount(int hall_id); @@ -242,102 +242,102 @@ public interface BookingDetailsRepository extends JpaRepository> toatlBookingCount(String zone); - @Query(value = " SELECT SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS CANCELED,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PAYMENT_FAILURE' THEN 1 ELSE 0 END) AS PAYMENT_FAILURE,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'GCC_BLOCKED' THEN 1 ELSE 0 END) AS GCC_BLOCKED\r\n" + @Query(value = " SELECT SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS CANCELED,\r" + + " SUM(CASE WHEN bd.booking_status = 'PAYMENT_FAILURE' THEN 1 ELSE 0 END) AS PAYMENT_FAILURE,\r" + + " SUM(CASE WHEN bd.booking_status = 'GCC_BLOCKED' THEN 1 ELSE 0 END) AS GCC_BLOCKED\r" + "FROM booking_details bd " + "JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id " + "WHERE hd.zone = :zone", nativeQuery = true) List> getCount(String zone); - @Query(value = "SELECT CONCAT(YEAR(bd.start_date), '-', LPAD(MONTH(bd.start_date), 2, '0')) AS months, SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count\r\n" - + "FROM booking_details bd JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id \r\n" - + "WHERE bd.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)\r\n" - + " AND bd.start_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) AND hd.zone = :zone \r\n" + @Query(value = "SELECT CONCAT(YEAR(bd.start_date), '-', LPAD(MONTH(bd.start_date), 2, '0')) AS months, SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count\r" + + "FROM booking_details bd JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id \r" + + "WHERE bd.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)\r" + + " AND bd.start_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) AND hd.zone = :zone \r" + " group by months order by months ASC", nativeQuery = true) List> getmounthcount(String zone); - @Query(value = "SELECT CONCAT(YEAR(bd.start_date), '-', LPAD(MONTH(bd.start_date), 2, '0')) AS months, SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count\r\n" - + "FROM booking_details bd JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id \r\n" - + "WHERE bd.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)\r\n" - + " AND bd.start_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) \r\n" - + "AND (:zone = 'all zones' OR hd.zone = :zone)\r\n " + @Query(value = "SELECT CONCAT(YEAR(bd.start_date), '-', LPAD(MONTH(bd.start_date), 2, '0')) AS months, SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count\r" + + "FROM booking_details bd JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id \r" + + "WHERE bd.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)\r" + + " AND bd.start_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) \r" + + "AND (:zone = 'all zones' OR hd.zone = :zone)\r " + " group by months order by months ASC", nativeQuery = true) List> getAllAdminmonthcount(@Param("zone") String zone); - @Query(value = " SELECT SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS CANCELED,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PAYMENT_FAILURE' THEN 1 ELSE 0 END) AS PAYMENT_FAILURE,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'GCC_BLOCKED' THEN 1 ELSE 0 END) AS GCC_BLOCKED\r\n" + @Query(value = " SELECT SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'PENDING' THEN 1 ELSE 0 END) AS pending_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS CANCELED,\r" + + " SUM(CASE WHEN bd.booking_status = 'PAYMENT_FAILURE' THEN 1 ELSE 0 END) AS PAYMENT_FAILURE,\r" + + " SUM(CASE WHEN bd.booking_status = 'GCC_BLOCKED' THEN 1 ELSE 0 END) AS GCC_BLOCKED\r" + "FROM booking_details bd " + "JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id " + "WHERE (:zone = 'all zones' OR hd.zone = :zone)", nativeQuery = true) List> getAdmincount(@Param("zone") String zone); - @Query(value = "SELECT CONCAT(YEAR(bd.start_date), '-', LPAD(MONTH(bd.start_date), 2, '0')) AS months, SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'COMPLETED' THEN 1 ELSE 0 END) AS completed_count\r\n" - + "FROM booking_details bd JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id \r\n" - + "WHERE bd.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)\r\n" - + " AND bd.start_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) AND hd.hall_id=:hall_id \r\n" + @Query(value = "SELECT CONCAT(YEAR(bd.start_date), '-', LPAD(MONTH(bd.start_date), 2, '0')) AS months, SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'COMPLETED' THEN 1 ELSE 0 END) AS completed_count\r" + + "FROM booking_details bd JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id \r" + + "WHERE bd.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)\r" + + " AND bd.start_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) AND hd.hall_id=:hall_id \r" + " group by months order by months ASC", nativeQuery = true) List> getCartakermounthcount(int hall_id); - @Query(value = " SELECT SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'COMPLETED' THEN 1 ELSE 0 END) AS completed_count,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS CANCELED,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'PAYMENT_FAILURE' THEN 1 ELSE 0 END) AS PAYMENT_FAILURE,\r\n" - + " SUM(CASE WHEN bd.booking_status = 'GCC_BLOCKED' THEN 1 ELSE 0 END) AS GCC_BLOCKED\r\n" + @Query(value = " SELECT SUM(CASE WHEN booking_status = 'APPROVED' THEN 1 ELSE 0 END) AS approved_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'REJECTED' THEN 1 ELSE 0 END) AS rejected_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'COMPLETED' THEN 1 ELSE 0 END) AS completed_count,\r" + + " SUM(CASE WHEN bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS CANCELED,\r" + + " SUM(CASE WHEN bd.booking_status = 'PAYMENT_FAILURE' THEN 1 ELSE 0 END) AS PAYMENT_FAILURE,\r" + + " SUM(CASE WHEN bd.booking_status = 'GCC_BLOCKED' THEN 1 ELSE 0 END) AS GCC_BLOCKED\r" + "FROM booking_details bd " + "JOIN hall_details hd ON bd.hall_details_hall_id = hd.hall_id where hd.hall_id=:hall_id", nativeQuery = true) List> getcartakecount(int hall_id); - @Query(value = "SELECT \r\n" - + " bd.*, \r\n" - + " CASE \r\n" - + " WHEN bd.start_date < CURDATE() THEN 'Past'\r\n" - + " WHEN bd.start_date = CURDATE() THEN 'Current'\r\n" - + " WHEN bd.booking_status = 'WAITING_FOR_NOC' THEN 'waitingfornoc'\r\n" - + " WHEN bd.booking_status = 'WAITING_FOR_NOC_APPROVAL' THEN 'waitingfornocapproval'\r\n" - + " WHEN bd.schedule_count = 0 AND bd.start_date > CURDATE() THEN 'Reschedule'\r\n" + @Query(value = "SELECT \r" + + " bd.*, \r" + + " CASE \r" + + " WHEN bd.start_date < CURDATE() THEN 'Past'\r" + + " WHEN bd.start_date = CURDATE() THEN 'Current'\r" + + " WHEN bd.booking_status = 'WAITING_FOR_NOC' THEN 'waitingfornoc'\r" + + " WHEN bd.booking_status = 'WAITING_FOR_NOC_APPROVAL' THEN 'waitingfornocapproval'\r" + + " WHEN bd.schedule_count = 0 AND bd.start_date > CURDATE() THEN 'Reschedule'\r" + " WHEN bd.reason IN ('State Govt Event','Central Govt Event','Commericial & Others') AND bd.booking_status='APPROVED' THEN 'noaction'" - + " ELSE 'Future' \r\n" - + " END AS event_category,\r\n" - + " users.*, \r\n" - + " hd.*, \r\n" - + " cd.*, \r\n" - + " pd.* \r\n" - + "FROM booking_details bd \r\n" - + "INNER JOIN users users ON bd.users_user_id = users.user_id \r\n" - + "INNER JOIN hall_details hd ON hd.hall_id = bd.hall_details_hall_id \r\n" - + "LEFT JOIN counter_details cd ON cd.counter_id = bd.counterdetails_counter_id\r\n" - + "LEFT JOIN payments pd ON bd.booking_id = pd.booking_details_booking_id \r\n" - + "WHERE bd.users_user_id = :userId and booking_status IN ('GCC_BLOCKED', 'APPROVED','CANCELED','REJECTED','COMPLETED','WAITING_FOR_NOC','WAITING_FOR_NOC_APPROVAL') \r\n" - + "ORDER BY bd.booking_id DESC\r\n", nativeQuery = true) + + " ELSE 'Future' \r" + + " END AS event_category,\r" + + " users.*, \r" + + " hd.*, \r" + + " cd.*, \r" + + " pd.* \r" + + "FROM booking_details bd \r" + + "INNER JOIN users users ON bd.users_user_id = users.user_id \r" + + "INNER JOIN hall_details hd ON hd.hall_id = bd.hall_details_hall_id \r" + + "LEFT JOIN counter_details cd ON cd.counter_id = bd.counterdetails_counter_id\r" + + "LEFT JOIN payments pd ON bd.booking_id = pd.booking_details_booking_id \r" + + "WHERE bd.users_user_id = :userId and booking_status IN ('GCC_BLOCKED', 'APPROVED','CANCELED','REJECTED','COMPLETED','WAITING_FOR_NOC','WAITING_FOR_NOC_APPROVAL') \r" + + "ORDER BY bd.booking_id DESC\r", nativeQuery = true) List> getAllBookingEventsByUserId(Integer userId); //counter @@ -775,23 +775,23 @@ public interface BookingDetailsRepository extends JpaRepository> getBookingDetailsByHallId(@Param("hallId") int hallId); @@ -921,23 +921,23 @@ public interface BookingDetailsRepository extends JpaRepository> getHallDetailsForOfficer(@Param("hallId") Integer hallIid); @@ -1507,4 +1507,53 @@ public interface BookingDetailsRepository extends JpaRepository 'PENDING' GROUP BY bd.counter_id, bd.booking_id ", nativeQuery = true) List getCounterWiseBookingDetails(String fromDate, String toDate); + + @Query(value = " SELECT hd.zone, " + + " COUNT(DISTINCT hd.hall_id) AS hall_count, " + + " COUNT(bd.booking_id) AS total_count, " + + " SUM(CASE " + + " WHEN bd.booking_type = 'ONLINE' AND bd.counter_id IS NULL THEN 1 " + + " ELSE 0 " + + " END) AS online_count, " + + " SUM(CASE " + + " WHEN bd.booking_type = 'ONLINE' AND bd.counter_id IS NOT NULL THEN 1 " + + " ELSE 0 " + + " END) AS counter_count " + + "FROM hall_details hd " + + "LEFT JOIN booking_details bd " + + " ON hd.hall_id = bd.hall_details_hall_id " + + " AND DATE(bd.booking_date) BETWEEN :fromDate AND :toDate " + + " AND bd.booking_status NOT IN ('PENDING','GCC_UNBLOCKED','REFUNDED','GCC_BLOCKED') " + + " AND bd.booking_type IS NOT NULL " + + "GROUP BY hd.zone " + + "ORDER BY hd.zone", nativeQuery = true) + List getZoneWiseBookingList(String fromDate, String toDate); + + + @Query(value = " select hd.hall_id, hd.hall_name, " + + "COUNT(bd.booking_id) AS total_count, " + + " SUM(CASE " + + " WHEN bd.booking_type = 'ONLINE' AND bd.counter_id IS NULL THEN 1 " + + " ELSE 0 " + + " END) AS online_count, " + + " SUM(CASE " + + " WHEN bd.booking_type = 'ONLINE' AND bd.counter_id IS NOT NULL THEN 1 " + + " ELSE 0 " + + " END) AS counter_count, hd.zone from hall_details hd " + + "left join booking_details bd on hd.hall_id = bd.hall_details_hall_id " + + "where DATE(bd.booking_date) BETWEEN :fromDate AND :toDate and " + + "bd.booking_status not in ('PENDING','GCC_UNBLOCKED','REFUNDED','GCC_BLOCKED') and bd.booking_type is not null " + + "group by hd.hall_name, hd.hall_id ", nativeQuery = true) + List getHallWiseBookingList(String fromDate, String toDate); + + @Query(value = " SELECT " + + " bd.counter_id, bd.hall_details_hall_id, " + + " COUNT(bd.booking_id) AS booking_count " + + "FROM booking_details bd " + + "WHERE DATE(bd.booking_date) BETWEEN :fromDate AND :toDate " + + " AND bd.booking_status NOT IN ('PENDING','GCC_UNBLOCKED','REFUNDED','GCC_BLOCKED') " + + " AND bd.booking_type IS NOT NULL " + + " AND bd.counter_id IS NOT NULL " + + "GROUP BY bd.counter_id, bd.hall_details_hall_id " , nativeQuery = true) + List getCounterWiseBookingList( String fromDate, String toDate); } diff --git a/src/main/java/com/gcc/communityHall/service/BookingService.java b/src/main/java/com/gcc/communityHall/service/BookingService.java index 0ff5a630..2986a821 100644 --- a/src/main/java/com/gcc/communityHall/service/BookingService.java +++ b/src/main/java/com/gcc/communityHall/service/BookingService.java @@ -212,4 +212,10 @@ public interface BookingService { List getBookingDetailsForAllHalls(String fromDate, String toDate, String CounterId, Integer hallid); List getCounterWiseBookingDetails(String fromDate, String toDate); + + List getZoneWiseBookingList(String fromDate, String toDate); + + List getAllHallWiseBookingList(String fromDate, String toDate); + + List getAllCounterWiseBookingList(String fromDate, String toDate); } diff --git a/src/main/java/com/gcc/communityHall/service/HallDetailService.java b/src/main/java/com/gcc/communityHall/service/HallDetailService.java index 08b571fa..e293d15e 100644 --- a/src/main/java/com/gcc/communityHall/service/HallDetailService.java +++ b/src/main/java/com/gcc/communityHall/service/HallDetailService.java @@ -30,7 +30,7 @@ public interface HallDetailService { String longitude, String hallInchargeName, long hallInchargeNo, String updatedId, - MultipartFile hallImages[] ); + MultipartFile hallImages[], float halfDepositAmt ); List getHallImages(int hallId); String updateHallDetail(HallDetails hallDetails, List images); diff --git a/src/main/java/com/gcc/communityHall/service/Impl/BookingServiceImpl.java b/src/main/java/com/gcc/communityHall/service/Impl/BookingServiceImpl.java index fd10fb6b..c5c785f8 100644 --- a/src/main/java/com/gcc/communityHall/service/Impl/BookingServiceImpl.java +++ b/src/main/java/com/gcc/communityHall/service/Impl/BookingServiceImpl.java @@ -662,6 +662,7 @@ public class BookingServiceImpl implements BookingService { String endDate = formData.get("endDate").toString(); String relation = formData.get("relation").toString(); double days = Double.parseDouble(formData.get("days").toString()); + int daysrange = Integer.parseInt(formData.get("daysrange").toString()); Optional discountOpt = discountRangeService.getDiscountByUserType(user.getUsertype()); DiscountRange discountrange = discountOpt.get(); @@ -674,9 +675,19 @@ public class BookingServiceImpl implements BookingService { String usertype = user.getUsertype().toString(); String reason = reasonMaster.getReason(); - //double depositeamount = hallDetails.getDepositAmount() * daysrange; - double depositeamount = hallDetails.getDepositAmount() * Math.ceil(days); + String startingSlot_txt = formData.get("startingSlot").toString(); + String endingSlot_txt = formData.get("endingSlot").toString(); + //double depositeamount = hallDetails.getDepositAmount() * daysrange; + double depositeamount = hallDetails.getDepositAmount() ; + System.out.println("depositeamount...."+depositeamount); + double halfDepositAmount = hallDetails.getHalfDepositAmount(); + System.out.println("halfDepositAmount...."+halfDepositAmount); + System.err.println("days.."+days); + System.err.println("daysrange.."+daysrange); + double Totaldepositeamount = calculateDepositAmount(daysrange, startingSlot_txt, endingSlot_txt, depositeamount, halfDepositAmount); + System.out.println("Totaldepositeamount.."+Totaldepositeamount); + depositeamount = Totaldepositeamount; // Calculate discount based on user type if (usertype.equals("COUNCILLOR") || usertype.equals("PENSIONER") || usertype.equals("GCC_EMPLOYEE") || usertype.equals("PUBLIC")) { discountAmount = (hallAmount * discount) / 100; @@ -952,6 +963,41 @@ public class BookingServiceImpl implements BookingService { return hallAmount; } + public double calculateDepositAmount(double numDays, String startPeriod, String endPeriod, double depositAmount, double HalfDepositAmount) { + double damount = 0; + // FOR FULL DAY + // If there is only one day + System.err.println("in calculate numDays..."+numDays); + System.err.println("in calculate depositAmount..."+depositAmount); + System.err.println("in calculate HalfDepositAmount..."+HalfDepositAmount); + if (numDays == 1) { + if ("1".equals(startPeriod) && "2".equals(endPeriod)) { + damount = depositAmount; + } else if ("1".equals(startPeriod) && "1".equals(endPeriod)) { + damount = HalfDepositAmount; + } else if ("2".equals(startPeriod) && "2".equals(endPeriod)) { + damount = HalfDepositAmount; + } else { + damount = numDays; + } + } else { + // For multiple days + if ("1".equals(startPeriod) && "2".equals(endPeriod)) { + damount = depositAmount * numDays; + } else if ("1".equals(startPeriod) && "1".equals(endPeriod)) { + damount = depositAmount * (numDays - 1) + HalfDepositAmount; + } else if ("2".equals(startPeriod) && "2".equals(endPeriod)) { + damount = depositAmount * (numDays - 1) + HalfDepositAmount; + } else if ("2".equals(startPeriod) && "1".equals(endPeriod)) { + damount = depositAmount * (numDays - 2) + depositAmount; + } else { + damount = numDays; + } + } + System.err.println("in calculate damount..."+damount); + return damount; + } + public String uploadNOCFile(MultipartFile file, int bookingId) { // Retrieve booking details, throw an exception if not found BookingDetails bookingDetails = bookingDetailsRepository.findById(bookingId) @@ -2478,4 +2524,19 @@ public class BookingServiceImpl implements BookingService { return bookingDetailsRepository.getCounterWiseBookingDetails(fromDate,toDate); } + @Override + public List getZoneWiseBookingList(String fromDate, String toDate){ + return bookingDetailsRepository.getZoneWiseBookingList(fromDate,toDate); + } + + @Override + public List getAllHallWiseBookingList(String fromDate, String toDate){ + return bookingDetailsRepository.getHallWiseBookingList(fromDate,toDate); + } + + @Override + public List getAllCounterWiseBookingList(String fromDate, String toDate){ + return bookingDetailsRepository.getCounterWiseBookingList( fromDate,toDate); + } + } diff --git a/src/main/java/com/gcc/communityHall/service/Impl/HallDetailServiceImpl.java b/src/main/java/com/gcc/communityHall/service/Impl/HallDetailServiceImpl.java index 0020b92b..07e87e5a 100644 --- a/src/main/java/com/gcc/communityHall/service/Impl/HallDetailServiceImpl.java +++ b/src/main/java/com/gcc/communityHall/service/Impl/HallDetailServiceImpl.java @@ -70,7 +70,7 @@ public class HallDetailServiceImpl implements HallDetailService { String doorNo, String street, String area, String zone, String division, String landMark, String city, int pinCode, String latitude, String longitude, String hallInchargeName, - long hallInchargeNo,String updatedId, MultipartFile[] hallImages) { + long hallInchargeNo,String updatedId, MultipartFile[] hallImages, float halfDepositAmt) { HallDetails hall = new HallDetails(); hall.setHallName(hallName); hall.setDoorNo(doorNo); @@ -96,6 +96,7 @@ public class HallDetailServiceImpl implements HallDetailService { hall.setLankMark(landMark); hall.setUpdatedId(updatedId); hall.setCreateddate(LocalDate.now()); + hall.setHalfDepositAmount(halfDepositAmt); HallDetails hallDetails = hallDetailsRepository.save(hall); if(hallImages!=null && hallImages.length>0){ int i=0; @@ -196,6 +197,7 @@ public class HallDetailServiceImpl implements HallDetailService { existingHall.setLatitude(hallDetails.getLatitude()); existingHall.setLongitude(hallDetails.getLongitude()); existingHall.setDepositAmount(hallDetails.getDepositAmount()); + existingHall.setHalfDepositAmount(hallDetails.getHalfDepositAmount()); existingHall.setFullDayRent(hallDetails.getFullDayRent()); existingHall.setHalfDayRent(hallDetails.getHalfDayRent()); existingHall.setParkingCapacity(hallDetails.getParkingCapacity()); diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 48ce50f2..bece02c8 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -22,6 +22,7 @@ app.erpUrl=https://erp.chennaicorporation.gov.in/pgr/external/mobileservice? server.address=0.0.0.0 server.port=8062 + #fileHanding file.upload.directory=${user.dir}/communityHallDocuments file.hall.upload.directory=${user.dir}/communityHallDocuments/hallImages diff --git a/src/main/resources/templates/admin/halldetailslist.html b/src/main/resources/templates/admin/halldetailslist.html index 4559a201..561062e9 100644 --- a/src/main/resources/templates/admin/halldetailslist.html +++ b/src/main/resources/templates/admin/halldetailslist.html @@ -4,806 +4,864 @@ - -