table.blade.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <div class="d-flex align-items-center justify-content-between">
  2. <div class="d-flex align-items-center">
  3. <div class="my-2">Showing <b>{{ $rows->firstItem() }}</b> to <b>{{ $rows->lastItem() }}</b> of total
  4. <b>{{ $rows->total() }}</b> records
  5. </div>
  6. </div>
  7. </div>
  8. <div class="table-responsive scrollable">
  9. <table class="table table-sm table-hover table-bordered mb-0 bg-white">
  10. <thead>
  11. <tr>
  12. <th>#</th>
  13. <th>Created At</th>
  14. <th>Total Amount</th>
  15. <th>Orders</th>
  16. <th>Trx</th>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. @foreach ($rows as $order)
  21. <tr @if ($order->is_cancelled) class="cancelled-order" @endif>
  22. <td class="text-nowrap">
  23. <a href="{{ route('admin.orders.view.dashboard', $order) }}"
  24. class="me-2">{{ $order->orderNumber() }}</a>
  25. <a href="{{ route('admin.orders.view.preview-invoice', $order) }}"
  26. class="me-2">Invoice</a>
  27. </td>
  28. <td class="text-nowrap">{{ friendly_date_time($order->created_at) }}</td>
  29. <td>{{ displayAmount('$', $order->total()) }}</td>
  30. <td>
  31. @include('app.my-account.admin.orders.partials.order-tests-summary')
  32. </td>
  33. <td class="text-nowrap">
  34. <?php $finalTrx = $order->finalFinancialTransaction(); ?>
  35. @if (@$finalTrx)
  36. @if ($finalTrx->charge_or_refund == 'CHARGE')
  37. <span><i class="fa-duotone fa-circle-check fa-fw text-success"></i> CHARGED</span>
  38. @else
  39. <span><i class="fa-duotone fa-circle-xmark fa-fw text-danger"></i> REFUNDED</span>
  40. @endif
  41. @else
  42. <span><i class="fa-duotone fa-circle-xmark fa-fw text-danger"></i> NOT CHARGED</span>
  43. @endif
  44. </td>
  45. </tr>
  46. @endforeach
  47. </tbody>
  48. </table>
  49. </div>
  50. <script>
  51. (function($) {
  52. var ordersTable = {
  53. checkedOrders: [],
  54. initSelectAll: function() {
  55. var self = this;
  56. var multiCheckbox = $('[multi-check]');
  57. var orderCheckboxes = $('[order-check]');
  58. multiCheckbox.click(function(e) {
  59. var isChecked = e.target.checked ? true : false;
  60. var checkedOrders = [];
  61. if (isChecked) {
  62. $.each(orderCheckboxes, function(i, order) {
  63. var orderID = $(order).data('id');
  64. checkedOrders.push(orderID);
  65. $(order).attr('checked', true);
  66. });
  67. } else {
  68. $.each(orderCheckboxes, function(i, order) {
  69. $(order).attr('checked', false);
  70. });
  71. }
  72. self.updateCheckedOrders(checkedOrders);
  73. });
  74. },
  75. initSingleOrderCheckbox: function() {
  76. var self = this;
  77. $('[order-check]').click(function(e) {
  78. var input = e.target;
  79. var orderID = $(input).data('id');
  80. var isChecked = input.checked ? true : false;
  81. var checkedOrders = [...self.checkedOrders];
  82. if (isChecked) {
  83. checkedOrders.push(orderID);
  84. } else {
  85. var index = checkedOrders.indexOf(orderID);
  86. checkedOrders.splice(index, 1);
  87. }
  88. self.updateCheckedOrders(checkedOrders);
  89. });
  90. },
  91. updateCheckedOrders: function(orders) {
  92. var self = this;
  93. self.checkedOrders = orders;
  94. if ($('[order-check]:checked').length === $('[order-check]').length) {
  95. $('[multi-check]').prop('checked', true);
  96. } else {
  97. $('[multi-check]').prop('checked', false);
  98. }
  99. $('input[name=selectedIDs]').val(JSON.stringify(self.checkedOrders));
  100. if (self.checkedOrders.length) {
  101. $('#GenerateInvoicesPdfForm').removeClass('d-none');
  102. } else {
  103. $('#GenerateInvoicesPdfForm').addClass('d-none');
  104. }
  105. },
  106. init: function() {
  107. this.initSelectAll();
  108. this.initSingleOrderCheckbox();
  109. }
  110. };
  111. ordersTable.init();
  112. })(jQuery);
  113. </script>