You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

306 lines
9.2 KiB

1 year ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. <!DOCTYPE html>
  2. <html xmlns:th="http://www.thymeleaf.org">
  3. <head th:replace="~{fragments/head-admin :: head}"></head>
  4. <style>
  5. .header-class {
  6. position: fixed;
  7. top: 50;
  8. left: 0;
  9. width: 100%;
  10. z-index: 1000;
  11. }
  12. .main-content {
  13. margin-top: 70px;
  14. }
  15. body,
  16. html {
  17. margin: 0;
  18. padding: 0;
  19. width: 100%;
  20. height: 100%;
  21. overflow: auto;
  22. }
  23. .bookings-list {
  24. display: flex;
  25. justify-content: center;
  26. align-items: center;
  27. height: 100vh;
  28. padding: 20px;
  29. box-sizing: border-box;
  30. }
  31. .booking-card {
  32. max-width: 600px;
  33. width: 100%;
  34. background-color: #fff;
  35. border-radius: 8px;
  36. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  37. padding: 20px;
  38. box-sizing: border-box;
  39. overflow: hidden;
  40. }
  41. .booking-details p {
  42. margin: 10px 0;
  43. }
  44. </style>
  45. <body>
  46. <div id="page-container"
  47. class="sidebar-o sidebar-dark enable-page-overlay side-scroll page-header-fixed page-header-dark">
  48. <aside th:replace="~{fragments/aside-right :: aside}"></aside>
  49. <nav th:replace="~{fragments/nav-caretaker :: nav}"></nav>
  50. <header th:replace="~{fragments/header-caretaker :: header}"></header>
  51. <div class="content" style="margin-top: 77px;">
  52. <div class="block block-rounded">
  53. <div class="block-header bg-info text-white" style="background-color: #2c726c !important">
  54. <h3 class="block-title">Future Bookings (Next 2 Days)</h3>
  55. </div>
  56. <div class="block-content">
  57. <div class="table-responsive">
  58. <table id="futureBookingTable" class="table table-bordered table-vcenter">
  59. <thead>
  60. <tr>
  61. <th>Hall Name</th>
  62. <th>Booking Id</th>
  63. <th>Reason for Booking</th>
  64. <th>Start Date</th>
  65. <th>End Date</th>
  66. <th>No of Days</th>
  67. <th>Starting Period</th>
  68. <th>Ending Period</th>
  69. <th>Actions</th>
  70. </tr>
  71. </thead>
  72. <tbody>
  73. <!-- Iterate over future bookings and display them -->
  74. <tr th:each="booking : ${futureBookings}">
  75. <td th:text="${booking.hallDetails.hallName}"></td>
  76. <td th:text="${booking.bookingId}"></td>
  77. <td th:text="${booking.reason}"></td>
  78. <td th:text="${booking.startDate}"></td>
  79. <td th:text="${booking.endDate}"></td>
  80. <td th:text="${booking.noOfDays}"></td>
  81. <td>
  82. <span th:text="${booking.startingSlot == 1 ? 'Morning' : 'Evening'}"></span>
  83. </td>
  84. <td>
  85. <span th:text="${booking.endingSlot == 1 ? 'Morning' : 'Evening'}"></span>
  86. </td>
  87. <td>
  88. <!-- Implement your logic for viewing details -->
  89. <button type="button" class="btn btn-primary view-details"
  90. th:onclick="bookingDetails([[${booking.bookingId}]])">View</button>
  91. </td>
  92. </tr>
  93. </tbody>
  94. </table>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. <div class="modal fade backdrop" id="bookingModal" tabindex="-1" role="dialog"
  100. aria-labelledby="staticBackdropLabel" aria-hidden="true">
  101. <div class="modal-dialog modal-lg" role="document">
  102. <div class="modal-content">
  103. <div class="block block-rounded block-themed block-transparent mb-0">
  104. <div class="block-header bg-primary-dark">
  105. <h3 class="block-title">Booking Details</h3>
  106. <div class="block-options">
  107. <button type="button" class="btn-block-option" data-bs-dismiss="modal"
  108. aria-label="Close">
  109. <i class="fa fa-fw fa-times"></i>
  110. </button>
  111. </div>
  112. </div>
  113. <div class="block-content row">
  114. <div class="col-sm-4">
  115. <div class="form-group">
  116. <label for="name">Name<span class="required">*</span>:</label>
  117. <input type="text" class="form-control text-center" id="name" name="name"
  118. placeholder="First Name" readonly>
  119. </div>
  120. <small id="emailHelp" class="form-text text-muted"></small>
  121. </div>
  122. <div class="col-sm-4">
  123. <div class="form-group">
  124. <label for="mobileno">Mobile Number<span class="required">*</span>:</label>
  125. <input type="text" class="form-control text-center" id="mobileno" name="mobileno"
  126. placeholder="Mobile Number" minlength="10" maxlength="10" pattern="[0-9]{10}"
  127. readonly>
  128. </div>
  129. </div>
  130. <div class="col-sm-4">
  131. <div class="form-group">
  132. <label for="email">E-Mail ID<span class="required"></span>:</label>
  133. <input type="email" class="form-control text-center" id="email" name="email"
  134. placeholder="Email" maxlength="255" readonly>
  135. </div>
  136. <small id="emailHelps" class="form-text text-muted"></small>
  137. </div>
  138. <div class="col-sm-4">
  139. <div class="form-group">
  140. <label for="doorNo">DoorNo<span class="required">*</span>:</label>
  141. <input type="text" class="form-control text-center" id="doorNo" name="doorNo"
  142. placeholder="Door No" readonly>
  143. </div>
  144. </div>
  145. <div class="col-sm-4">
  146. <div class="form-group">
  147. <label for="street">Street<span class="required">*</span>:</label>
  148. <input type="text" class="form-control text-center" id="street" name="street"
  149. placeholder="Street" readonly>
  150. </div>
  151. </div>
  152. <div class="col-sm-4">
  153. <div class="form-group">
  154. <label for="area">Area<span class="required">*</span>:</label>
  155. <input type="text" class="form-control text-center" id="area" name="area"
  156. placeholder="Area" readonly>
  157. </div>
  158. <small id="emailHelped" class="form-text text-muted"></small>
  159. </div>
  160. <div class="col-sm-4">
  161. <div class="form-group">
  162. <label for="location">Location<span class="required">*</span>:</label>
  163. <input type="text" class="form-control text-center" id="location" name="location"
  164. placeholder="Location" readonly>
  165. </div>
  166. </div>
  167. <div class="col-sm-4">
  168. <div class="form-group">
  169. <label for="pincode">Pincode<span class="required">*</span>:</label>
  170. <input type="text" class="form-control text-center" id="pincode" name="pincode"
  171. placeholder="Pincode" readonly>
  172. </div>
  173. </div>
  174. <div class="col-sm-4" style="margin-left:0%">
  175. <div class="form-group">
  176. <label for="userType">User Type<span class="required">*</span>:</label>
  177. <input class="form-control" id="userType" name="userType"
  178. placeholder="User Type" readonly>
  179. </div>
  180. </div>
  181. <div class="col-sm-4 hidden" id="employeeFields">
  182. <!-- Employee fields here -->
  183. </div>
  184. <div class="col-sm-4 hidden" id="pensionerFields">
  185. <!-- Pensioner fields here -->
  186. </div>
  187. <div class="col-sm-4 hidden" id="wardnoFields">
  188. <!-- Ward number fields here -->
  189. </div>
  190. </div>
  191. </div>
  192. <div class="modal-footer">
  193. <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. <footer th:replace="~{fragments/footer2 :: footer}"></footer>
  199. </div>
  200. <div th:replace="~{fragments/resetpassword :: div}"></div>
  201. <script th:replace="~{fragments/script :: script}"></script>
  202. <script th:replace="~{fragments/loginscript :: script}"></script>
  203. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
  204. <script type="text/javascript">
  205. $(document).ready(
  206. function () {
  207. // DataTables buttons configuration
  208. var buttons = [{
  209. extend: 'pageLength',
  210. className: 'btn btn-primary'
  211. }, {
  212. title: 'Data export',
  213. extend: 'copyHtml5',
  214. text: 'Copy',
  215. className: 'btn btn-primary',
  216. id: 'copyBtn'
  217. }, {
  218. extend: 'excelHtml5',
  219. text: 'Excel',
  220. className: 'btn btn-primary',
  221. id: 'excelBtn'
  222. }, {
  223. extend: 'csvHtml5',
  224. text: 'CSV',
  225. className: 'btn btn-primary',
  226. id: 'csvBtn'
  227. }, {
  228. extend: 'pdfHtml5',
  229. text: 'PDF',
  230. className: 'btn btn-primary',
  231. id: 'pdfBtn'
  232. },
  233. ];
  234. $('#futureBookingTable').DataTable(
  235. {
  236. dom: 'Bftip',
  237. columnDefs: [{
  238. targets: 'no-sort',
  239. orderable: false
  240. }],
  241. lengthMenu: [
  242. [50, 100, 200, 500, -1],
  243. ['50 rows', '100 rows', '200 rows',
  244. '500 rows', 'Show all']],
  245. scrollY: '50vh',
  246. fixedColumns: {
  247. left: 1,
  248. right: 1
  249. },
  250. buttons: [buttons],
  251. responsive: true,
  252. searching: true, // Enable search
  253. select: false,
  254. processing: false,
  255. });
  256. // Link the search input to DataTable
  257. $('#searchInput').on('keyup', function () {
  258. dataTable.search(this.value).draw();
  259. });
  260. });
  261. function bookingDetails(bookingId) {
  262. $.ajax({
  263. url: '/communityhall/careTaker/api/viewuserDetails',
  264. method: 'GET',
  265. data: {bookingId: bookingId},
  266. success: function (response) {
  267. $('#name').val(response.users.name);
  268. $('#mobileno').val(response.users.mobileNo);
  269. $('#email').val(response.users.email);
  270. $('#doorNo').val(response.users.doorNo);
  271. $('#street').val(response.users.street);
  272. $('#area').val(response.users.area);
  273. $('#location').val(response.users.location);
  274. $('#pincode').val(response.users.pinCode);
  275. $('#userType').val(response.users.usertype);
  276. // Show the modal
  277. $('#bookingModal').modal('show');
  278. },
  279. error: function () {
  280. }
  281. });
  282. }
  283. </script>
  284. </body>
  285. </html>