course_list.blade.php 60 KB

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