Browse Source

changes in coworkspace ,community hall and implemented swimmingpool

master
AJITHKUMAR12 2 months ago
parent
commit
f27e490d04
  1. 16
      src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java
  2. 15
      src/main/java/com/gcc/commissionerreview/controller/CoworkspaceApicontroller.java
  3. 5
      src/main/java/com/gcc/commissionerreview/controller/MainController.java
  4. 51
      src/main/java/com/gcc/commissionerreview/controller/SwimmingPoolApiController.java
  5. 4
      src/main/java/com/gcc/commissionerreview/service/CommunityHallService.java
  6. 440
      src/main/java/com/gcc/commissionerreview/service/CoworkspaceService.java
  7. 159
      src/main/java/com/gcc/commissionerreview/service/SwimmingPoolApiService.java
  8. 187
      src/main/resources/templates/modules/community.html
  9. 178
      src/main/resources/templates/modules/communitycaretaker.html
  10. 108
      src/main/resources/templates/modules/communityrefund.html
  11. 8
      src/main/resources/templates/modules/communityreport.html
  12. 281
      src/main/resources/templates/modules/coworkspace.html
  13. 1105
      src/main/resources/templates/modules/swimmingpoolreport.html

16
src/main/java/com/gcc/commissionerreview/configuration/DataSourceConfig.java

@ -17,8 +17,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
public class DataSourceConfig {
// private static String host = "localhost:3306";
// private static String dbpassword = "root";
// private static String host = "localhost:3306";
// private static String dbpassword = "root";
private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
private static String dbpassword = "gcc-facial-password";
@ -239,6 +239,7 @@ public class DataSourceConfig {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://" + host + "/coworkingspace");
// dataSource.setUrl("jdbc:mysql://" + host + "/coworkingspace_latest");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
@ -256,4 +257,15 @@ public class DataSourceConfig {
return dataSource;
}
////////// Swimming pool //////////////////////
@Bean(name = "mysqlSwimmingPoolDataSource")
public DataSource mysqlSwimmingPoolDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://" + host + "/swimmingpool");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
}

15
src/main/java/com/gcc/commissionerreview/controller/CoworkspaceApicontroller.java

@ -82,4 +82,19 @@ public class CoworkspaceApicontroller {
}
@GetMapping("/desk-slot-summary")
public ResponseEntity<?> deskSlotSummary(
@RequestParam Integer bid,
@RequestParam Integer cid,
@RequestParam String fromDate,
@RequestParam String toDate) {
return ResponseEntity.ok(
reportService.getDeskSlotSummary(
bid,
cid,
fromDate,
toDate));
}
}

5
src/main/java/com/gcc/commissionerreview/controller/MainController.java

@ -378,4 +378,9 @@ public class MainController {
return "modules/foodschemeanddistribution";
}
@GetMapping("/swimmingpoolreport")
public String swimmingpoolreport(Model model) {
return "modules/swimmingpoolreport";
}
}

51
src/main/java/com/gcc/commissionerreview/controller/SwimmingPoolApiController.java

@ -0,0 +1,51 @@
package com.gcc.commissionerreview.controller;
import com.gcc.commissionerreview.service.SwimmingPoolApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/commissionerreview/api/swimmingpoolreport")
public class SwimmingPoolApiController {
@Autowired
private SwimmingPoolApiService swimmingPoolApiService ;
@GetMapping("/getBookDetails")
public List<Map<String, Object>> getAbstractReport(){
return swimmingPoolApiService.getBookDetails();
}
@GetMapping("/getAbstractReport")
public List<Map<String, Object>> getAbstractReport(
@RequestParam(required = false) String fromDate,
@RequestParam(required = false) String toDate) {
return swimmingPoolApiService.getAbstractReport(fromDate, toDate);
}
@GetMapping("/getDetailsReport")
public List<Map<String, Object>> getDetailsReport(
@RequestParam String registerDate,
@RequestParam Integer slotOrder) {
return swimmingPoolApiService.getDetailsReport(registerDate, slotOrder);
}
}

4
src/main/java/com/gcc/commissionerreview/service/CommunityHallService.java

