reports.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. @extends('layouts.app')
  2. @section('page-title')| {{__('label.reports')}} @endsection
  3. @section('css')
  4. @endsection
  5. <link href="{!! env('APP_ASSETS') !!}vendor_components/bootstrap-daterangepicker/daterangepicker.css" rel="stylesheet">
  6. @php
  7. $resto = \App\Models\Restaurants::find(\App\Helpers\CommonMethods::getRestuarantID());
  8. $lang = $resto->default_lang;
  9. app()->setLocale($lang);
  10. if(session('app_lang') !==null){
  11. $lang = session('app_lang');
  12. app()->setLocale($lang);
  13. }
  14. @endphp
  15. @section('content')
  16. <!-- Content Wrapper. Contains page content -->
  17. <div class="content-wrapper">
  18. <div class="container-full">
  19. <!-- Main content -->
  20. <section class="content p-2">
  21. <div class="row">
  22. <div class="col-md-6">
  23. <div class="page-top-title">
  24. <h3 class="title m-0">{{__('label.reports')}}</h3>
  25. <p>Download relevant data about your business under several scopes. </p>
  26. </div>
  27. </div>
  28. </div>
  29. <div class="row p-0 m-0">
  30. <div class="col-md-6">
  31. <div class="card rounded">
  32. <div class="card-header d-flex justify-content-between align-items-center">
  33. <div>
  34. <h5>Order history</h5>
  35. <p>Get detailed information about your orders.</p>
  36. </div>
  37. <button type="button" class="btn btn-sm btn-primary create-report" data-section="order" data-title="Order history report">Generate Report</button>
  38. </div>
  39. <div class="card-body">
  40. @if(isset($reports['orders']))
  41. <ul class="list-group list-group-flush">
  42. @foreach($reports['orders'] as $report)
  43. <li class="list-group-item d-flex justify-content-between align-items-start">
  44. <div class="ms-2 me-auto">
  45. <div class="fw-bold">{!! $report['start_date'] !!} - {!! $report['end_date'] !!}</div>
  46. {!! $report['created_at'] !!}, {!! $report['searched_by'] !!}
  47. </div>
  48. <a href="{!! env('APP_URL') !!}public/uploads/report-files/{!! $resto->resto_unique_name !!}/orders/{!! $report['file_name'] !!}" download="orderhistory-{!! \Illuminate\Support\Str::slug($report['start_date']. $report['end_date']) !!}.xlsx" class="btn btn-primary btn-sm">
  49. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 256 256"><path fill="currentColor" d="M228 152v56a20 20 0 0 1-20 20H48a20 20 0 0 1-20-20v-56a12 12 0 0 1 24 0v52h152v-52a12 12 0 0 1 24 0Zm-108.49 8.49a12 12 0 0 0 17 0l40-40a12 12 0 0 0-17-17L140 123V40a12 12 0 0 0-24 0v83l-19.51-19.49a12 12 0 0 0-17 17Z"/></svg>
  50. </a>
  51. <a href="#!" class="text-danger m-2 delete-report" data-id="{!! $report['id'] !!}">
  52. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" d="M7 21q-.825 0-1.413-.588T5 19V6q-.425 0-.713-.288T4 5q0-.425.288-.713T5 4h4q0-.425.288-.713T10 3h4q.425 0 .713.288T15 4h4q.425 0 .713.288T20 5q0 .425-.288.713T19 6v13q0 .825-.588 1.413T17 21H7ZM7 6v13h10V6H7Zm2 10q0 .425.288.713T10 17q.425 0 .713-.288T11 16V9q0-.425-.288-.713T10 8q-.425 0-.713.288T9 9v7Zm4 0q0 .425.288.713T14 17q.425 0 .713-.288T15 16V9q0-.425-.288-.713T14 8q-.425 0-.713.288T13 9v7ZM7 6v13V6Z"/></svg>
  53. </a>
  54. </li>
  55. @endforeach
  56. </ul>
  57. @endif
  58. </div>
  59. </div>
  60. </div>
  61. <div class="col-md-6">
  62. <div class="card rounded">
  63. <div class="card-header d-flex justify-content-between align-items-center">
  64. <div>
  65. <h5>Items Sale</h5>
  66. <p>Get detailed information about your orders.</p>
  67. </div>
  68. <button type="button" class="btn btn-sm btn-primary create-report" data-section="items" data-title="Items Sale">Generate Report</button>
  69. </div>
  70. <div class="card-body">
  71. @if(isset($reports['items']))
  72. <ul class="list-group list-group-flush">
  73. @foreach($reports['items'] as $report)
  74. <li class="list-group-item d-flex justify-content-between align-items-start">
  75. <div class="ms-2 me-auto">
  76. <div class="fw-bold">{!! $report['start_date'] !!} - {!! $report['end_date'] !!}</div>
  77. {!! $report['created_at'] !!}, {!! $report['searched_by'] !!}
  78. </div>
  79. <a href="{!! env('APP_URL') !!}public/uploads/report-files/{!! $resto->resto_unique_name !!}/items-sale/{!! $report['file_name'] !!}" download="itemSale-{!! \Illuminate\Support\Str::slug($report['start_date']. $report['end_date']) !!}.xlsx" class="btn btn-primary btn-sm">
  80. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 256 256"><path fill="currentColor" d="M228 152v56a20 20 0 0 1-20 20H48a20 20 0 0 1-20-20v-56a12 12 0 0 1 24 0v52h152v-52a12 12 0 0 1 24 0Zm-108.49 8.49a12 12 0 0 0 17 0l40-40a12 12 0 0 0-17-17L140 123V40a12 12 0 0 0-24 0v83l-19.51-19.49a12 12 0 0 0-17 17Z"/></svg>
  81. </a>
  82. <a href="#!" class="text-danger m-2 delete-report" data-id="{!! $report['id'] !!}">
  83. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" d="M7 21q-.825 0-1.413-.588T5 19V6q-.425 0-.713-.288T4 5q0-.425.288-.713T5 4h4q0-.425.288-.713T10 3h4q.425 0 .713.288T15 4h4q.425 0 .713.288T20 5q0 .425-.288.713T19 6v13q0 .825-.588 1.413T17 21H7ZM7 6v13h10V6H7Zm2 10q0 .425.288.713T10 17q.425 0 .713-.288T11 16V9q0-.425-.288-.713T10 8q-.425 0-.713.288T9 9v7Zm4 0q0 .425.288.713T14 17q.425 0 .713-.288T15 16V9q0-.425-.288-.713T14 8q-.425 0-.713.288T13 9v7ZM7 6v13V6Z"/></svg>
  84. </a>
  85. </li>
  86. @endforeach
  87. </ul>
  88. @endif
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </section>
  94. <!-- /.content -->
  95. </div>
  96. </div>
  97. <!-- /.content-wrapper -->
  98. <div class="modal" tabindex="-1" id="report-model">
  99. <div class="modal-dialog">
  100. <div class="modal-content">
  101. <div class="modal-header">
  102. <h5 class="modal-title" id="report-tile"></h5>
  103. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  104. </div>
  105. <div class="modal-body">
  106. <p>You 'll download an excel file with selected date of ranges and it 'll also be listed on the report listing section.</p>
  107. <form id="get-report-data" method="POST" action="{!! env('APP_URL') !!}download/report/data" enctype="multipart/form-data">
  108. @csrf
  109. <input type="hidden" name="report_type" />
  110. <div class="form-group">
  111. <label>Time frame</label>
  112. <div id="reportrange" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%">
  113. <i class="fa fa-calendar"></i>&nbsp;
  114. <span></span> <i class="fa fa-caret-down"></i>
  115. </div>
  116. </div>
  117. </form>
  118. </div>
  119. <div class="modal-footer">
  120. <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
  121. <button type="button" class="btn btn-primary generate-report">Create Report</button>
  122. </div>
  123. </div>
  124. </div>
  125. </div>
  126. @endsection
  127. @section('js')
  128. <script type="text/javascript" src="{!! env('APP_ASSETS') !!}vendor_components/bootstrap-daterangepicker/daterangepicker.min.js"></script>
  129. <script>
  130. $(function () {
  131. $("body").on("click",".delete-report",function(){
  132. var _id = $(this).data('id');
  133. var _this = $(this);
  134. //
  135. swal({
  136. title: " Confirm?",
  137. text: "Do you want delete?",
  138. type: "error",
  139. showCancelButton: true,
  140. confirmButtonClass: "btn-danger",
  141. confirmButtonText: " Confirm, delete it!",
  142. cancelButtonText: "No, cancel please!",
  143. closeOnConfirm: true,
  144. closeOnCancel: true
  145. },
  146. function(isConfirm) {
  147. if (isConfirm) {
  148. $.ajax({
  149. url:'{!! env('APP_URL') !!}report/delete/'+_id,
  150. success:function (response) {
  151. $.toast({
  152. heading: 'Report Status',
  153. text: 'Report is delete successfully.',
  154. position: 'top-right',
  155. loaderBg: '#ff6849',
  156. icon: 'success',
  157. hideAfter: 3000,
  158. stack: 1
  159. });
  160. _this.parents('.list-group-item').remove();
  161. }
  162. });
  163. }
  164. });
  165. // alert(_id);
  166. });
  167. $("body").on("click",".generate-report",function(){
  168. var start_date = $('#reportrange').data('daterangepicker').startDate;
  169. var s_date = moment(start_date).format("YYYY-MM-DD");
  170. var end_date = $('#reportrange').data('daterangepicker').endDate;
  171. var e_date = moment(end_date).format("YYYY-MM-DD");
  172. var _type = $("input[name=report_type]").val();
  173. var url = "{!! env('APP_URL') !!}download/order/history";
  174. if(_type=="items")
  175. url = "{!! env('APP_URL') !!}item/sales/count";
  176. $.ajax({
  177. url:url,
  178. type:"POST",
  179. data:{
  180. '_token':"{!! csrf_token() !!}",
  181. start_date:s_date,
  182. end_date:e_date,
  183. restoName:"{!! $resto->resto_unique_name !!}"
  184. },
  185. success:function(response){
  186. location.reload();
  187. }
  188. });
  189. });
  190. $("body").on("click",".create-report",function(){
  191. var _title = $(this).data('title');
  192. var _section = $(this).data('section');
  193. $("#report-tile").html(_title);
  194. $("input[name=report_type]").val(_section);
  195. $("#report-model").modal('show');
  196. });
  197. var start = moment().subtract(29, 'days');
  198. var end = moment();
  199. $('#reportrange').daterangepicker({
  200. startDate: start,
  201. endDate: end,
  202. ranges: {
  203. 'Today': [moment(), moment()],
  204. 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
  205. 'Last 7 Days': [moment().subtract(6, 'days'), moment()],
  206. 'Last 30 Days': [moment().subtract(29, 'days'), moment()],
  207. 'This Month': [moment().startOf('month'), moment().endOf('month')],
  208. 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
  209. }
  210. }, cb);
  211. cb(start, end);
  212. });
  213. function cb(start, end) {
  214. $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
  215. // alert(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
  216. }
  217. </script>
  218. @endsection