course_list.blade.php 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264
  1. <div class="col card--ui" id="card--dashboard" style="padding-top: 0px !important;">
  2. <header id="title--section" style="display:none !important" class="d-flex align-items-center justify-content-between">
  3. <div class="title--section_name d-flex align-items-center justify-content-between">
  4. <i class="ico--ui title_section utenti me-2"></i>
  5. <h2 class="primary">Pagamento corsi</h2>
  6. </div>
  7. </header>
  8. <div class="row" style="margin-top: 10px; margin-bottom:10px;">
  9. <div class="col-md-4">
  10. <div class="col-md ">
  11. <div class="dt-buttons btn-group flex-wrap">
  12. <div class="btn-group">
  13. <button class="btn btn-secondary buttons-collection" wire:click="export()" style="color:black !important">ESPORTA</button>
  14. </div>
  15. </div>
  16. </div>
  17. </div>
  18. <div class="col-md-4">
  19. <div class="row">
  20. <div class="col-md-4" style="text-align:right">Visualizza</div>
  21. <div class="col-md-4">
  22. <select name="tablesaw-350_length" aria-controls="tablesaw-350" class="form-select form-select-sm" id="dt-length-0" wire:model="pageLength">
  23. <option value="10">10</option>
  24. <option value="25">25</option>
  25. <option value="50">50</option>
  26. <option value="100">100</option>
  27. <option value="100000">Tutti</option>
  28. </select>
  29. </div>
  30. <div class="col-md-3">elementi</div>
  31. </div>
  32. </div>
  33. <div class="col-md-4" style="text-align:right">
  34. <a href="#" class="showHideFilter btn--ui" style="width:100px; float:right;"><i class="fa-solid fa-sliders"></i></a>
  35. <input type="text" wire:model="search" class="form-control" style="width:200px; float:right;margin-right:10px;">
  36. </div>
  37. </div>
  38. <div class="showFilter" style="display:none; margin-top:10px;" wire:ignore.self>
  39. <hr size="1">
  40. <div class="row g-3">
  41. <div class="col-md-2">
  42. <div class="row">
  43. <div class="col-md-12" style="margin-bottom:10px;">
  44. <b>Anno</b>
  45. </div>
  46. <div class="col-12">
  47. <select class="form-select filterYear" >
  48. <option value="">--Seleziona--
  49. @foreach($course_years as $c)
  50. @php
  51. $selected = '';
  52. try
  53. {
  54. list($f, $t) = explode("-", $c);
  55. if ($f == date("Y"))
  56. $selected = 'selected';
  57. } catch (Exception $e) {
  58. }
  59. @endphp
  60. <option value="{{$c}}" {{$selected}}>{{$c}}
  61. @endforeach
  62. </select>
  63. </div>
  64. </div>
  65. </div>
  66. <div class="col-md-2">
  67. <div class="row">
  68. <div class="col-md-12" style="margin-bottom:10px;">
  69. <b>Corso</b>
  70. </div>
  71. <div class="col-12" >
  72. <select class="form-select filterCourse" multiple="multiple" wire:model="filterCourse">
  73. @foreach($courses as $c)
  74. <option value="{{$c}}">{{$c}}
  75. @endforeach
  76. </select>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="col-md-2">
  81. <div class="row">
  82. <div class="col-md-12" style="margin-bottom:10px;">
  83. <b>Livello</b>
  84. </div>
  85. <div class="col-12">
  86. <select class="form-select filterLevel" multiple="multiple" wire:model="filterLevel">
  87. @foreach($course_levels as $c)
  88. <option value="{{$c->id}}">{{$c->name}}
  89. @endforeach
  90. </select>
  91. </div>
  92. </div>
  93. </div>
  94. <div class="col-md-2">
  95. <div class="row">
  96. <div class="col-md-12" style="margin-bottom:10px;">
  97. <b>Frequenza</b>
  98. </div>
  99. <div class="col-12">
  100. <select class="form-select filterFrequency" multiple="multiple" wire:model="filterFrequency">
  101. @foreach($course_frequencies as $c)
  102. <option value="{{$c->id}}">{{$c->name}}
  103. @endforeach
  104. </select>
  105. </div>
  106. </div>
  107. </div>
  108. <div class="col-md-2">
  109. <div class="row">
  110. <div class="col-md-12" style="margin-bottom:10px;">
  111. <b>Tipologia</b>
  112. </div>
  113. <div class="col-12">
  114. <select class="form-select filterType" multiple="multiple" wire:model="filterType">
  115. @foreach($course_types as $c)
  116. <option value="{{$c->id}}">{{$c->name}}
  117. @endforeach
  118. </select>
  119. </div>
  120. </div>
  121. </div>
  122. <div class="col-md-2">
  123. <div class="row">
  124. <div class="col-md-12" style="margin-bottom:10px;">
  125. <b>Durata</b>
  126. </div>
  127. <div class="col-12">
  128. <select class="form-select filterDuration" multiple="multiple" wire:model="filterDuration">
  129. @foreach($course_durations as $c)
  130. <option value="{{$c->id}}">{{$c->name}}
  131. @endforeach
  132. </select>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. <div class="row g-3" style="margin-top:20px;">
  138. <div class="col-md-12" style="text-align:right">
  139. <button class="btn--ui_outline light" onclick="reset()">CANCELLA</button>
  140. <button class="btn--ui" wire:click="search()">FILTRA</button>
  141. </div>
  142. </div>
  143. <hr size="1">
  144. </div>
  145. <div class="row text-right">
  146. <div class="col-md-12" style="text-align:right">
  147. <button style="display:none; width:200px;" class="btn--ui btNewPayment" onclick="newPayment()">NUOVA ENTRATA</button>
  148. <button class="btn--ui primary btStopPayment" style="display:none; width:200px; color:white" onclick="suspendPayment()">Sospendi</button>
  149. <button class="btn--ui primary btResumePayment" style="display:none; width:200px; color:white" onclick="resumePayment()">Riattiva</button>
  150. </div>
  151. </div>
  152. <section id="resume-table" class="scrollTable" style="margin-top:10px;">
  153. <div class="compare--chart_wrapper d-none"></div>
  154. <table class="table tablesaw tableHead tablesaw-stack pagamento--corsi display nowrap" id="tablesaw-350" width="100%">
  155. <thead>
  156. <tr>
  157. <th scope="col" class="sticky-col-header first-zero"></th>
  158. <th scope="col" class="sticky-col-header first-col" >Corso</th>
  159. <th scope="col" class="sticky-col-header second-col"><a wire:click="setSort(2)" style="cursor:pointer">Cognome</a></th>
  160. <th scope="col" class="sticky-col-header third-col"><a wire:click="setSort(3)" style="cursor:pointer">Nome</a></th>
  161. <th scope="col"><a wire:click="setSort(4)" style="cursor:pointer">Iscrizione</a></th>
  162. @foreach($months as $idx => $m)
  163. <th scope="col"><a wire:click="setSort({{$idx + 5}})" style="cursor:pointer">&nbsp;&nbsp;&nbsp;&nbsp;{{$m}}</a></th>
  164. @endforeach
  165. </tr>
  166. </thead>
  167. <tbody id="checkall-target">
  168. @foreach($records as $idx => $record)
  169. <tr>
  170. <td class="sticky-col-header first-zero">{{$record["column_18"]}}</td>
  171. <td class="sticky-col-header first-col">{{$record["column_19"]}}</td>
  172. <td class="sticky-col-header second-col">{{$record["column_0"]}}</td>
  173. <td class="sticky-col-header third-col">{{$record["column_1"]}}</td>
  174. <td>
  175. @php
  176. list($color, $value) = explode("§", $record["column_2"]);
  177. @endphp
  178. @if($color == 0)
  179. <a style="width:100%;float:right; text-align:right; display:block;{{$color == 1 ? '' : 'cursor:pointer;'}}" class="{{$color == 1 ? 'green' : 'orange'}} sub_{{$record["column_16"]}}" onclick="setSubscription('{{$record["column_15"]}}', '{{$record["column_17"]}}', '{{$record["column_16"]}}')" style="cursor: pointer;"><small>{{$value}}</small></a>
  180. @else
  181. <a style="width:100%;float:right; text-align:right; display:block;" class="{{$color == 1 ? 'green' : 'orange'}}"><small>{{$value}}</small></a>
  182. @endif
  183. </td>
  184. @for($ii=3; $ii<=14; $ii++)
  185. @php
  186. list($color, $value, $diff) = explode("§", $record["column_" . $ii]);
  187. @endphp
  188. <td>
  189. @if ($color == 'orange')
  190. <a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="{{$color}} {{$diff == 'X' ? 'half' : ''}} lnk_{{$record["column_16"]}}" id="lnk_{{$record["column_15"]}}_{{$ii - 2}}_{{$record["column_17"]}}" onclick="setPayMonth('{{$record["column_15"]}}', {{$ii - 2}}, '{{$record["column_17"]}}', '{{$record["column_16"]}}')" style="cursor: pointer;"><small>{{$value}}</small></a>
  191. @else
  192. @if ($color != 'wgrey')
  193. @if($color == 'yellow')
  194. <a style="width:100%;float:right; text-align:right; display:block;cursor:pointer;" class="{{$color}} lnk_{{$record["column_16"]}}" id="lnk_{{$record["column_15"]}}_{{$ii - 2}}_{{$record["column_17"]}}" onclick="resumePayMonth('{{$record["column_15"]}}', {{$ii - 2}}, '{{$record["column_17"]}}', '{{$record["column_16"]}}')"><small>{{$value}}</small></a>
  195. @else
  196. <a style="width:100%;float:right; text-align:right; display:block;" class="{{$color}}"><small>{{$value}}</small></a>
  197. @endif
  198. @endif
  199. @endif
  200. </td>
  201. @endfor
  202. </tr>
  203. @endforeach
  204. </tbody>
  205. <tfoot id="checkall-target">
  206. <tr>
  207. <th class="sticky-col-header first-zero"></th>
  208. <th class="sticky-col-header first-col"></th>
  209. <th class="sticky-col-header second-col"></th>
  210. <th class="sticky-col-header third-col"></th>
  211. @foreach($totS as $yyy)
  212. @if (isset($yyy))
  213. <th style="padding-left:5px !important;padding-right:5px !important;">{!!$yyy!!}</th>
  214. @else
  215. <th style="padding-left:5px !important;padding-right:5px !important;">aa</th>
  216. @endif
  217. @endforeach
  218. <!--<th style="padding-left:5px !important;padding-right:5px !important;"></th>
  219. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  220. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  221. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  222. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  223. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  224. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  225. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  226. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  227. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  228. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  229. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  230. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  231. <th style="padding-left:5px !important;padding-right:5px !important;"></th>
  232. <th style="padding-left:5px !important;padding-right:5px !important;"></th>-->
  233. </tr>
  234. </tfoot>
  235. </table>
  236. <div class="row">
  237. <div class="col-md-6">
  238. Vista da {{(($currentPage - 1) * $pageLength) + 1}} a {{$currentPage * $pageLength}} di {{$totalRecords}} elementi
  239. </div>
  240. <div class="col-md-6" style="text-align:right">
  241. <ul class="pagination" style="margin:0px !important;float:right">
  242. @if($pages < 10)
  243. @for($p=1; $p<=$pages;$p++)
  244. <li class="page-item {{$p == $currentPage ? 'active' : ''}}"><a class="page-link" wire:click="setPage({{$p}})" href="#">{{$p}}</a></li>
  245. @endfor
  246. @else
  247. <li class="page-item {{1 == $currentPage ? 'active' : ''}}"><a class="page-link" wire:click="setPage(1)" href="#">1</a></li>
  248. @if($currentPage > 4)
  249. <li class="page-item "><a class="page-link" href="#">...</a></li>
  250. @endif
  251. @for($p=2; $p<=$pages - 1;$p++)
  252. @if($p > $currentPage - 3 && $p < $currentPage + 3)
  253. <li class="page-item {{$p == $currentPage ? 'active' : ''}}"><a class="page-link" wire:click="setPage({{$p}})" href="#">{{$p}}</a></li>
  254. @endif
  255. @endfor
  256. @if($currentPage < ($pages - 3))
  257. <li class="page-item "><a class="page-link" href="#">...</a></li>
  258. @endif
  259. <li class="page-item {{$pages == $currentPage ? 'active' : ''}}"><a class="page-link" wire:click="setPage({{$pages}})" href="#">{{$pages}}</a></li>
  260. @endif
  261. </ul>
  262. </div>
  263. </div>
  264. </section>
  265. </div>
  266. @push('scripts')
  267. @endpush
  268. @push('scripts')
  269. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  270. <style>
  271. @media (min-width: 992px) {
  272. .sidebar--ui ~ div.col {
  273. max-height: 100vh;
  274. }
  275. }
  276. .scrollTable {
  277. padding: 15px;
  278. max-width: 100% !important;
  279. overflow-x: auto;
  280. overflow-y: auto;
  281. white-space: nowrap;
  282. border: 1px solid #ddd;
  283. }
  284. ::-webkit-scrollbar-thumb {
  285. background: #e4e4e4;
  286. border-radius: 10px;
  287. }
  288. .select2-container--default .select2-selection--single{
  289. background-color: #E9F0F5;
  290. border: 0.0625rem solid #DFE5EB;
  291. font-size: 0.75rem;
  292. }
  293. .select2-selection
  294. {
  295. height: 38px !important;
  296. }
  297. .select2-selection__rendered
  298. {
  299. padding-top:3px;
  300. }
  301. .select2 {
  302. width:100% !important;
  303. }
  304. tfoot #checkall-target > tr > th
  305. {
  306. padding-right:5px !important;
  307. }
  308. /*.container-fluid
  309. {
  310. display: table-row !important;
  311. }
  312. .row.row.header--gestionale
  313. {
  314. padding-left:20px !important;
  315. }*/
  316. </style>
  317. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  318. <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  319. @endpush
  320. @push('scripts')
  321. <link href="/css/datatables.css" rel="stylesheet" />
  322. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  323. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  324. <style>
  325. #tablesaw-350_wrapper > div.justify-content-between
  326. {
  327. background-color: white;
  328. position: sticky;
  329. z-index: 100000;
  330. padding-top:10px;
  331. top: -15px;
  332. left: 0px;
  333. }
  334. /*.table-v-scroll > div, #checkall-target
  335. {
  336. overflow-x: auto !important;
  337. overflow-y: hidden !important;
  338. }*/
  339. table.tableHead thead {
  340. /* Important */
  341. position: sticky;
  342. z-index: 100;
  343. top: -17px;
  344. }
  345. table thead {
  346. /* Important */
  347. position: sticky;
  348. z-index: 100;
  349. top: 0;
  350. }
  351. .select2-container--default .select2-selection--single{
  352. background-color: #E9F0F5;
  353. border: 0.0625rem solid #DFE5EB;
  354. font-size: 0.75rem;
  355. }
  356. .select2-selection
  357. {
  358. height: 38px !important;
  359. }
  360. .select2-selection__rendered
  361. {
  362. padding-top:3px;
  363. }
  364. .select2 {
  365. width:100% !important;
  366. }
  367. .select2-selection--multiple{
  368. overflow: hidden !important;
  369. height: auto !important;
  370. }
  371. .select2-container {
  372. box-sizing: border-box;
  373. display: inline-block;
  374. margin: 0;
  375. position: relative;
  376. vertical-align: middle;
  377. }
  378. .select2-container .select2-selection--single {
  379. box-sizing: border-box;
  380. cursor: pointer;
  381. display: block;
  382. height: 38px;
  383. user-select: none;
  384. -webkit-user-select: none;
  385. }
  386. .select2-container .select2-selection--single .select2-selection__rendered {
  387. display: block;
  388. padding-left: 8px;
  389. padding-right: 20px;
  390. overflow: hidden;
  391. text-overflow: ellipsis;
  392. white-space: nowrap;
  393. }
  394. .select2-selection__choice__display{
  395. color:#000000 !important;
  396. }
  397. .sticky-col-header {
  398. position: -webkit-sticky !important;
  399. position: sticky !important;
  400. background-color: '#f6f8fa' !important;
  401. }
  402. .sticky-col {
  403. position: -webkit-sticky !important;
  404. position: sticky !important;
  405. background-color: white;
  406. }
  407. .first-zero {
  408. width: 20px;
  409. min-width: 20px;
  410. max-width: 20px;
  411. left: 0px;
  412. z-index:99;
  413. }
  414. .first-col {
  415. width: 100px;
  416. min-width: 100px;
  417. max-width: 100px;
  418. left: 0px;
  419. z-index:99;
  420. }
  421. .second-col {
  422. width: 150px;
  423. min-width: 150px;
  424. max-width: 150px;
  425. left: 100px;
  426. z-index:99;
  427. }
  428. .third-col {
  429. width: 150px;
  430. min-width: 150px;
  431. max-width: 150px;
  432. left: 250px;
  433. z-index:99;
  434. }
  435. </style>
  436. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  437. <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  438. <script src="/assets/js/datatables.js"></script>
  439. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  440. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  441. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  442. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  443. @endpush
  444. @push('scripts')
  445. <script>
  446. var totals = '';
  447. $(document).ready(function() {
  448. loadDataTable();
  449. } );
  450. $('.filterYear').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  451. $('.filterYear').val('{{date("Y")-1}}-{{date("Y")}}').trigger("change");
  452. $('.filterCourse').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  453. $('.filterCourse').on('change', function (e) {
  454. var data = $('.filterCourse').select2("val");
  455. if (data == null) data = [];
  456. @this.set('filterCourse', data);
  457. //@this.search();
  458. });
  459. $('.filterLevel').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  460. $('.filterLevel').on('change', function (e) {
  461. var data = $('.filterLevel').select2("val");
  462. if (data == null) data = [];
  463. @this.set('filterLevel', data);
  464. //@this.search();
  465. });
  466. $('.filterFrequency').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  467. $('.filterFrequency').on('change', function (e) {
  468. var data = $('.filterFrequency').select2("val");
  469. if (data == null) data = [];
  470. @this.set('filterFrequency', data);
  471. //@this.search();
  472. });
  473. $('.filterType').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  474. $('.filterType').on('change', function (e) {
  475. var data = $('.filterType').select2("val");
  476. if (data == null) data = [];
  477. @this.set('filterType', data);
  478. //@this.search();
  479. });
  480. $('.filterDuration').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  481. $('.filterDuration').on('change', function (e) {
  482. var data = $('.filterDuration').select2("val");
  483. if (data == null) data = [];
  484. // @this.set('filterDuration', data);
  485. //@this.search();
  486. });
  487. Livewire.on('load-data-table', () => {
  488. $('.filterYear').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  489. $('.filterCourse').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  490. $('.filterLevel').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  491. $('.filterFrequency').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  492. $('.filterType').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  493. $('.filterDuration').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
  494. loadDataTable();
  495. setTimeout(() => {
  496. setMaxWidth();
  497. setMaxHeight();
  498. }, 1);
  499. });
  500. Livewire.on('destroy-data-table', () => {
  501. $('#tablesaw-350').DataTable().destroy();
  502. });
  503. function destroyDataTable()
  504. {
  505. $('#tablesaw-350').DataTable().destroy();
  506. }
  507. var isFilter = false;
  508. $(document).ready(function() {
  509. $(document).on("click",".showHideFilter",function() {
  510. if (isFilter)
  511. {
  512. isFilter = false;
  513. $(".showFilter").hide();
  514. }
  515. else
  516. {
  517. isFilter = true;
  518. $(".showFilter").show();
  519. }
  520. });
  521. } );
  522. function searchAction()
  523. {
  524. //destroyDataTable();
  525. //@this.search();
  526. }
  527. @if(isset($_GET["showFilters"]))
  528. var filterYear = localStorage.getItem("filterYearCourseList");
  529. if (filterYear)
  530. {
  531. $('.filterYear').val(filterYear).trigger('change');
  532. }
  533. var filterCourse = localStorage.getItem("filterCourseCourseList");
  534. if (filterCourse)
  535. {
  536. $('.filterCourse').val(filterCourse).trigger('change');
  537. }
  538. var filterLevel = localStorage.getItem("filterLevelCourseList");
  539. if (filterLevel)
  540. {
  541. $('.filterLevel').val(filterLevel).trigger('change');
  542. }
  543. var filterFrequency = localStorage.getItem("filterFrequencyCourseList");
  544. if (filterFrequency)
  545. {
  546. $('.filterFrequency').val(filterFrequency).trigger('change');
  547. }
  548. var filterDuration = localStorage.getItem("filterDurationCourseList");
  549. if (filterDuration)
  550. {
  551. $('.filterDuration').val(filterDuration).trigger('change');
  552. }
  553. var filterType = localStorage.getItem("filterTypeCourseList");
  554. if (filterType)
  555. {
  556. $('.filterType').val(filterType).trigger('change');
  557. }
  558. @endif
  559. function reset()
  560. {
  561. $('.filterYear').val(null).trigger("change");
  562. $('.filterCourse').val(null).trigger("change");
  563. $('.filterLevel').val(null).trigger("change");
  564. $('.filterFrequency').val(null).trigger("change");
  565. $('.filterDuration').val(null).trigger("change");
  566. $('.filterType').val(null).trigger("change");
  567. destroyDataTable();
  568. //localStorage.clear();
  569. loadDataTable();
  570. }
  571. function loadDataTable(){
  572. /*
  573. if ( $.fn.DataTable.isDataTable('#tablesaw-350') ) {
  574. $('#tablesaw-350').DataTable().destroy();
  575. }
  576. var filterYear = $('.filterYear').val();
  577. localStorage.setItem("filterYearCourseList", filterYear);
  578. var filterCourse = $('.filterCourse').val();
  579. localStorage.setItem("filterCourseCourseList", filterCourse);
  580. var filterLevel = $('.filterLevel').val();
  581. localStorage.setItem("filterLevelCourseList", filterLevel);
  582. var filterDuration = $('.filterDuration').val();
  583. localStorage.setItem("filterDurationCourseList", filterDuration);
  584. var filterFrequency = $('.filterFrequency').val();
  585. localStorage.setItem("filterFrequencyCourseList", filterFrequency);
  586. var filterType = $('.filterType').val();
  587. localStorage.setItem("filterTypeCourseList", filterType);
  588. */
  589. /*
  590. var output_table = $('#tablesaw-350').DataTable({
  591. //scrollX: true,
  592. //scrollY: true,
  593. //scrollCollapse: true,
  594. scrollY: '400px',
  595. serverSide: true,
  596. ajax: {
  597. url : '/get_course_list?filterCourse=' + filterCourse + '&filterDuration=' + filterDuration + '&filterLevel=' + filterLevel + '&filterType=' + filterType + '&filterFrequency=' + filterFrequency + '&filterYear=' + filterYear,
  598. dataSrc: function (json){
  599. if(json.totals){
  600. totals = json.totals;
  601. }
  602. return json.data;
  603. }
  604. },
  605. thead: {
  606. 'th': {'background-color': 'blue'}
  607. },
  608. columns: [
  609. {
  610. data: 'column_18',
  611. "orderable": false,
  612. className: 'red',
  613. render: function (data, type, row, meta){
  614. return data;
  615. }
  616. },
  617. {
  618. data: 'column_19',
  619. className: 'red',
  620. className: 'sticky-col first-col'
  621. },
  622. {
  623. data: 'column_0',
  624. className: 'red',
  625. className: 'sticky-col second-col',
  626. render: function (data, type, row){
  627. var ret = '<a href="/members?member_detail=' + row["column_17"] + '&from=course_list">' + data + '</a>';
  628. return ret;
  629. }
  630. },
  631. {
  632. data: 'column_1',
  633. className: 'sticky-col third-col',
  634. render: function (data, type, row){
  635. const x = data.split("§");
  636. var ret = '<a href="/members?member_detail=' + row["column_17"] + '&from=course_list">' + data + '</a>';
  637. return ret;
  638. }
  639. },
  640. {
  641. data: 'column_2',
  642. orderSequence: ['asc', 'desc'],
  643. className: 'ciccio',
  644. render: function (data, type, row){
  645. const x = data.split("§");
  646. var ret = '';
  647. if (x[0] == 0)
  648. {
  649. var ret = '<a style="width:100%;float:right; text-align:right; display:block; ' + (x[0] == 1 ? '' : 'cursor:pointer;') + '" class="' + (x[0] == 1 ? 'green' : 'orange') + ' sub_' + row["column_16"] + '" onclick="setSubscription(' + row["column_15"] + ', ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  650. }
  651. else
  652. {
  653. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + (x[0] == 1 ? 'green' : 'orange') + '"><small>' + x[1] + '</small></a>';
  654. }
  655. return ret;
  656. }
  657. },
  658. {
  659. data: 'column_3',
  660. orderSequence: ['asc', 'desc'],
  661. render: function (data, type, row, meta){
  662. const x = data.split("§");
  663. var ret = '';
  664. if (x[0] == 'orange')
  665. {
  666. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_1_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 1, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  667. }
  668. else
  669. {
  670. if (x[0] != 'wgrey')
  671. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  672. }
  673. return ret;
  674. }
  675. },
  676. {
  677. data: 'column_4',
  678. orderSequence: ['asc', 'desc'],
  679. render: function (data, type, row, meta){
  680. const x = data.split("§");
  681. var ret = '';
  682. if (x[0] == 'orange')
  683. {
  684. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_2_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 2, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  685. }
  686. else
  687. {
  688. if (x[0] != 'wgrey')
  689. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  690. }
  691. return ret;
  692. }
  693. },
  694. {
  695. data: 'column_5',
  696. orderSequence: ['asc', 'desc'],
  697. render: function (data, type, row, meta){
  698. const x = data.split("§");
  699. var ret = '';
  700. if (x[0] == 'orange')
  701. {
  702. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_3_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 3, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  703. }
  704. else
  705. {
  706. if (x[0] != 'wgrey')
  707. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  708. }
  709. return ret;
  710. }
  711. },
  712. {
  713. data: 'column_6',
  714. orderSequence: ['asc', 'desc'],
  715. render: function (data, type, row, meta){
  716. const x = data.split("§");
  717. var ret = '';
  718. if (x[0] == 'orange')
  719. {
  720. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_4_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 4, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  721. }
  722. else
  723. {
  724. if (x[0] != 'wgrey')
  725. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  726. }
  727. return ret;
  728. }
  729. },
  730. {
  731. data: 'column_7',
  732. orderSequence: ['asc', 'desc'],
  733. render: function (data, type, row, meta){
  734. const x = data.split("§");
  735. var ret = '';
  736. if (x[0] == 'orange')
  737. {
  738. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_5_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 5, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  739. }
  740. else
  741. {
  742. if (x[0] != 'wgrey')
  743. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  744. }
  745. return ret;
  746. }
  747. },
  748. {
  749. data: 'column_8',
  750. orderSequence: ['asc', 'desc'],
  751. render: function (data, type, row, meta){
  752. const x = data.split("§");
  753. var ret = '';
  754. if (x[0] == 'orange')
  755. {
  756. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_6_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 6, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  757. }
  758. else
  759. {
  760. if (x[0] != 'wgrey')
  761. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  762. }
  763. return ret;
  764. }
  765. },
  766. {
  767. data: 'column_9',
  768. orderSequence: ['asc', 'desc'],
  769. render: function (data, type, row, meta){
  770. const x = data.split("§");
  771. var ret = '';
  772. if (x[0] == 'orange')
  773. {
  774. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_7_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 7, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  775. }
  776. else
  777. {
  778. if (x[0] != 'wgrey')
  779. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  780. }
  781. return ret;
  782. }
  783. },
  784. {
  785. data: 'column_10',
  786. orderSequence: ['asc', 'desc'],
  787. render: function (data, type, row, meta){
  788. const x = data.split("§");
  789. var ret = '';
  790. if (x[0] == 'orange')
  791. {
  792. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_8_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 8, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  793. }
  794. else
  795. {
  796. if (x[0] != 'wgrey')
  797. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  798. }
  799. return ret;
  800. }
  801. },
  802. {
  803. data: 'column_11',
  804. orderSequence: ['asc', 'desc'],
  805. render: function (data, type, row, meta){
  806. const x = data.split("§");
  807. var ret = '';
  808. if (x[0] == 'orange')
  809. {
  810. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_9_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 9, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  811. }
  812. else
  813. {
  814. if (x[0] != 'wgrey')
  815. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  816. }
  817. return ret;
  818. }
  819. },
  820. {
  821. data: 'column_12',
  822. orderSequence: ['asc', 'desc'],
  823. render: function (data, type, row, meta){
  824. const x = data.split("§");
  825. var ret = '';
  826. if (x[0] == 'orange')
  827. {
  828. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_10_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 10, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  829. }
  830. else
  831. {
  832. if (x[0] != 'wgrey')
  833. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  834. }
  835. return ret;
  836. }
  837. },
  838. {
  839. data: 'column_13',
  840. orderSequence: ['asc', 'desc'],
  841. render: function (data, type, row, meta){
  842. const x = data.split("§");
  843. var ret = '';
  844. if (x[0] == 'orange')
  845. {
  846. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_11_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 11, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  847. }
  848. else
  849. {
  850. if (x[0] != 'wgrey')
  851. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  852. }
  853. return ret;
  854. }
  855. },
  856. {
  857. data: 'column_14',
  858. orderSequence: ['asc', 'desc'],
  859. render: function (data, type, row, meta){
  860. const x = data.split("§");
  861. var ret = '';
  862. if (x[0] == 'orange')
  863. {
  864. ret = '<a style="width:100%;float:right; text-align:right; display:block; cursor:pointer;" class="' + x[0] + ' lnk_' + row["column_16"] + '" id="lnk_' + row["column_15"] + '_12_' + row["column_17"] + '" onclick="setPayMonth(' + row["column_15"] + ', 12, ' + row["column_17"] + ', ' + row["column_16"] + ')" style="cursor: pointer;"><small>' + x[1] + '</small></a>';
  865. }
  866. else
  867. {
  868. if (x[0] != 'wgrey')
  869. ret = '<a style="width:100%;float:right; text-align:right; display:block;" class="' + x[0] + '"><small>' + x[1] + '</small></a>';
  870. }
  871. return ret;
  872. }
  873. }
  874. ],
  875. layout: {
  876. topStart : null,
  877. topEnd : null,
  878. top1A: {
  879. buttons: [
  880. {
  881. extend: 'collection',
  882. text: 'ESPORTA',
  883. buttons: [
  884. {
  885. extend: 'excelHtml5',"action":newexportaction,
  886. title: 'Pagamento corsi',
  887. orientation: 'landscape',
  888. exportOptions: {
  889. columns: ":not(':last')"
  890. },
  891. footer:false,
  892. customize: function(xlsx) {
  893. var sheet = xlsx.xl.worksheets['sheet1.xml'];
  894. const letters = ["E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"];
  895. for(y=0; y<letters.length; y++)
  896. {
  897. z = y + 4;
  898. var c = output_table.column(z).data().toArray();
  899. //console.log(c);
  900. for (var i = 0; i < c.length; i++)
  901. {
  902. var j = c[i].split("§");
  903. if (j[0] == '0' || j[0] == 'orange')
  904. {
  905. $('row:nth-child('+(i+3)+') [r^="' + letters[y] + '"]', sheet).attr('s', '10');
  906. //sheet.table.body[i+1][z].fillColor = 'orange';
  907. }
  908. if (j[0] == '1' || j[0] == 'green')
  909. {
  910. $('row:nth-child('+(i+3)+') [r^="' + letters[y] + '"]', sheet).attr('s', '40');
  911. //doc.content[1].table.body[i+1][z].fillColor = 'green';
  912. }
  913. if (j[0] == 'yellow')
  914. {
  915. $('row:nth-child('+(i+3)+') [r^="' + letters[y] + '"]', sheet).attr('s', '20');
  916. //doc.content[1].table.body[i+1][z].fillColor = 'blue';
  917. }
  918. }
  919. }
  920. },
  921. },
  922. {
  923. extend: 'pdfHtml5',"action":newexportaction,
  924. title: 'Pagamento corsi',
  925. orientation: 'landscape',
  926. exportOptions: {
  927. columns: ":not(':last')"
  928. },
  929. footer:false,
  930. customize: function(doc) {
  931. for(z=4; z<=16; z++)
  932. {
  933. var c = output_table.column(z).data().toArray();
  934. for (var i = 0; i < c.length; i++)
  935. {
  936. var j = c[i].split("§");
  937. if (j[0] == '0' || j[0] == 'orange')
  938. {
  939. doc.content[1].table.body[i+1][z].fillColor = 'orange';
  940. }
  941. if (j[0] == '1' || j[0] == 'green')
  942. {
  943. doc.content[1].table.body[i+1][z].fillColor = 'green';
  944. }
  945. if (j[0] == 'yellow')
  946. {
  947. doc.content[1].table.body[i+1][z].fillColor = 'blue';
  948. }
  949. }
  950. }
  951. }
  952. }
  953. ],
  954. dropup: true
  955. }
  956. ]
  957. },
  958. top1B : {
  959. pageLength: {
  960. menu: [[10, 25, 50, 100, 100000], [10, 25, 50, 100, "Tutti"]]
  961. }
  962. },
  963. top1C :'search',
  964. },
  965. order: [[2, 'asc'], [3, 'asc']],
  966. pagingType: 'numbers',
  967. "language": {
  968. "url": "/assets/js/Italian.json"
  969. },
  970. "fnInitComplete": function (oSettings, json) {
  971. var html = '&nbsp;<a href="#" class="showHideFilter btn--ui"><i class="fa-solid fa-sliders"></i></a>';
  972. $(".dt-search").append(html);
  973. },
  974. "footerCallback": function (row, data, start, end, display) {
  975. let api = this.api();
  976. api.column(0).footer().innerHTML = '';
  977. api.column(1).footer().innerHTML = '';
  978. api.column(2).footer().innerHTML = '';
  979. api.column(3).footer().innerHTML = '';
  980. for(var i=4; i<=15; i++)
  981. {
  982. api.column(i).footer().innerHTML = '';
  983. }
  984. if (totals != '')
  985. {
  986. totals.split("_").forEach(function (item)
  987. {
  988. var x = item.split("§");
  989. if (x[1] != undefined)
  990. api.column(x[0]).footer().innerHTML = x[1];
  991. else
  992. api.column(x[0]).footer().innerHTML = '';
  993. });
  994. }
  995. }
  996. });
  997. $('#tablesaw-350 thead tr th').addClass('col');
  998. $('#tablesaw-350 thead tr th').css("background-color", "#f6f8fa");
  999. $('#tablesaw-350').on('draw.dt', function() {
  1000. $('[data-bs-toggle="popover"]').popover()
  1001. });
  1002. */
  1003. jQuery.fn.dataTable.Api.register( 'sum()', function ( ) {
  1004. return this.flatten().reduce( function ( a, b ) {
  1005. if ( typeof a === 'string') {
  1006. start = a.indexOf("€");
  1007. a = a.substr(start + 2).replace("</small></a>", "").replace(",",".") * 1;
  1008. }
  1009. if ( typeof b === 'string' && b.indexOf('green') > 0) {
  1010. start = b.indexOf("€");
  1011. b = b.substr(start + 2).replace("</small></a>", "").replace(",",".") * 1;
  1012. }
  1013. else
  1014. {
  1015. b = 0;
  1016. }
  1017. return a + b;
  1018. }, 0 );
  1019. } );
  1020. }
  1021. Livewire.on('setTotals', (tot) =>
  1022. {
  1023. totals = tot;
  1024. console.log(totals);
  1025. });
  1026. var subscription = false;
  1027. var months = [];
  1028. var selectedCourseId = 0;
  1029. var selectedMemberId = 0;
  1030. var selectedMemberCourseId = 0;
  1031. var selectedMonth = 0;
  1032. function setPayMonth(course_id, month, member_id, id)
  1033. {
  1034. if (selectedMemberId > 0 && selectedMemberId != member_id)
  1035. {
  1036. months = [];
  1037. subscription = false;
  1038. }
  1039. if (selectedMemberCourseId != id)
  1040. {
  1041. $(".sub_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  1042. $(".lnk_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  1043. }
  1044. selectedCourseId = course_id;
  1045. selectedMemberId = member_id;
  1046. selectedMemberCourseId = id;
  1047. selectedMonth = month;
  1048. if(!months.includes(month))
  1049. {
  1050. months.push(month);
  1051. $("#lnk_" + course_id + "_" + month + "_" + member_id).addClass("blue").addClass("selected").removeClass("orange");
  1052. }
  1053. else
  1054. {
  1055. months.splice(months.indexOf(months), 1);
  1056. $("#lnk_" + course_id + "_" + month + "_" + member_id).addClass("orange").removeClass("blue").removeClass("selected");
  1057. }
  1058. $(".btResumePayment").hide();
  1059. if (months.length > 0)
  1060. {
  1061. $(".btNewPayment").show();
  1062. $(".btStopPayment").show();
  1063. }
  1064. else
  1065. {
  1066. $(".btNewPayment").hide();
  1067. $(".btStopPayment").hide();
  1068. }
  1069. }
  1070. function resumePayMonth(course_id, month, member_id, id)
  1071. {
  1072. if (selectedMemberId > 0 && selectedMemberId != member_id)
  1073. {
  1074. months = [];
  1075. subscription = false;
  1076. }
  1077. if (selectedMemberCourseId != id)
  1078. {
  1079. $(".sub_" + selectedMemberCourseId).removeClass("orange").addClass("blue").addClass("selected");
  1080. $(".lnk_" + selectedMemberCourseId).removeClass("orange").addClass("blue").addClass("selected");
  1081. }
  1082. selectedCourseId = course_id;
  1083. selectedMemberId = member_id;
  1084. selectedMemberCourseId = id;
  1085. selectedMonth = month;
  1086. console.log(month);
  1087. if(!months.includes(month))
  1088. {
  1089. months.push(month);
  1090. $("#lnk_" + course_id + "_" + month + "_" + member_id).removeClass("blue").removeClass("selected").addClass("selected");
  1091. }
  1092. else
  1093. {
  1094. months.splice(months.indexOf(months), 1);
  1095. $("#lnk_" + course_id + "_" + month + "_" + member_id).removeClass("orange").addClass("blue").removeClass("selected");
  1096. }
  1097. $(".btNewPayment").hide();
  1098. $(".btStopPayment").hide();
  1099. if (months.length > 0)
  1100. {
  1101. $(".btResumePayment").show();
  1102. }
  1103. else
  1104. {
  1105. $(".btResumePayment").hide();
  1106. }
  1107. }
  1108. function setSubscription(course_id, member_id, id)
  1109. {
  1110. if (selectedMemberCourseId != id)
  1111. {
  1112. $(".sub_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  1113. $(".lnk_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  1114. months = [];
  1115. subscription = false;
  1116. }
  1117. selectedCourseId = course_id;
  1118. selectedMemberId = member_id;
  1119. selectedMemberCourseId = id;
  1120. if (subscription)
  1121. {
  1122. $(".sub_" + selectedMemberCourseId).addClass("orange").removeClass("blue").removeClass("selected");
  1123. subscription = false;
  1124. $(".btNewPayment").hide();
  1125. }
  1126. else
  1127. {
  1128. $(".sub_" + selectedMemberCourseId).addClass("blue").addClass("selected").removeClass("orange");
  1129. subscription = true;
  1130. $(".btNewPayment").show();
  1131. }
  1132. }
  1133. function newPayment()
  1134. {
  1135. @this.newPayment(selectedCourseId, months.toString(), selectedMemberId, selectedMemberCourseId, subscription);
  1136. }
  1137. $( document ).ready( function(){
  1138. setMaxWidth();
  1139. setMaxHeight();
  1140. $( window ).bind( "resize", setMaxWidth );
  1141. $( window ).bind( "resize", setMaxHeight );
  1142. });
  1143. function suspendPayment()
  1144. {
  1145. @this.suspendPayment(selectedCourseId, selectedMonth, selectedMemberId, selectedMemberCourseId, subscription);
  1146. }
  1147. function resumePayment()
  1148. {
  1149. @this.resumePayment(selectedCourseId, selectedMonth, selectedMemberId, selectedMemberCourseId, subscription);
  1150. }
  1151. function setMaxWidth() {
  1152. $("#resume-table").width( Math.round( $(window ).width() - size ) ) ;
  1153. //$(".justify-content-between").css({"width": Math.round( $(window ).width() - size) + "px;"}); //.width( Math.round( $(window ).width() - size ) ) ;
  1154. }
  1155. function setMaxHeight() {
  1156. console.log('height:' + $(window ).height() + 'px !important');
  1157. //$("div.row.h-100").attr('style', 'height:' + ($(window ).height() + 50) + 'px !important');
  1158. $("#resume-table").height( Math.round( $(window ).height() - 220 ) ) ;
  1159. }
  1160. </script>
  1161. @endpush