@ -241,7 +241,7 @@ public class CommunityHallService {
sql.append(
"""
select hd.zone, hd.division, hd.hall_id, hd.hall_name, date_format(hd.c_date, '%d-%m-%Y') as hall_Created_date,
case when hd.is_active = 1 then 'Active Hall' else 'Deactivated Hall' end as Hall_Status,
case when hd.is_active = 1 then 'Active' else 'Deactivated' end as Hall_Status,
hd.hall_incharge_name as caretaker_name, hd.hall_incharge_no as caretake_no,
count(bd.booking_id) as total_no_of_bookings,
sum( case when bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS cancelled_bookings,
@ -374,7 +374,7 @@ public class CommunityHallService {
sql.append(
"""
select hd.zone, hd.division, hd.hall_id, hd.hall_name, date_format(hd.c_date, '%d-%m-%Y') as hall_Created_date,
case when hd.is_active = 1 then 'Active Hall' else 'Deactivated Hall' end as Hall_Status,
case when hd.is_active = 1 then 'Active' else 'Deactivated' end as Hall_Status,
hd.hall_incharge_name as caretaker_name, hd.hall_incharge_no as caretake_no,
count(bd.booking_id) as total_no_of_bookings,
sum( case when bd.booking_status = 'CANCELED' THEN 1 ELSE 0 END) AS cancelled_bookings,

440
src/main/java/com/gcc/commissionerreview/service/CoworkspaceService.java

@ -354,6 +354,8 @@ public class CoworkspaceService {
b.name AS building_name,
b.inauguration_date,
b.zone,
b.ward,
DATEDIFF(CURDATE(), DATE(b.inauguration_date)) AS operational_days,
COUNT(bk.booking_id) AS total_bookings,
@ -475,7 +477,7 @@ public class CoworkspaceService {
cs.total_slot
ORDER BY
b.bid
b.zone,b.ward
""");
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
@ -486,8 +488,14 @@ public class CoworkspaceService {
sql.append(
"""
SELECT
b.bid, b.name AS building_name, b.inauguration_date,
b.bid, b.name AS building_name, b.inauguration_date,b.zone,b.ward,
CASE WHEN DATE(b.inauguration_date) > ? THEN 0 ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1 END AS coverage_days,
(SELECT c.cid
FROM category c
WHERE c.bid = b.bid
AND c.display_name = 'Desk Space'
LIMIT 1
) AS desk_space_cid,
(
CASE
@ -635,7 +643,7 @@ public class CoworkspaceService {
) AS meeting_booked_slots
FROM buildings b
WHERE b.isactive = 1 AND b.isdelete = 0
ORDER BY b.bid
ORDER BY b.zone,b.ward
""");
List<Object> params = new ArrayList<>();
@ -672,146 +680,50 @@ public class CoworkspaceService {
StringBuilder sql = new StringBuilder();
sql.append(
"""
SELECT
b.bid,
b.name AS building_name,
b.inauguration_date,
CASE WHEN DATE(b.inauguration_date) > ? THEN 0 ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1 END AS coverage_days,
/* CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(
?,
GREATEST(DATE(b.inauguration_date), ?)
) + 1
END
*
(
SELECT COALESCE(
SUM(
CASE
WHEN sl.slotid IN (8,9,110,111,62,61) THEN 2
ELSE 1
END
),0)
FROM category c
INNER JOIN subcategory sc
ON sc.cid = c.cid
INNER JOIN slots sl
ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Desk Space'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS desk_available_slots, */
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
END
)
*
(
SELECT COALESCE(
SUM(
(
CASE
WHEN sl.slotid IN (8,9,110,111,62,61) THEN 2
ELSE 1
END
) * sc.capacity
),0)
FROM category c
INNER JOIN subcategory sc
ON sc.cid = c.cid
INNER JOIN slots sl
ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Desk Space'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS desk_available_slots,
(
SELECT COALESCE(count(cl.bookingid),0)
FROM calendar cl
INNER JOIN booking bk ON bk.booking_id = cl.bookingid
INNER JOIN category c ON c.cid = bk.cid AND c.bid = bk.bid
WHERE bk.bid = b.bid
AND c.display_name = 'Desk Space'
AND DATE(cl.bdate) BETWEEN ? AND ?
AND cl.is_active = 1 AND cl.is_delete = 0
AND bk.booking_status = 'success'
) AS desk_booked_slots,
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
END
)
*
(
SELECT COALESCE(
SUM(COUNT(sl.slotid) * sc.capacity),0
)
FROM category c
INNER JOIN subcategory sc ON sc.cid = c.cid
INNER JOIN slots sl ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Learning Centre'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS learning_available_slots,
/* (
CASE WHEN DATE(b.inauguration_date) > ? THEN 0 ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1 END
) * 5 AS learning_available_slots,*/
(
SELECT COALESCE(count(cl.bookingid), 0)
FROM calendar cl
INNER JOIN booking bk ON bk.booking_id = cl.bookingid
INNER JOIN category c ON c.cid = bk.cid AND c.bid = bk.bid
WHERE bk.bid = b.bid
AND c.display_name = 'Learning Centre'
AND DATE(cl.bdate) BETWEEN GREATEST(DATE(b.inauguration_date), ?) AND ?
AND cl.is_active = 1 AND cl.is_delete = 0
AND bk.booking_status = 'success'
) AS learning_booked_slots,
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
END
)
*
(
SELECT COALESCE(
SUM(sc.capacity),0
)
SELECT
b.bid,
b.name AS building_name,
b.inauguration_date,
CASE WHEN DATE(b.inauguration_date) > ? THEN 0 ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1 END AS coverage_days,
(
SELECT c.cid
FROM category c
INNER JOIN subcategory sc ON sc.cid = c.cid
INNER JOIN slots sl ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Meeting Rooms'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS meeting_available_slots,
(
AND c.display_name = 'Desk Space'
LIMIT 1
) AS desk_space_cid,
/* CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(
?,
GREATEST(DATE(b.inauguration_date), ?)
) + 1
END
*
(
SELECT COALESCE(
SUM(
CASE
WHEN sl.slotid IN (8,9,110,111,62,61) THEN 2
ELSE 1
END
),0)
FROM category c
INNER JOIN subcategory sc
ON sc.cid = c.cid
INNER JOIN slots sl
ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Desk Space'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS desk_available_slots, */
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
@ -819,36 +731,140 @@ public class CoworkspaceService {
)
*
(
SELECT COUNT(sl.slotid)
SELECT COALESCE(
SUM(
(
CASE
WHEN sl.slotid IN (8,9,110,111,62,61) THEN 2
ELSE 1
END
) * sc.capacity
),0)
FROM category c
INNER JOIN subcategory sc
ON sc.cid = c.cid
INNER JOIN slots sl
ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Meeting Rooms'
AND c.display_name = 'Desk Space'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS meeting_available_slots,*/
) AS desk_available_slots,
(
SELECT COUNT(cl.calid)
FROM calendar cl
INNER JOIN booking bk ON bk.booking_id = cl.bookingid
INNER JOIN category c ON c.cid = bk.cid AND c.bid = bk.bid
WHERE bk.bid = b.bid
AND c.display_name = 'Meeting Rooms'
AND DATE(cl.bdate) BETWEEN GREATEST(DATE(b.inauguration_date), ?) AND ?
AND cl.is_active = 1 AND cl.is_delete = 0
AND bk.booking_status = 'success'
) AS meeting_booked_slots
FROM buildings b
WHERE b.isactive = 1 AND b.isdelete = 0
ORDER BY b.bid
""");
SELECT COALESCE(count(cl.bookingid),0)
FROM calendar cl
INNER JOIN booking bk ON bk.booking_id = cl.bookingid
INNER JOIN category c ON c.cid = bk.cid AND c.bid = bk.bid
WHERE bk.bid = b.bid
AND c.display_name = 'Desk Space'
AND DATE(cl.bdate) BETWEEN ? AND ?
AND cl.is_active = 1 AND cl.is_delete = 0
AND bk.booking_status = 'success'
) AS desk_booked_slots,
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
END
)
*
(
SELECT COALESCE(
SUM(COUNT(sl.slotid) * sc.capacity),0
)
FROM category c
INNER JOIN subcategory sc ON sc.cid = c.cid
INNER JOIN slots sl ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Learning Centre'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS learning_available_slots,
/* (
CASE WHEN DATE(b.inauguration_date) > ? THEN 0 ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1 END
) * 5 AS learning_available_slots,*/
(
SELECT COALESCE(count(cl.bookingid), 0)
FROM calendar cl
INNER JOIN booking bk ON bk.booking_id = cl.bookingid
INNER JOIN category c ON c.cid = bk.cid AND c.bid = bk.bid
WHERE bk.bid = b.bid
AND c.display_name = 'Learning Centre'
AND DATE(cl.bdate) BETWEEN GREATEST(DATE(b.inauguration_date), ?) AND ?
AND cl.is_active = 1 AND cl.is_delete = 0
AND bk.booking_status = 'success'
) AS learning_booked_slots,
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
END
)
*
(
SELECT COALESCE(
SUM(sc.capacity),0
)
FROM category c
INNER JOIN subcategory sc ON sc.cid = c.cid
INNER JOIN slots sl ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Meeting Rooms'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS meeting_available_slots,
(
CASE
WHEN DATE(b.inauguration_date) > ? THEN 0
ELSE DATEDIFF(?, GREATEST(DATE(b.inauguration_date), ?)) + 1
END
)
*
(
SELECT COUNT(sl.slotid)
FROM category c
INNER JOIN subcategory sc
ON sc.cid = c.cid
INNER JOIN slots sl
ON sl.scid = sc.scid
WHERE c.bid = b.bid
AND c.display_name = 'Meeting Rooms'
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS meeting_available_slots,*/
(
SELECT COUNT(cl.calid)
FROM calendar cl
INNER JOIN booking bk ON bk.booking_id = cl.bookingid
INNER JOIN category c ON c.cid = bk.cid AND c.bid = bk.bid
WHERE bk.bid = b.bid
AND c.display_name = 'Meeting Rooms'
AND DATE(cl.bdate) BETWEEN GREATEST(DATE(b.inauguration_date), ?) AND ?
AND cl.is_active = 1 AND cl.is_delete = 0
AND bk.booking_status = 'success'
) AS meeting_booked_slots
FROM buildings b
WHERE b.isactive = 1 AND b.isdelete = 0
ORDER BY b.bid
""");
List<Object> params = new ArrayList<>();
// COVERAGE DAYS
@ -885,4 +901,112 @@ public class CoworkspaceService {
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
public List<Map<String, Object>> getDeskSlotSummary(
Integer bid,
Integer cid,
String fromDate,
String toDate) {
String sql = """
SELECT
d.slot_date,
/* Available Slots Per Day */
(
SELECT COALESCE(
MAX(
CASE
WHEN sl.slotid IN (8,9,110,111,62,61)
THEN sc.capacity * 2
ELSE sc.capacity
END
),0)
FROM category c
INNER JOIN subcategory sc
ON sc.cid = c.cid
INNER JOIN slots sl
ON sl.scid = sc.scid
WHERE c.bid = ?
AND c.cid = ?
AND c.isactive = 1
AND c.isdelete = 0
AND sc.isactive = 1
AND sc.isdelete = 0
AND sl.isactive = 1
AND sl.isdelete = 0
) AS available_slots,
/* Attended (Slot Count) */
(
SELECT COALESCE(
SUM(
CASE
WHEN c1.slotid IN (8,9,110,111,62,61)
THEN 2
ELSE 1
END
),0)
FROM calendar c1
INNER JOIN booking b1
ON b1.booking_id = c1.bookingid
WHERE b1.bid = ?
AND b1.cid = ?
AND b1.booking_status = 'success'
AND DATE(c1.bdate)=d.slot_date
AND c1.is_active = 1
AND c1.is_delete = 0
) AS attended,
/* Not Attended (Absent Booking Count) */
(
SELECT COUNT(DISTINCT a.booking_id)
FROM attendance a
INNER JOIN booking b2
ON b2.booking_id = a.booking_id
INNER JOIN calendar c2
ON c2.bookingid = b2.booking_id
WHERE b2.bid = ?
AND b2.cid = ?
AND b2.booking_status='success'
AND DATE(c2.bdate)=d.slot_date
AND a.attendance_status='ABSENT'
) AS not_attended
FROM
(
SELECT DISTINCT DATE(bdate) AS slot_date
FROM calendar
WHERE bid = ?
AND cid = ?
AND DATE(bdate) BETWEEN ? AND ?
AND is_active = 1
AND is_delete = 0
) d
ORDER BY d.slot_date
""";
return jdbcTemplate.queryForList(
sql,
// Available Slots
bid,
cid,
// Attended
bid,
cid,
// Not Attended
bid,
cid,
// Date List
bid,
cid,
fromDate,
toDate);
}
}

159
src/main/java/com/gcc/commissionerreview/service/SwimmingPoolApiService.java

@ -0,0 +1,159 @@
package com.gcc.commissionerreview.service;
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 javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class SwimmingPoolApiService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
public void setFeedbackDataSource(@Qualifier("mysqlSwimmingPoolDataSource") DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List<Map<String, Object>> getAbstractReport(String fromDate, String toDate) {
String sql =
"SELECT " +
"DATE_FORMAT(t.c_date, '%d-%m-%Y') AS c_date, " +
"t.total_revenue, " +
"t.slot1_count, " +
"t.slot2_count, " +
"t.slot3_count, " +
"t.slot4_count, " +
"t.slot5_count, " +
"t.slot6_count, " +
"t.slot7_count, " +
"t.slot8_count, " +
"t.slot9_count, " +
"t.slot10_count, " +
"t.slot11_count, " +
"t.slot12_count, " +
"t.slot13_count, " +
"t.slot14_count " +
"FROM ( " +
"SELECT " +
"DATE(bd.cdate) AS c_date, " +
"SUM(bd.total_amount) AS total_revenue, " +
"SUM(CASE WHEN bd.slot_order = 1 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot1_count, " +
"SUM(CASE WHEN bd.slot_order = 2 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot2_count, " +
"SUM(CASE WHEN bd.slot_order = 3 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot3_count, " +
"SUM(CASE WHEN bd.slot_order = 4 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot4_count, " +
"SUM(CASE WHEN bd.slot_order = 5 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot5_count, " +
"SUM(CASE WHEN bd.slot_order = 6 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot6_count, " +
"SUM(CASE WHEN bd.slot_order = 7 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot7_count, " +
"SUM(CASE WHEN bd.slot_order = 8 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot8_count, " +
"SUM(CASE WHEN bd.slot_order = 9 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot9_count, " +
"SUM(CASE WHEN bd.slot_order = 10 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot10_count, " +
"SUM(CASE WHEN bd.slot_order = 11 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot11_count, " +
"SUM(CASE WHEN bd.slot_order = 12 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot12_count, " +
"SUM(CASE WHEN bd.slot_order = 13 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot13_count, " +
"SUM(CASE WHEN bd.slot_order = 14 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot14_count " +
"FROM booking_details bd " +
"LEFT JOIN payment py ON py.order_id = bd.orderid " +
"WHERE py.payment_status = 'paid' " +
"AND bd.is_active = 1 " +
"AND bd.is_delete = 0 " +
"AND bd.booking_mode = 'ONLINE' ";
List<Object> params = new ArrayList<>();
if (fromDate != null && !fromDate.isBlank()
&& toDate != null && !toDate.isBlank()) {
sql += " AND DATE(bd.cdate) BETWEEN ? AND ? ";
params.add(fromDate);
params.add(toDate);
}
sql += " GROUP BY DATE(bd.cdate) ) t ";
sql += " ORDER BY t.c_date DESC";
return jdbcTemplate.queryForList(sql, params.toArray());
}
/*public List<Map<String, Object>> getAbstractReport(String fromDate, String toDate) {
String sql = " SELECT DATE_FORMAT(DATE(bd.cdate), '%d-%m-%Y') AS c_date, SUM(bd.total_amount) AS total_revenue, " +
" SUM(CASE WHEN bd.slot_order = 1 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot1_count, " +
" SUM(CASE WHEN bd.slot_order = 2 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot2_count, " +
" SUM(CASE WHEN bd.slot_order = 3 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot3_count, " +
" SUM(CASE WHEN bd.slot_order = 4 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot4_count, " +
" SUM(CASE WHEN bd.slot_order = 5 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot5_count, " +
" SUM(CASE WHEN bd.slot_order = 6 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot6_count, " +
" SUM(CASE WHEN bd.slot_order = 7 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot7_count, " +
" SUM(CASE WHEN bd.slot_order = 8 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot8_count, " +
" SUM(CASE WHEN bd.slot_order = 9 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot9_count, " +
" SUM(CASE WHEN bd.slot_order = 10 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot10_count, " +
" SUM(CASE WHEN bd.slot_order = 11 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot11_count, " +
" SUM(CASE WHEN bd.slot_order = 12 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot12_count, " +
" SUM(CASE WHEN bd.slot_order = 13 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot13_count, " +
" SUM(CASE WHEN bd.slot_order = 14 THEN (bd.no_of_adults + bd.no_of_kids) ELSE 0 END) AS slot14_count " +
" FROM booking_details bd " +
" LEFT JOIN payment py ON py.order_id = bd.orderid " +
" WHERE py.payment_status = 'paid' AND bd.is_active = 1 AND bd.is_delete = 0 AND bd.booking_mode = 'ONLINE' " ;
List<Object> params = new ArrayList<>();
if (fromDate != null && !fromDate.isBlank()
&& toDate != null && !toDate.isBlank()) {
sql += " AND DATE(bd.cdate) BETWEEN ? AND ? ";
params.add(fromDate);
params.add(toDate);
}
sql += " group by date(bd.cdate) " ;
sql += " order by date(bd.cdate) desc ";
System.out.println(sql);
return jdbcTemplate.queryForList(sql, params.toArray());
}*/
public List<Map<String, Object>> getDetailsReport(String registerDate,
Integer slotOrder) {
String sql = " SELECT " +
" bd.mobile_no,bd.name,DATE_FORMAT(bd.slot_from_date, '%d-%m-%Y') AS slot_from_date,DATE_FORMAT(bd.slot_to_date, '%d-%m-%Y') AS slot_to_date,bd.total_amount,(bd.no_of_adults + bd.no_of_kids) AS total_members, " +
" st.slot_timing " +
" FROM booking_details bd " +
" LEFT JOIN payment py ON py.order_id = bd.orderid " +
" LEFT JOIN slot_timing st ON st.id = bd.slot_order " +
" WHERE py.payment_status = 'paid' AND bd.is_active = 1 AND bd.is_delete = 0 " +
" AND bd.booking_mode = 'ONLINE' AND DATE(bd.cdate) = STR_TO_DATE(?, '%d-%m-%Y') AND bd.slot_order = ? " ;
return jdbcTemplate.queryForList(sql, registerDate, slotOrder);
}
public List<Map<String, Object>> getBookDetails() {
String sql = " select count(bd.id) AS total_bookings,sum(bd.total_amount) AS total_revenue from booking_details bd " +
" left join payment py on py.order_id = bd.orderid " +
" where bd.booking_mode = 'ONLINE' AND bd.is_active = 1 AND bd.is_delete = 0 AND py.payment_status = 'paid' " ;
return jdbcTemplate.queryForList(sql);
}
}

187
src/main/resources/templates/modules/community.html

@ -2,7 +2,7 @@
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>Community Hall Booking Report</title>
<title>Community Hall Popularity Report</title>
<!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
@ -129,11 +129,91 @@
word-break: break-word;
}
.hall-name-wrap {
width: 220px !important;
min-width: 220px !important;
max-width: 220px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.hall-status-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.zone-wrap {
width: 40px !important;
min-width: 40px !important;
max-width: 40px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.sno-wrap {
width: 40px !important;
min-width: 40px !important;
max-width: 40px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.ward-wrap {
width: 40px !important;
min-width: 40px !important;
max-width: 40px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.hall-number-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.bookingavailable-wrap {
width: 80px !important;
min-width: 80px !important;
max-width: 80px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.totalbookings-wrap {
width: 90px !important;
min-width: 90px !important;
max-width: 90px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
#hallBookingTable th:not(:nth-child(4)),
#hallBookingTable td:not(:nth-child(4)) {
white-space: nowrap;
}
/* Scrollbar */
.dataTables_scrollBody::-webkit-scrollbar {
height: 8px;
@ -144,6 +224,9 @@
border-radius: 4px;
}
.dataTables_scrollBody::-webkit-scrollbar-track {
background: #f1f1f1;
}
@ -233,15 +316,17 @@
<th>S.No</th>
<th>Zone</th>
<th>Division</th>
<th>Hall Id</th>
<th class="text-wrap">Hall Name</th>
<th>Hall Id / Hall Name</th>
<th>Hall Created On / Hall Status</th>
<th>Caretaker Name / Mobile No</th>
<!--<th class="text-wrap">Hall Name</th>
<th class="text-center">Created Date</th>
<th class="text-center">Status</th>
<th class="text-center">Caretaker Name</th>
<th class="text-center">Caretaker No</th>
<th class="text-center">Caretaker No</th>-->
<th>Booking Available Days</th>
<th>Total Bookings</th>
<th>Booking<br> Available<br>Days</th>
<th>Total<br>Bookings</th>
<th>Half Day</th>
<th>Full Day</th>
<th>1.5 Days</th>
@ -411,12 +496,12 @@
30, // S.No
30, // Zone
50, // Division
30, // Hall Id
130, // Hall Name
60, // Created Date
70, // Status
70, // Caretaker Name
70, // Caretaker No
// Hall Id
160, // Hall Name
// Created Date
130, // Status
140, // Caretaker Name
// Caretaker No
80, // Booking Available Days
80, // Total Bookings
@ -444,10 +529,12 @@
scrollCollapse: true,
autoWidth: false,
paging: false,
paging: true,
pageLength: 10,
lengthMenu: [[10, 25, 50, 100], [10, 25, 50, 100]],
fixedColumns: {
leftColumns: 9
leftColumns: 6
},
@ -472,12 +559,36 @@
{ data: 'sno', width: '50px' },
{ data: 'zone', width: '60px' },
{ data: 'division', width: '70px' },
{ data: 'hall_id', width: '60px' },
{ data: 'hall_name', width: '220px' },
{ data: 'hall_created_date', width: '100px' },
{ data: 'hall_status', width: '120px' },
{ data: 'caretaker_name', width: '150px' },
{ data: 'caretaker_no', width: '120px' },
{
data: null,
render: function (data, type, row) {
return row.hall_id + " - " + row.hall_name;
}
},
{
data: null,
render: function (data, type, row) {
return `
${row.hall_created_date}<br>
${row.hall_status}
`;
}
},
{
data: null,
render: function (data, type, row) {
return `
${row.caretaker_name}<br>
${row.caretaker_no}
`;
}
},
// { data: 'hall_id', width: '60px' },
// { data: 'hall_name', width: '220px' },
// { data: 'hall_created_date', width: '100px' },
// { data: 'hall_status', width: '120px' },
// { data: 'caretaker_name', width: '150px' },
// { data: 'caretaker_no', width: '120px' },
{ data: 'booking_available_days', width: '120px' },
{ data: 'total_no_of_bookings', width: '100px' },
@ -485,6 +596,41 @@
{ data: 'full_day_booking_count', width: '80px' },
{ data: 'one_point_five_days_booking_count', width: '90px' },
{ data: 'two_days_booking_count', width: '80px' }
],
columnDefs: [
{
targets: 0, // Hall Id / Hall Name
className: "sno-wrap"
},
{
targets: 1, // Hall Id / Hall Name
className: "zone-wrap"
},
/* {
targets: 2, // Hall Id / Hall Name
className: "ward-wrap"
},*/
{
targets: 3, // Hall Id / Hall Name
className: "hall-name-wrap"
},
{
targets: 4, // Hall Created On / Hall Status
className: "hall-status-wrap"
},
{
targets: 5, // Hall Created On / Hall Status
className: "hall-number-wrap"
},
{
targets: 7, // Hall Created On / Hall Status
className: "totalbookings-wrap"
},
{
targets: 0, // Hall Id / Hall Name
className: "bookingavailable-wrap"
},
]
});
}
@ -616,6 +762,7 @@
status: $('#status').val()
},
success: function (response) {
// console.log(response);
table.clear();

178
src/main/resources/templates/modules/communitycaretaker.html

@ -144,10 +144,87 @@
word-break: break-word !important;
}*/
.hall-name-wrap {
width: 220px !important;
min-width: 220px !important;
max-width: 220px !important;
white-space: normal !important;
word-break: break-word;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.hall-status-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.eventcompleted-wrap {
width: 80px !important;
min-width: 80px !important;
max-width: 80px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.no-wrap {
white-space: nowrap !important;
word-break: normal !important;
overflow-wrap: normal !important;
min-width: 180px !important;
width: 180px !important;
max-width: 180px !important;
}
/* .cancelledrefund-wrap {
width: 90px !important;
min-width: 90px !important;
max-width: 90px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.rejectrefundrefund-wrap {
width: 80px !important;
min-width: 80px !important;
max-width: 80px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.totalrefundrefund-wrap {
width: 80px !important;
min-width: 80px !important;
max-width: 80px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.totalrefundpending-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
*/
.hall-number-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
@ -265,18 +342,18 @@
<th rowspan="2">S.No</th>
<th rowspan="2">Zone</th>
<th rowspan="2">Division</th>
<th rowspan="2">Hall Id</th>
<th rowspan="2">Hall Name</th>
<th rowspan="2">Hall Created On</th>
<th rowspan="2">Hall Status</th>
<th rowspan="2">Caretaker Name</th>
<th rowspan="2">Mobile No</th>
<th rowspan="2">Hall Id / Hall Name</th>
<!--<th rowspan="2">Hall Name</th>-->
<th rowspan="2">Hall Created On / Hall Status</th>
<!-- <th rowspan="2">Hall Status</th>-->
<th rowspan="2">Caretaker Name / Mobile No</th>
<!-- <th rowspan="2">Mobile No</th>-->
<th rowspan="2">Total Booking</th>
<th rowspan="2" class="wrap-text">Cancelled<br> Bookings</th>
<th rowspan="2" class="wrap-text">Rejected<br> Booking</th>
<th rowspan="2" class="wrap-text">Event Completed<br> Bookings</th>
<th rowspan="2" class="wrap-text">Cancelled Refund<br> Completed</th>
<th rowspan="2" class="wrap-text">Event<br> Completed<br> Bookings</th>
<th rowspan="2">Cancelled Refund<br> Completed</th>
<th rowspan="2" class="wrap-text">Rejected Refund<br> Completed</th>
<th class="text-center" colspan="5">Refund Completed</th>
@ -293,7 +370,7 @@
<th>6-15 Days</th>
<th>16-30 Days</th>
<th class="wrap-text">More than <br> 30 Days</th>
<th class="wrap-text">Total Refund <br> Completed</th>
<th class="wrap-text">Total<br> Refund <br> Completed</th>
<!-- Refund Pending -->
<th>0-5 Days</th>
@ -302,7 +379,7 @@
<th class="wrap-text">More than <br> 30 Days</th>
<th class="wrap-text">Cancelled <br> Booking</th>
<th class="wrap-text">Rejected <br> Booking</th>
<th class="wrap-text">Total Refund<br> Pending</th>
<th class="wrap-text">Total<br> Refund<br> Pending</th>
</tr>
@ -539,12 +616,12 @@
10, // S.No
25, // Zone
35, // Division
25, // Hall Id
80, // Hall Name
50, // Hall Created On
50, // Hall Status
60, // Caretaker Name
50, // Mobile No
105, // Hall Id
// Hall Name
100, // Hall Created On
// Hall Status
110, // Caretaker Name
// Mobile No
35, // Total Booking
45, // Cancelled Booking
@ -588,10 +665,12 @@
scrollCollapse: true,
autoWidth: false,
paging: false,
paging: true,
pageLength: 10,
lengthMenu: [[10, 25, 50, 100], [10, 25, 50, 100]],
fixedColumns: {
leftColumns: 9
leftColumns: 6
},
@ -624,12 +703,36 @@
{ data: 'zone' },
{ data: 'division' },
{ data: 'hall_id' },
{ data: 'hall_name' },
{ data: 'hall_Created_date' },
{ data: 'Hall_Status' },
{ data: 'caretaker_name' },
{ data: 'caretake_no' },
{
data: null,
render: function (data, type, row) {
return row.hall_id + " - " + row.hall_name;
}
},
// { data: 'hall_id' },
// { data: 'hall_name' },
/* { data: 'hall_Created_date' },
{ data: 'Hall_Status' },*/
{
data: null,
render: function (data, type, row) {
return `
${row.hall_Created_date}<br>
${row.Hall_Status}
`;
}
},
{
data: null,
render: function (data, type, row) {
return `
${row.caretaker_name}<br>
${row.caretake_no}
`;
}
},
// { data: 'caretaker_name' },
// { data: 'caretake_no' },
{ data: 'total_no_of_bookings' },
{ data: 'cancelled_bookings' },
@ -661,12 +764,33 @@
],
columnDefs: [
{
targets: 3, // Hall Id / Hall Name
className: "hall-name-wrap"
},
{
targets: 4, // Hall Created On / Hall Status
className: "hall-status-wrap"
},
{
targets: 4, // Hall Name column (0-based index)
className: 'hall-name-wrap'
targets: 5, // Hall Created On / Hall Status
className: "hall-number-wrap"
},
/* {
targets: 10, // Hall Created On / Hall Status
className: "eventcompleted-wrap"
},*/
{
targets: 11, // Cancelled Refund Completed
width: "180px",
className: "no-wrap"
}
]
});
}
$('#region').change(function () {

108
src/main/resources/templates/modules/communityrefund.html

@ -150,6 +150,34 @@
word-break: break-word;
}
.hall-name-wrap {
width: 220px !important;
min-width: 220px !important;
max-width: 220px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.hall-status-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
.hall-number-wrap {
width: 150px !important;
min-width: 150px !important;
max-width: 150px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
/* Scrollbar */
.dataTables_scrollBody::-webkit-scrollbar {
height: 8px;
@ -251,12 +279,13 @@
<th class="text-center" rowspan="2">S.No</th>
<th class="text-center" rowspan="2">Zone</th>
<th class="text-center" rowspan="2">Division</th>
<th class="text-center" rowspan="2">Hall Id</th>
<th class="text-center wrap-text" rowspan="2">Hall Name</th>
<th class="text-center wrap-text" rowspan="2">Hall Created On</th>
<th class="text-center wrap-text" rowspan="2">Hall Status</th>
<th class="text-center" rowspan="2">Caretaker Name</th>
<th class="text-center wrap-text" rowspan="2">Mobile No</th>
<!-- <th class="text-center" rowspan="2">Hall Id</th>
<th class="text-center wrap-text" rowspan="2">Hall Name</th>-->
<th class="text-center" rowspan="2">Hall Id / Hall Name</th>
<th class="text-center wrap-text" rowspan="2">Hall Created On / Hall Status</th>
<!--<th class="text-center wrap-text" rowspan="2">Hall Status</th>-->
<th class="text-center" rowspan="2">Caretaker Name / Mobile No</th>
<!-- <th class="text-center wrap-text" rowspan="2">Mobile No</th>-->
<th class="text-center" rowspan="2">Total Booking</th>
<th class="text-center" rowspan="2">Cancelled <br> Bookings</th>
@ -484,12 +513,12 @@
20, // S.No
20, // Zone
25, // Division
20, // Hall Id
100, // Hall Name
35, // Hall Created On
35, // Hall Status
80, // Caretaker Name
45, // Mobile No
120, // Hall Id
// Hall Name
70, // Hall Created On
// Hall Status
125, // Caretaker Name
// Mobile No
35, // Total Booking
35, // Cancelled Booking
35, // Rejected Booking
@ -526,7 +555,9 @@
scrollCollapse: true,
autoWidth: false,
paging: false,
paging: true,
pageLength: 10,
lengthMenu: [[10, 25, 50, 100], [10, 25, 50, 100]],
/* fixedColumns: {
leftColumns: 9
@ -554,12 +585,37 @@
{ data: 'sno' }, //1
{ data: 'zone' }, //2
{ data: 'division' }, //3
{ data: 'hall_id' }, //4
{ data: 'hall_name' }, //5
{ data: 'hall_Created_date' }, //6
{ data: 'Hall_Status' }, //7
{ data: 'caretaker_name' }, //8
{ data: 'caretake_no' }, //9
// { data: 'hall_id' }, //4
// { data: 'hall_name' }, //5
// { data: 'hall_Created_date' }, //6
// { data: 'Hall_Status' }, //7
// { data: 'caretaker_name' }, //8
// { data: 'caretake_no' },
// {
{
data: null,
render: function (data, type, row) {
return row.hall_id + " - " + row.hall_name;
}
},
{
data: null,
render: function (data, type, row) {
return `
${row.hall_Created_date}<br>
${row.Hall_Status}
`;
}
},
{
data: null,
render: function (data, type, row) {
return `
${row.caretaker_name}<br>
${row.caretake_no}
`;
}
}, //9
{ data: 'total_no_of_bookings' }, //10
{ data: 'cancelled_bookings' }, //11
{ data: 'rejected_bookings' }, //10
@ -660,11 +716,21 @@
{ data: 'total_bookings' } //21
],
columnDefs: [
{
targets: 3, // Hall Id / Hall Name
className: "hall-name-wrap"
},
{
targets: 4, // Hall Name column (0-based index)
className: 'hall-name-wrap'
targets: 4, // Hall Created On / Hall Status
className: "hall-status-wrap"
},
{
targets: 5, // Hall Created On / Hall Status
className: "hall-number-wrap"
}
]
});
}
$('#region').change(function () {

8
src/main/resources/templates/modules/communityreport.html

@ -283,10 +283,10 @@
<div class="page-header-title">
<h4> community Hall report</h4>
</div>
<div class="row mb-4">
<div class="row justify-content-center">
<!-- Card 1 -->
<div class="col-md-4">
<div class="col-lg-2 col-md-3 col-sm-4 mb-3 d-flex justify-content-center">
<div class="card dashboard-card building-card shadow" style="cursor:pointer;"
onclick="window.open('https://gccservices.in/commissionerreview/communityhallcaretaker', '_blank');">
<div class="card-body text-center">
@ -296,7 +296,7 @@
</div>
<!-- Card 2 -->
<div class="col-md-4">
<div class="col-lg-2 col-md-3 col-sm-4 mb-3 d-flex justify-content-center">
<div class="card dashboard-card booking-card shadow" style="cursor:pointer;"
onclick="window.open('https://gccservices.in/commissionerreview/communityhallreport', '_blank');">
<div class="card-body text-center">
@ -306,7 +306,7 @@
</div>
<!-- Card 3 -->
<div class="col-md-4">
<div class="col-lg-2 col-md-3 col-sm-4 mb-3 d-flex justify-content-center">
<div class="card dashboard-card revenue-card shadow" style="cursor:pointer;"
onclick="window.open('https://gccservices.in/commissionerreview/communityhallrefund', '_blank');">
<div class="card-body text-center">

281
src/main/resources/templates/modules/coworkspace.html

@ -250,6 +250,16 @@
color: #fff;
}
.date-wrap {
width: 130px !important;
min-width: 130px !important;
max-width: 130px !important;
white-space: normal !important;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
#performanceTable td {
text-align: center;
}
@ -351,6 +361,14 @@
</div>
</div>
<!-- Report Heading -->
<div class="row mt-3 mb-2">
<div class="col-md-12">
<h4 id="reportTitle" style="font-weight:600;color:#0d6efd;margin-bottom:0;">
</h4>
</div>
</div>
<div class="row mb-4">
@ -436,8 +454,11 @@
<tr>
<th>S.No</th>
<th class="no-sort">S.No</th>
<th>zone</th>
<th>ward</th>
<th>Muthalvarpadaippagam Name</th>
<th>Inauguration Date</th>
<th class="wrap">Operational Days</th>
<th>Total Booking</th>
@ -467,12 +488,15 @@
<tr>
<th rowspan="2">S.No</th>
<th rowspan="2" class="no-sort">S.No</th>
<th rowspan="2">zone</th>
<th rowspan="2">ward</th>
<th rowspan="2">
Muthalvarpadaippagam Name
</th>
<th rowspan="2">
Inauguration Date
</th>
@ -522,6 +546,40 @@
</div>
</div>
<div class="modal fade" id="deskSlotModal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5>Desk Space Date Wise Slot Details</h5>
<button class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<table class="table table-bordered" id="deskSlotTable">
<thead>
<tr>
<th>S.No</th>
<th>Date</th>
<th>Available Slots</th>
<th>Booked Slots</th>
<th>Not<br> Attended</th>
<th>Attended</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
<div class="modal fade" id="categoryModal">
<div class="modal-dialog modal-xl">
@ -721,6 +779,7 @@
loadDashboard();
//loadReport();
loadDetailReport();
$('#reportTitle').text('Muthalvar Padaippagam Detailed Report');
$("#detailReportDiv").show();
$("#performanceReportDiv").hide();
@ -921,13 +980,34 @@
$("#bookingModal").modal("show");
}
function formatDate(dateStr) {
/*function formatDate(dateStr) {
if (!dateStr) return '-';
// Remove time part if present
dateStr = dateStr.split('T')[0];
const [y, m, d] = dateStr.split('-');
return `${d}-${m}-${y}`;
}*/
function formatDate(dateStr) {
if (!dateStr) return "-";
// Already formatted (dd-mm-yyyy)
if (/^\d{2}-\d{2}-\d{4}$/.test(dateStr)) {
return dateStr;
}
// Remove time if present
dateStr = dateStr.split("T")[0];
const parts = dateStr.split("-");
if (parts.length !== 3) {
return dateStr;
}
const [y, m, d] = parts;
return `${d}-${m}-${y}`;
}
@ -1017,7 +1097,10 @@
return data.meeting_rooms;
}
}
],
dom: 'Bfrtip',
paging: false,
buttons: ['excel', 'pdf']
@ -1188,11 +1271,19 @@
return meta.row + 1;
}
},
{
data: "zone"
},
{
data: "ward"
},
{
data: "building_name"
},
{
data: "inauguration_date",
render: function (data) {
@ -1264,6 +1355,9 @@
}
],
columnDefs: [
{ orderable: false, targets: [0] }
],
dom: 'Bfrtip',
paging: false,
@ -1299,6 +1393,13 @@
return;
}
if (reportType === 'PERFORMANCE') {
$('#reportTitle').text('Muthalvar Padaippagam Performance Report');
} else if (reportType === 'DETAIL') {
$('#reportTitle').text('Muthalvar Padaippagam Detailed Report');
} else {
$('#reportTitle').text('Muthalvar Padaippagam Report');
}
if (reportType == "DETAIL") {
@ -1385,6 +1486,8 @@
success: function (response) {
$('#pageLoader').hide();
if ($.fn.DataTable.isDataTable("#performanceTable")) {
@ -1401,10 +1504,16 @@
searching: false,
ordering: false,
data: response,
columnDefs: [
{ targets: 0, orderable: false } // disable sorting for S.No
],
columns: [
{
@ -1419,12 +1528,24 @@
},
{
data: "zone"
},
{
data: "ward"
},
{
data: "building_name"
},
{
data: "inauguration_date",
@ -1449,10 +1570,26 @@
},
/* {
data: "desk_booked_slots"
},*/
{
data: null,
render: function (data) {
console.log(data);
data: "desk_booked_slots"
if (data.desk_booked_slots > 0) {
return '<a href="javascript:void(0)" onclick="viewDeskSlotSummary('
+ data.bid + ','
+ data.desk_space_cid +
')">' + data.desk_booked_slots + '</a>';
}
return data.desk_booked_slots;
}
},
{
@ -1513,6 +1650,101 @@
});
}
//new requirement for deskpace
function viewDeskSlotSummary(bid, cid) {
console.log("cid");
console.log(cid);
if ($.fn.DataTable.isDataTable("#deskSlotTable")) {
$("#deskSlotTable").DataTable().destroy();
}
$('#pageLoader').show();
$("#deskSlotTable").DataTable({
destroy: true,
ajax: {
url: "/commissionerreview/api/coworkspace/desk-slot-summary",
type: "GET",
data: {
bid: bid,
cid: cid,
fromDate: $("#fromDate").val(),
toDate: $("#toDate").val()
},
dataSrc: "",
complete: function () {
$('#pageLoader').hide();
},
error: function () {
$('#pageLoader').hide();
alert("Failed to load booking details.");
}
},
columns: [
{
data: null,
render: function (d, t, r, meta) {
return meta.row + 1;
}
},
/* {
data: "slot_date"
},*/
{
data: "slot_date",
render: function (data) {
return formatDate(data);
}
},
{
data: "available_slots"
},
{
data: "attended"
},
{
data: "not_attended"
},
/* {
data: "booked_slots"
}*/
{
data: null,
render: function (data, type, row) {
return (parseInt(row.attended || 0) - parseInt(row.not_attended || 0));
}
},
],
columnDefs: [
{
targets: 1, // Hall Id / Hall Name
className: "date-wrap"
},
]
});
$("#deskSlotModal").modal("show");
}
/*$('#bookingModal').on('hidden.bs.modal', function () {
window.location.reload();
@ -1528,6 +1760,45 @@
$("#performanceReportDiv").hide();
});
/* var table = $('#reportTable').DataTable({
"order": [], // optional: no default sorting
"columnDefs": [
{ "orderable": false, "targets": 0 } // disable sorting for S.No column
]
});
// Update S.No on sort / search
table.on('order.dt search.dt', function () {
table.column(0, { search: 'applied', order: 'applied' })
.nodes()
.each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw();
var table1 = $('#performanceTable').DataTable({
order: [],
columnDefs: [
{ orderable: false, targets: 0 }
],
createdRow: function (row, data, dataIndex) {
$('td:eq(0)', row).html(dataIndex + 1);
}
});*/
/* $('#reportType').on('change', function () {
var reportType = $(this).val();
console.log(reportType);
if (reportType === 'PERFORMANCE') {
$('#reportTitle').text('Muthalvar Padaippagam Performance Report');
} else if (reportType === 'DETAIL') {
$('#reportTitle').text('Muthalvar Padaippagam Detailed Report');
} else {
$('#reportTitle').text('Muthalvar Padaippagam Report');
}
});*/
</script>
</body>

1105
src/main/resources/templates/modules/swimmingpoolreport.html
File diff suppressed because it is too large
View File

Loading…
Cancel
Save