course_member.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <div class="col">
  2. <div class="row h-100">
  3. <div class="col-auto filterWrapper" id="filter--section" wire:ignore.self>
  4. <aside>
  5. <header>
  6. <h2>Filtra</h2>
  7. </header>
  8. <form action="" id="filter--form" class="dark-form row">
  9. <div class="filter--item">
  10. <span class="filter--item_title">Corso</span>
  11. <div class="filter--item_formElement">
  12. <select class="form-select" wire:model="filterCourse" onchange="destroyDataTable()">
  13. <option value="">--Seleziona--
  14. @foreach($courses as $c)
  15. <option value="{{$c}}">{{$c}}
  16. @endforeach
  17. </select>
  18. </div>
  19. </div>
  20. <div class="filter--item">
  21. <span class="filter--item_title">Livello</span>
  22. <div class="filter--item_formElement">
  23. <select class="form-select" wire:model="filterLevel" onchange="destroyDataTable()">
  24. <option value="">--Seleziona--
  25. @foreach($course_levels as $c)
  26. <option value="{{$c->id}}">{{$c->name}}
  27. @endforeach
  28. </select>
  29. </div>
  30. </div>
  31. <div class="filter--item">
  32. <span class="filter--item_title">Tipologia</span>
  33. <div class="filter--item_formElement">
  34. <select class="form-select" wire:model="filterType" onchange="destroyDataTable()">
  35. <option value="">--Seleziona--
  36. @foreach($course_types as $c)
  37. <option value="{{$c->id}}">{{$c->name}}
  38. @endforeach
  39. </select>
  40. </div>
  41. </div>
  42. <div class="filter--item">
  43. <span class="filter--item_title">Frequenza</span>
  44. <div class="filter--item_formElement">
  45. <select class="form-select" wire:model="filterFrequency" onchange="destroyDataTable()">
  46. <option value="">--Seleziona--
  47. @foreach($course_frequencies as $c)
  48. <option value="{{$c->id}}">{{$c->name}}
  49. @endforeach
  50. </select>
  51. </div>
  52. </div>
  53. <div class="filter--item">
  54. <span class="filter--item_title">Giorni</span>
  55. <div class="filter--item_formElement">
  56. <select class="form-select" wire:model="filterDays" onchange="destroyDataTable()">
  57. <option value="">--Seleziona--
  58. <option value="lun">Lunedì
  59. <option value="mar">Martedì
  60. <option value="mer">Mercoledì
  61. <option value="gio">Giovedì
  62. <option value="ven">Venerdì
  63. <option value="sab">Sabato
  64. <option value="dom">Domenica
  65. </select>
  66. </div>
  67. </div>
  68. <div class="filter--item">
  69. <span class="filter--item_title">Orari</span>
  70. <div class="filter--item_formElement">
  71. <select class="form-select" wire:model="filterHours" onchange="destroyDataTable()">
  72. <option value="">--Seleziona--
  73. @for($c=6;$c<=23;$c++)
  74. <option value="{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:00">{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:00
  75. <option value="{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:30">{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:30
  76. @endfor
  77. </select>
  78. </div>
  79. </div>
  80. <div class="filter--item">
  81. <span class="filter--item_title">Anno</span>
  82. <div class="filter--item_formElement">
  83. <select class="form-select" wire:model="filterYear" onchange="destroyDataTable()">
  84. <option value="">--Seleziona--
  85. @foreach($course_years as $c)
  86. <option value="{{$c}}">{{$c}}
  87. @endforeach
  88. </select>
  89. </div>
  90. </div>
  91. <div class="filter--item">
  92. <span class="filter--item_title">Pagamento iscrizione</span>
  93. <div class="filter--item_formElement">
  94. <select class="form-select" wire:model="filterSubscription" onchange="destroyDataTable()">
  95. <option value="">--Seleziona--
  96. <option value="1">Pagata
  97. <option value="0">Non Pagata
  98. </select>
  99. </div>
  100. </div>
  101. <div class="filter--item">
  102. <span class="filter--item_title">Tipologia di Tesseramento</span>
  103. <div class="filter--item_formElement row">
  104. <div class="col-12">
  105. @foreach(getCards() as $card)
  106. <div class="form-check form-check-inline align-items-center">
  107. <input class="form-check-input chkCard" type="checkbox" value="{{$card->id}}" wire:model="chkCard" onclick="destroyDataTable()">
  108. <label class="form-check-label ms-2" >{{$card->name}}</label>
  109. </div>
  110. @endforeach
  111. </div>
  112. </div>
  113. </div>
  114. <!-- filter item -->
  115. <div class="filter--item">
  116. <span class="filter--item_title">Stato tesseramento</span>
  117. <div class="filter--item_formElement">
  118. <select class="form-select" wire:model="filterStatus" onchange="destroyDataTable()">
  119. <option value="">--Seleziona--
  120. <option value="2">Attivo
  121. <option value="1">Sospeso
  122. <option value="0">Non tesserato
  123. </select>
  124. </div>
  125. </div>
  126. <div class="filter--item">
  127. <span class="filter--item_title">Certificato Medico</span>
  128. <div class="filter--item_formElement row">
  129. <div class="col-6">
  130. <div class="form-check form-check-inline align-items-center">
  131. <input class="form-check-input chkCertificateNormal" type="checkbox" wire:model="chkCertificateNormal" onclick="destroyDataTable()" value="1">
  132. <label class="form-check-label ms-2" >Normale</label>
  133. </div>
  134. <div class="form-check form-check-inline align-items-center">
  135. <input class="form-check-input chkCertificateScadenza" type="checkbox" wire:model="chkCertificateScadenza" onclick="destroyDataTable()" value="1">
  136. <label class="form-check-label ms-2" >In Scadenza</label>
  137. </div>
  138. </div>
  139. <div class="col-6">
  140. <div class="form-check form-check-inline align-items-center">
  141. <input class="form-check-input chkCertificateAgonistico" type="checkbox" wire:model="chkCertificateAgonistico" onclick="destroyDataTable()" value="1">
  142. <label class="form-check-label ms-2" >Agonistico</label>
  143. </div>
  144. <div class="form-check form-check-inline align-items-center">
  145. <input class="form-check-input chkCertificateScaduti" type="checkbox" wire:model="chkCertificateScaduti" onclick="destroyDataTable()" value="1">
  146. <label class="form-check-label ms-2" >Scaduti</label>
  147. </div>
  148. </div>
  149. </div>
  150. </div>
  151. </form>
  152. <footer>
  153. <div class="filter--buttons d-flex align-items-center justify-content-between">
  154. <button class="btn--ui small dark disable" wire:click.prevent="disableSearch()" onclick="destroyDataTable()">cancella</button>
  155. <button class="btn--ui small white" wire:click.prevent="search()" onclick="destroyDataTable()">filtra</button>
  156. </div>
  157. </footer>
  158. </aside>
  159. </div>
  160. <div class="col card--ui" id="card--dashboard">
  161. <header id="title--section" class="d-flex align-items-center justify-content-between">
  162. <div class="title--section_name d-flex align-items-center justify-content-between">
  163. <i class="ico--ui title_section utenti me-2"></i>
  164. <h2 class="primary">Iscritti ai corsi</h2>
  165. </div>
  166. </header>
  167. <button id="open-filter" onclick="pcsh1()"></button>
  168. <button id="close-filter" onclick="pcsh2()"></button>
  169. <section id="resume-table">
  170. <div class="compare--chart_wrapper d-none"></div>
  171. <div id="filter">{{$filter}}</div>
  172. <table class="table tablesaw tablesaw-stack" id="tablesaw-350">
  173. <thead>
  174. <tr>
  175. <th scope="col">#</th>
  176. <th scope="col">Cognome</th>
  177. <th scope="col">Nome</th>
  178. <th scope="col">Età</th>
  179. <th scope="col">Telefono</th>
  180. <th scope="col">Email</th>
  181. </tr>
  182. </thead>
  183. <tbody id="checkall-target">
  184. @foreach($records as $idx => $record)
  185. <tr>
  186. <td>{{$idx +1}}</td>
  187. <td>{{$record->member->last_name}}</td>
  188. <td>{{$record->member->first_name}}</td>
  189. <td>{{$record->member->getAge() . " (" . date("Y", strtotime($record->member->birth_date)) . ")"}}</td>
  190. <td>{{$record->member->phone}}</td>
  191. <td>{{$record->member->email}}</td>
  192. </tr>
  193. @endforeach
  194. </tbody>
  195. </table>
  196. </section>
  197. </div>
  198. @push('scripts')
  199. <link href="/css/datatables.css" rel="stylesheet" />
  200. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  201. <script src="/assets/js/datatables.js"></script>
  202. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  203. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  204. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  205. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  206. @endpush
  207. @push('scripts')
  208. <script>
  209. var t = '{{$filter}}';
  210. $(document).ready(function() {
  211. loadDataTable();
  212. } );
  213. Livewire.on('load-data-table', () => {
  214. loadDataTable();
  215. });
  216. Livewire.on('destroy-data-table', () => {
  217. $('#tablesaw-350').DataTable().destroy();
  218. });
  219. function destroyDataTable()
  220. {
  221. $('#tablesaw-350').DataTable().destroy();
  222. }
  223. function loadDataTable(){
  224. $('#tablesaw-350').DataTable({
  225. // caption : $("#filter").html(),
  226. thead: {
  227. 'th': {'background-color': 'blue'}
  228. },
  229. layout: {
  230. topStart: {
  231. buttons: [
  232. {
  233. extend: 'excelHtml5',
  234. title: 'Iscritti corsi',
  235. messageTop: $("#filter").html()
  236. },
  237. {
  238. extend: 'pdfHtml5',
  239. title: 'Iscritti corsi',
  240. messageTop: $("#filter").html()
  241. },
  242. {
  243. extend: 'print',
  244. text: 'Stampa',
  245. title: 'Iscritti corsi',
  246. messageTop: $("#filter").html()
  247. }
  248. ]
  249. }
  250. },
  251. pagingType: 'numbers',
  252. order: [[1, 'asc'], [2, 'asc']],
  253. "language": {
  254. "url": "/assets/js/Italian.json"
  255. }
  256. });
  257. $('#tablesaw-350 thead tr th').addClass('col');
  258. $('#tablesaw-350 thead tr th').css("background-color", "#EDF0F2");
  259. }
  260. </script>
  261. @endpush