Guest User

Dashboard.blade.php

a guest
May 11th, 2021
374
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @extends('admin.layouts.master')
  2. @section("title")
  3. {{__('storeDashboard.dashboardTitle')}}
  4. @endsection
  5. @section('content')
  6.  
  7. @if(config('appSettings.oneSignalAppId') != null && config('appSettings.oneSignalRestApiKey') != null)
  8. <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js"></script>
  9. <script>
  10.     window.OneSignal = window.OneSignal || [];
  11.     OneSignal.push(function() {
  12.       OneSignal.init({
  13.         appId: "{{ config('appSettings.oneSignalAppId') }}",
  14.       });
  15.     });
  16.     let user_id = "{{ Auth::user()->id }}";
  17.    
  18.     OneSignal.push(function() {
  19.       OneSignal.on('subscriptionChange', function(isSubscribed) {
  20.         if (isSubscribed) {
  21.           OneSignal.push(function() {
  22.             OneSignal.setExternalUserId(user_id);
  23.           });
  24.         }
  25.       });
  26.     });
  27. </script>
  28. @endif
  29.  
  30. <div class="content mb-5">
  31.     <div class="row mt-3">
  32.         <div class="col-6 col-xl-3 mt-2">
  33.             <div class="col-xl-12 dashboard-display p-3">
  34.                 <a class="block block-link-shadow text-left" href="javascript:void(0)">
  35.                     <div class="block-content block-content-full clearfix">
  36.                         <div class="float-right mt-10 d-none d-sm-block">
  37.                             <i class="dashboard-display-icon icon-store2"></i>
  38.                         </div>
  39.                         <div class="dashboard-display-number">{{ $restaurantsCount }}</div>
  40.                         <div class="font-size-sm text-uppercase text-muted">{{__('storeDashboard.dashboardStores')}}</div>
  41.                     </div>
  42.                 </a>
  43.             </div>
  44.         </div>
  45.         <div class="col-6 col-xl-3 mt-2">
  46.             <div class="col-xl-12 dashboard-display p-3">
  47.                 <a class="block block-link-shadow text-left" href="javascript:void(0)">
  48.                     <div class="block-content block-content-full clearfix">
  49.                         <div class="float-right mt-10 d-none d-sm-block">
  50.                             <i class="dashboard-display-icon icon-basket"></i>
  51.                         </div>
  52.                         <div class="dashboard-display-number">{{ $ordersCount }}</div>
  53.                         <div class="font-size-sm text-uppercase text-muted">{{__('storeDashboard.dashboardOrdersProcessed')}}</div>
  54.                     </div>
  55.                 </a>
  56.             </div>
  57.         </div>
  58.         <div class="col-6 col-xl-3 mt-2">
  59.             <div class="col-xl-12 dashboard-display p-3">
  60.                 <a class="block block-link-shadow text-left" href="javascript:void(0)">
  61.                     <div class="block-content block-content-full clearfix">
  62.                         <div class="float-right mt-10 d-none d-sm-block">
  63.                             <i class="dashboard-display-icon icon-stack-star"></i>
  64.                         </div>
  65.                         <div class="dashboard-display-number">{{ $orderItemsCount }}</div>
  66.                         <div class="font-size-sm text-uppercase text-muted">{{__('storeDashboard.dashboardItemsSold')}}</div>
  67.                     </div>
  68.                 </a>
  69.             </div>
  70.         </div>
  71.         <div class="col-6 col-xl-3 mt-2">
  72.             <div class="col-xl-12 dashboard-display p-3">
  73.                 <a class="block block-link-shadow text-left" href="javascript:void(0)">
  74.                     <div class="block-content block-content-full clearfix">
  75.                         <div class="float-right mt-10 d-none d-sm-block">
  76.                             <i class="dashboard-display-icon icon-coin-dollar"></i>
  77.                         </div>
  78.                         <div class="dashboard-display-number">{{ config('appSettings.currencyFormat') }}
  79.                             {{ floatval($totalEarning) }}
  80.                         </div>
  81.                         <div class="font-size-sm text-uppercase text-muted">{{__('storeDashboard.dashboardEarnings')}}</div>
  82.                     </div>
  83.                 </a>
  84.             </div>
  85.         </div>
  86.     </div>
  87.     <div class="row pt-4 p-0">
  88.         <div class="col-xl-12">
  89.             <div class="panel panel-flat dashboard-main-col mt-4">
  90.  
  91.                 @if($autoPrinting)
  92.                 <button class="btn text-danger btn-lg mr-2 mt-2 float-right printerStatus" data-popup="tooltip" data-placement="right" title="{{ __('thermalPrinterLang.connectingToPrinterFailedMessage') }}" style="border: 0; background-color: #F5F5F5;"><i class="icon-printer4"></i>
  93.                 </button>
  94.                 @endif
  95.  
  96.                 <div class="panel-heading">
  97.                     <h4 class="panel-title pl-3 pt-3"><strong>{{__('storeDashboard.dashboardNewOrders')}}</strong></h4>
  98.                     <hr>
  99.                 </div>
  100.                 <div id="newOrdersTable" class="table-responsive @if(!count($newOrders)) hidden @endif">
  101.                     <table class="table text-nowrap">
  102.                         <thead>
  103.                             <tr>
  104.                                 <th>{{__('storeDashboard.ovName')}}</th>
  105.                                 <th></th>
  106.                                 <th>{{__('storeDashboard.ovStoreName')}}</th>
  107.                                 <th>{{__('storeDashboard.dashboardPrice')}}</th>
  108.                                 <th>{{__('storeDashboard.ovOrderType')}}</th>
  109.                             </tr>
  110.                         </thead>
  111.                         <tbody>
  112.                             @foreach($newOrders as $nO)
  113.                             <tr>
  114.                                 <td>
  115.                                     <a href="{{ route('restaurant.viewOrder', $nO->unique_order_id) }}"
  116.                                         class="letter-icon-title">{{ $nO->user->name }}</a>
  117.                                 </td>
  118.                                 <td class="text-center new-order-actions">
  119.                                     <a href="javascript:void(0)"
  120.                                         class="btn btn-primary btn-labeled btn-labeled-left mr-2 accpetOrderBtnTableList" data-id={{ $nO->id }}> <b><i
  121.                                         class="icon-checkmark3 ml-1"></i> </b> {{__('storeDashboard.dashboardAcceptOrder')}} </a>
  122.                                     <a href="{{ route('restaurant.cancelOrder', $nO->id) }}"
  123.                                         class="btn btn-danger btn-labeled btn-labeled-right mr-2 cancelOrderBtnTableList" data-popup="tooltip"
  124.                                         data-placement="right" title="{{ __('storeDashboard.dashboardDoubleClickMsg') }}"> <b><i
  125.                                         class="icon-cross ml-1"></i></b> {{__('storeDashboard.dashboardCancelOrder')}} </a>
  126.                                 </td>
  127.                                 <td>
  128.                                     {{ $nO->restaurant->name }}
  129.                                 </td>
  130.                                  @php
  131.                                     if(!is_null($nO->tip_amount)) {
  132.                                         $nOTotal = $nO->total - $nO->tip_amount;
  133.                                     } else {
  134.                                         $nOTotal = $nO->total;
  135.                                     }
  136.                                 @endphp
  137.                                 <td>
  138.                                     <span class="text-semibold no-margin">{{ config('appSettings.currencyFormat') }}
  139.                                     {{ $nOTotal }}</span>
  140.                                 </td>
  141.                                 <td>
  142.                                     <span class="badge badge-flat border-grey-800 text-default text-capitalize">
  143.                                     {{__('storeDashboard.dashboardNew')}}
  144.                                     </span>
  145.                                     @if($nO->delivery_type == 2)
  146.                                     <span class="badge badge-flat border-danger-800 text-default text-capitalize">
  147.                                     {{__('storeDashboard.dashboardSelfPickup')}}
  148.                                     </span>
  149.                                     @endif
  150.                                 </td>
  151.                             </tr>
  152.                             @endforeach
  153.                         </tbody>
  154.                     </table>
  155.                 </div>
  156.                 @if(!count($newOrders))
  157.                 <div class="text-center text-muted pb-2" id="newOrdersNoOrdersMessage">
  158.                     <h4> {{__('storeDashboard.dashboardNoOrders')}} </h4>
  159.                 </div>
  160.                 @endif
  161.             </div>
  162.         </div>
  163.         <div class="col-xl-12">
  164.             <div class="panel panel-flat dashboard-main-col mt-4">
  165.                 <div class="panel-heading">
  166.                     <h4 class="panel-title pl-3 pt-3"><strong>{{__('storeDashboard.dashboardPreparingOrders')}}</strong></h4>
  167.                     <hr>
  168.                 </div>
  169.                 <div class="table-responsive">
  170.                     @if(count($preparingOrders))
  171.                     <table class="table text-nowrap">
  172.                         <thead>
  173.                             <tr>
  174.                                 <th>{{__('storeDashboard.ovName')}}</th>
  175.                                 <th></th>
  176.                                 <th>{{__('storeDashboard.dashboardOrderID')}}</th>
  177.                                 <th>{{__('storeDashboard.dashboardPrice')}}</th>
  178.                                 <th>{{__('storeDashboard.dashboardOrderPlacedTime')}}</th>
  179.                                 <th>{{__('storeDashboard.dashboardOrderAcceptedTime')}}</th>
  180.                             </tr>
  181.                         </thead>
  182.                         <tbody>
  183.                             @foreach($preparingOrders as $pO)
  184.                             <tr>
  185.                                 <td>
  186.                                     <a href="{{ route('restaurant.viewOrder', $pO->unique_order_id) }}"
  187.                                         class="letter-icon-title">{{ $pO->user->name }}</a>
  188.                                 </td>
  189.                                 <td class="text-center accepted-order-actions">
  190.                                     @if($pO->delivery_type == 2 && $pO->orderstatus_id == 2)
  191.                                     <a href="{{ route('restaurant.markOrderReady', $pO->id) }}"
  192.                                         class="btn btn-warning btn-labeled btn-labeled-left mr-2 actionAfterAccept"> <b><i
  193.                                         class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardMarkAsReady')}} </a>
  194.                                     @endif
  195.                                     @if($pO->delivery_type == 2 && $pO->orderstatus_id == 7)
  196.                                     <a href="{{ route('restaurant.markSelfPickupOrderAsCompleted', $pO->id) }}"
  197.                                         class="btn btn-success btn-labeled btn-labeled-left mr-2 actionAfterAccept"> <b><i
  198.                                         class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardMarkAsCompleted')}} </a>
  199.                                     @endif
  200.                                     @if($pO->delivery_type == 1)
  201.                                     @endif
  202.                                 </td>
  203.                                 <td>
  204.                                     <a href="{{ route('restaurant.viewOrder', $pO->unique_order_id)}}" class="letter-icon-title">{{ $pO->unique_order_id }}</a>
  205.                                 </td>
  206.                                  @php
  207.                                     if(!is_null($pO->tip_amount)) {
  208.                                         $pOTotal = $pO->total - $pO->tip_amount;
  209.                                     } else {
  210.                                         $pOTotal = $pO->total;
  211.                                     }
  212.                                 @endphp
  213.                                 <td>
  214.                                     <span class="text-semibold no-margin">{{ config('appSettings.currencyFormat') }}
  215.                                     {{ $pOTotal }}</span>
  216.                                 </td>
  217.                                 <td>
  218.                                     {{ $pO->created_at->diffForHumans() }}
  219.                                 </td>
  220.                                 <td>
  221.                                     {{ $pO->updated_at->diffForHumans() }}
  222.                                 </td>
  223.                             </tr>
  224.                             @endforeach
  225.                         </tbody>
  226.                     </table>
  227.                     @else
  228.                     <div class="text-center text-muted pb-2">
  229.                         <h4> {{__('storeDashboard.dashboardNoOrders')}} </h4>
  230.                     </div>
  231.                     @endif
  232.                 </div>
  233.             </div>
  234.         </div>
  235.         <div class="col-xl-12">
  236.             <div class="panel panel-flat dashboard-main-col mt-4">
  237.                 <div class="panel-heading">
  238.                     <h4 class="panel-title pl-3 pt-3"><strong>{{__('storeDashboard.dashboardSelfpickupOrders')}}</strong></h4>
  239.                     <hr>
  240.                 </div>
  241.                 <div class="table-responsive">
  242.                     @if(count($selfpickupOrders))
  243.                     <table class="table text-nowrap">
  244.                         <thead>
  245.                             <tr>
  246.                                 <th>{{__('storeDashboard.ovName')}}</th>
  247.                                 <th></th>
  248.                                 <th>{{__('storeDashboard.dashboardOrderID')}}</th>
  249.                                 <th>{{__('storeDashboard.dashboardPrice')}}</th>
  250.                                 <th>{{__('storeDashboard.dashboardOrderPlacedTime')}}</th>
  251.                                 <th>{{__('storeDashboard.dashboardOrderAcceptedTime')}}</th>
  252.                             </tr>
  253.                         </thead>
  254.                         <tbody>
  255.                             @foreach($selfpickupOrders as $spO)
  256.                             <tr>
  257.                                 <td>
  258.                                     <a href="{{ route('restaurant.viewOrder', $spO->unique_order_id) }}"
  259.                                         class="letter-icon-title">{{ $spO->user->name }}</a>
  260.                                 </td>
  261.                                 <td class="text-center accepted-order-actions">
  262.                                     @if($spO->delivery_type == 2 && $spO->orderstatus_id == 2)
  263.                                     <a href="{{ route('restaurant.markOrderReady', $spO->id) }}"
  264.                                         class="btn btn-warning btn-labeled btn-labeled-left mr-2 actionAfterAccept"> <b><i
  265.                                         class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardMarkAsReady')}} </a>
  266.                                     @endif
  267.                                     @if($spO->delivery_type == 2 && $spO->orderstatus_id == 7)
  268.                                     <a href="{{ route('restaurant.markSelfPickupOrderAsCompleted', $spO->id) }}"
  269.                                         class="btn btn-success btn-labeled btn-labeled-left mr-2 actionAfterAccept"> <b><i
  270.                                         class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardMarkAsCompleted')}} </a>
  271.                                     @endif
  272.                                     @if($spO->delivery_type == 1)
  273.                                     @endif
  274.                                 </td>
  275.                                 <td>
  276.                                     <a href="{{ route('restaurant.viewOrder', $spO->unique_order_id)}}" class="letter-icon-title">{{ $spO->unique_order_id }}</a>
  277.                                 </td>
  278.                                 <td>
  279.                                     <span class="text-semibold no-margin">{{ config('appSettings.currencyFormat') }}
  280.                                     {{ $spO->total }}</span>
  281.                                 </td>
  282.                                 <td>
  283.                                     {{ $spO->created_at->diffForHumans() }}
  284.                                 </td>
  285.                                 <td>
  286.                                     {{ $spO->updated_at->diffForHumans() }}
  287.                                 </td>
  288.                             </tr>
  289.                             @endforeach
  290.                         </tbody>
  291.                     </table>
  292.                     @else
  293.                     <div class="text-center text-muted pb-2">
  294.                         <h4> {{__('storeDashboard.dashboardNoOrders')}} </h4>
  295.                     </div>
  296.                     @endif
  297.                 </div>
  298.             </div>
  299.         </div>
  300.         <div class="col-xl-12">
  301.             <div class="panel panel-flat dashboard-main-col mt-4">
  302.                 <div class="panel-heading">
  303.                     <h4 class="panel-title pl-3 pt-3"><strong>{{__('storeDashboard.dashboardOngoingDeliveries')}}</strong></h4>
  304.                     <hr>
  305.                 </div>
  306.                 @if(count($ongoingOrders))
  307.                 <div class="table-responsive">
  308.                     <table class="table text-nowrap">
  309.                         <thead>
  310.                             <tr>
  311.                                 <th>{{__('storeDashboard.ovName')}}</th>
  312.                                 <th></th>
  313.                                 <th>{{__('storeDashboard.dashboardOrderID')}}</th>
  314.                                 <th>{{__('storeDashboard.dashboardPrice')}}</th>
  315.                                 <th>{{__('storeDashboard.dashboardOrderPlacedTime')}}</th>
  316.                                 <th>{{__('storeDashboard.dashboardOrderAcceptedTime')}}</th>
  317.                             </tr>
  318.                         </thead>
  319.                         <tbody>
  320.                             @foreach($ongoingOrders as $ogO)
  321.                             <tr>
  322.                                 <td>
  323.                                     <a href="{{ route('restaurant.viewOrder', $ogO->unique_order_id) }}"
  324.                                         class="letter-icon-title">{{ $ogO->user->name }}</a>
  325.                                 </td>
  326.                                 <td class="text-center accepted-order-actions">
  327.                                     @if($ogO->delivery_type == 2 && $ogO->orderstatus_id == 2)
  328.                                     <a href="{{ route('restaurant.markOrderReady', $ogO->id) }}"
  329.                                         class="btn btn-warning btn-labeled btn-labeled-left mr-2 actionAfterAccept"> <b><i
  330.                                         class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardMarkAsReady')}} </a>
  331.                                     @endif
  332.                                     @if($ogO->delivery_type == 2 && $ogO->orderstatus_id == 7)
  333.                                     <a href="{{ route('restaurant.markSelfPickupOrderAsCompleted', $ogO->id) }}"
  334.                                         class="btn btn-success btn-labeled btn-labeled-left mr-2 actionAfterAccept"> <b><i
  335.                                         class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardMarkAsCompleted')}} </a>
  336.                                     @endif
  337.                                     @if($ogO->delivery_type == 1)
  338.                                     @endif
  339.                                 </td>
  340.                                 <td>
  341.                                     <a href="{{ route('restaurant.viewOrder', $ogO->unique_order_id)}}" class="letter-icon-title">{{ $ogO->unique_order_id }}</a>
  342.                                 </td>
  343.                                  @php
  344.                                     if(!is_null($ogO->tip_amount)) {
  345.                                         $ogOTotal = $ogO->total - $ogO->tip_amount;
  346.                                     } else {
  347.                                         $ogOTotal = $ogO->total;
  348.                                     }
  349.                                 @endphp
  350.                                 <td>
  351.                                     <span class="text-semibold no-margin">{{ config('appSettings.currencyFormat') }}
  352.                                     {{ $ogOTotal }}</span>
  353.                                 </td>
  354.                                 <td>
  355.                                     {{ $ogO->created_at->diffForHumans() }}
  356.                                 </td>
  357.                                 <td>
  358.                                     {{ $ogO->updated_at->diffForHumans() }}
  359.                                 </td>
  360.                             </tr>
  361.                             @endforeach
  362.                         </tbody>
  363.                     </table>
  364.                     @else
  365.                     <div class="text-center text-muted pb-2">
  366.                         <h4> {{__('storeDashboard.dashboardNoOrders')}} </h4>
  367.                     </div>
  368.                 </div>
  369.                 @endif
  370.             </div>
  371.         </div>
  372.     </div>
  373. </div>
  374. <input type="hidden" value="{{ csrf_token() }}" class="csrfToken">
  375. <div id="newOrderModal" class="modal fade mt-5" tabindex="-1" data-backdrop="static" data-keyboard="false">
  376.     <div class="modal-dialog modal-md">
  377.         <div class="modal-content">
  378.             <div class="modal-header justify-content-center">
  379.                 <h5 class="modal-title mt-3"> <i class="icon-bell3 animated-bell"></i> </h5>
  380.             </div>
  381.             <div class="float-right pr-3 pt-3" style="position: absolute; right: 0;">
  382.                 <button type="button" class="close" data-dismiss="modal">&times;</button>
  383.             </div>
  384.             <div class="modal-body" id="newOrdersData">
  385.                 <div class="d-flex justify-content-center">
  386.                     <h3 class="text-muted"> {{__('storeDashboard.dashboardNoOrders')}} </h3>
  387.                 </div>
  388.             </div>
  389.         </div>
  390.     </div>
  391. </div>
  392. <script>
  393.  
  394.     var autoPrinting = '{{ $autoPrinting }}';
  395.  
  396.     if (autoPrinting) {
  397.         var socket = null;
  398.         var socket_host = 'ws://127.0.0.1:6441';
  399.  
  400.         initializeSocket = function() {
  401.             try {
  402.                 if (socket == null) {
  403.                     socket = new WebSocket(socket_host);
  404.                     socket.onopen = function() {};
  405.                     socket.onmessage = function(msg) {
  406.                         let message = msg.data;
  407.                         $.jGrowl("", {
  408.                             position: 'bottom-center',
  409.                             header: message,
  410.                             theme: 'bg-danger',
  411.                             life: '5000'
  412.                         });
  413.                     };
  414.                     socket.onclose = function() {
  415.                         socket = null;
  416.                     };
  417.                 }
  418.             } catch (e) {
  419.                 console.log("ERROR", e);
  420.             }
  421.  
  422.             var checkSocketConnecton = setInterval(function() {
  423.                 if (socket == null || socket.readyState != 1) {
  424.                     $('.printerStatus').attr('data-original-title', '{{__('thermalPrinterLang.connectingToPrinterFailedMessage')}}').removeClass('text-success').addClass('text-danger');
  425.                 }
  426.                 if (socket != null && socket.readyState == 1) {
  427.                      $('.printerStatus').removeClass('text-danger').addClass('text-success').attr('data-original-title', '{{ __('thermalPrinterLang.connectionSuccessToLocalServer') }}');
  428.                 }
  429.                 clearInterval(checkSocketConnecton);
  430.             }, 500)
  431.         };
  432.     }
  433.  
  434.  
  435.     $(function() {
  436.  
  437.         if (autoPrinting) {
  438.             initializeSocket();
  439.         }
  440.  
  441.         var touchtime = 0;
  442.        
  443.         let notification = document.createElement('audio');
  444.         let notificationFileRoute = '{{substr(url("/"), 0, strrpos(url("/"), '/'))}}/assets/backend/tones/{{ config('appSettings.restaurantNotificationAudioTrack') }}.mp3';
  445.            notification.setAttribute('src', notificationFileRoute);
  446.            notification.setAttribute('type', 'audio/mp3');
  447.            // notification.setAttribute('muted', 'muted');
  448.            notification.setAttribute('loop', 'true');
  449.        
  450.         $(".stopSound").click(function(event) {
  451.             notification.pause();
  452.             notification.currentTime = 0;
  453.         });
  454.        
  455.      
  456.         const newOrderJson = @json($newOrders);
  457.         console.log(newOrderJson);
  458.    
  459.         setInterval(function() {
  460.             $.ajax({
  461.                 url: '{{ route('restaurant.getNewOrders') }}',
  462.                 type: 'POST',
  463.                 dataType: 'json',
  464.                 data: {listed_order_ids: @json($newOrdersIds), _token: $('.csrfToken').val()},
  465.             })
  466.    
  467.             .done(function(newArray) {
  468.                 console.log("New Array", newArray)
  469.                 console.log(newOrderJson.length);
  470.                 console.log(newArray.length );
  471.    
  472.                 if (newArray.length > 0) {
  473.                     //if new orders, then lenght will be greater, if order cancelled, then it should not go inside this
  474.                     console.log("NEW ORDER")
  475.                
  476.                     $('#newOrderModal').modal({
  477.                         backdrop: 'static',
  478.                         keyboard: false
  479.                     });
  480.    
  481.                     //play sound
  482.                     notification.play();
  483.    
  484.                     console.log("New Array", newArray)
  485.                     // const newOrder = newArray[0];
  486.    
  487.                     let newOrderData = "";
  488.                     $.map(newArray, function(order, index) {
  489.                         if(order.delivery_type == 2) {
  490.                             var selfPickup = '<span class="badge badge-flat border-danger-800 text-default text-capitalize ml-1">{{__('storeDashboard.dashboardSelfPickup')}}</span>'
  491.                         } else {
  492.                             selfPickup = "";
  493.                         }
  494.    
  495.                         let viewOrderURL = "{{ url('/store-owner/order') }}/" + order.unique_order_id;
  496.                        
  497.                         console.log(order);
  498.  
  499.                         if (order.tip_amount != null) {
  500.                             var orderTotal = parseFloat(order.total) - parseFloat(order.tip_amount);
  501.                         } else {
  502.                              var orderTotal = order.total;
  503.                         }
  504.                         newOrderData +='<div class="popup-order mb-3"><div class="text-center my-3 h5"><strong><span class="text-semibold no-margin">{{ config('appSettings.currencyFormat') }}'+orderTotal+'</span> <i class="icon-arrow-right5"></i> <a href="'+viewOrderURL+'">'+order.unique_order_id+'</a> <i class="icon-arrow-right5"></i>'+order.restaurant.name+'</strong> '+ selfPickup +'</div>';
  505.    
  506.                         newOrderData += '<div class="d-flex justify-content-center"><button data-id="'+order.id+'" class="btn btn-primary btn-labeled btn-labeled-left mr-2 acceptOrderBtn"><b><i class="icon-checkmark3 ml-1"></i></b> {{__('storeDashboard.dashboardAcceptOrder')}} </a> <button data-id="'+order.id+'" class="btn btn-danger btn-labeled btn-labeled-right mr-2 cancelOrderBtnPopup" data-popup="tooltip" data-placement="top" title="{{__('storeDashboard.dashboardDoubleClickMsg')}}"> <b><i class="icon-cross ml-1"></i></b> {{__('storeDashboard.dashboardCancelOrder')}}  </a></div></div>'
  507.                        
  508.    
  509.                         $('#newOrdersData').html(newOrderData);
  510.                         $('#newOrdersNoOrdersMessage').remove();
  511.                     });
  512.                    
  513.                 } else {
  514.                     console.log("NO New Order")
  515.                     //when orde has been accepted or denied, length will be 0, close the model
  516.                     $('#newOrderModal').modal('hide');
  517.                 }
  518.             })
  519.             .fail(function() {
  520.                 console.log("error");
  521.             })  
  522.         }, {{ config("appSettings.restaurantNewOrderRefreshRate") }} * 1000); //all API every x seconds (config settings from admin)
  523.        
  524.         //reload page when popup closed
  525.         $('#newOrderModal').on('hidden.bs.modal', function () {
  526.             window.location.reload();
  527.         })
  528.    
  529.    
  530.         //on single click, accpet order and disable block
  531.         $('body').on("click", ".acceptOrderBtn", function(e) {
  532.            
  533.             let context = $(this).parents('.popup-order');
  534.             context.addClass('popup-order-processing').prepend('<div class="d-flex pt-2 pr-2 float-right"><i class="icon-spinner10 spinner"></i></div>')
  535.             console.log("HERE", context);
  536.    
  537.             let id = $(this).attr("data-id");
  538.             let acceptOrderUrl = "{{ url('/store-owner/orders/accept-order') }}/" +id;
  539.             $.ajax({
  540.                 url: acceptOrderUrl,
  541.                 type: 'GET',
  542.                 dataType: 'JSON',
  543.             })
  544.             .done(function(data) {
  545.                 $(context).remove();
  546.                 //count number of order on popup, if 0 then remove popup
  547.                 if ($('.popup-order').length == 0) {
  548.                     $('#newOrderModal').modal('hide');
  549.                 }
  550.                 $.jGrowl("{{__('storeDashboard.orderAcceptedNotification')}}", {
  551.                     position: 'bottom-center',
  552.                     header: '{{__('storeDashboard.successNotification')}}',
  553.                     theme: 'bg-success',
  554.                     life: '5000'
  555.                 });
  556.             })
  557.             .fail(function() {
  558.                 console.log("error")
  559.                 $.jGrowl("{{__('storeDashboard.orderSomethingWentWrongNotification')}}", {
  560.                     position: 'bottom-center',
  561.                     header: '{{__('storeDashboard.woopssNotification')}}',
  562.                     theme: 'bg-warning',
  563.                     life: '5000'
  564.                 });
  565.             })
  566.         });
  567.  
  568.         $('body').on("click", ".accpetOrderBtnTableList", function(e) {
  569.            
  570.             let elem = $(this);
  571.             $(this).parents('.new-order-actions').addClass('popup-order-processing');
  572.             @if($autoPrinting)
  573.                 let printType = null;
  574.                 let order_id = $(this).data("id");
  575.                 let token = $('.csrfToken').val();
  576.  
  577.                 $.ajax({
  578.                     url: '{{ route('thermalprinter.getOrderData') }}',
  579.                     type: 'POST',
  580.                     dataType: 'JSON',
  581.                     data: {order_id: order_id, _token: token, print_type: printType },
  582.                 })
  583.                 .done(function(response) {
  584.                     let content = {};
  585.                     content.type = 'print-receipt';
  586.                     content.data = response;
  587.                     let sendData = JSON.stringify(content);
  588.                         if (socket != null && socket.readyState == 1) {
  589.                             socket.send(sendData);
  590.                             $.jGrowl("", {
  591.                                 position: 'bottom-center',
  592.                                 header: '{{__('thermalPrinterLang.printCommandSentMessage')}}',
  593.                                 theme: 'bg-success',
  594.                                 life: '3000'
  595.                             });
  596.                         } else {
  597.                             initializeSocket();
  598.                             setTimeout(function() {
  599.                                 socket.send(sendData);
  600.                                 $.jGrowl("", {
  601.                                     position: 'bottom-center',
  602.                                     header: '{{__('storeDashboard.printCommandSentMessage')}}',
  603.                                     theme: 'bg-success',
  604.                                     life: '5000'
  605.                                 });
  606.                             }, 700);
  607.                         }
  608.                         acceptOrderTableList(elem);
  609.                     })
  610.                     .fail(function() {
  611.                         console.log("Print Error.")
  612.                         acceptOrderTableList(elem);
  613.                     })
  614.                 @else
  615.                     acceptOrderTableList(elem);
  616.                 @endif
  617.         });
  618.  
  619.         acceptOrderTableList = function(elem) {
  620.             let id = elem.attr("data-id");
  621.             let acceptOrderUrl = "{{ url('/store-owner/orders/accept-order') }}/" +id;
  622.             $.ajax({
  623.                 url: acceptOrderUrl,
  624.                 type: 'GET',
  625.                 dataType: 'JSON',
  626.             })
  627.             .done(function(data) {
  628.                 $.jGrowl("{{__('storeDashboard.orderAcceptedNotification')}}", {
  629.                     position: 'bottom-center',
  630.                     header: '{{__('storeDashboard.successNotification')}}',
  631.                     theme: 'bg-success',
  632.                     life: '5000'
  633.                 });
  634.                 setTimeout(function() {
  635.                     window.location.reload();
  636.                 }, 500);
  637.             })
  638.             .fail(function() {
  639.                 console.log("error")
  640.                 $.jGrowl("{{__('storeDashboard.orderSomethingWentWrongNotification')}}", {
  641.                     position: 'bottom-center',
  642.                     header: '{{__('storeDashboard.woopssNotification')}}',
  643.                     theme: 'bg-warning',
  644.                     life: '5000'
  645.                 });
  646.             })
  647.         }
  648.        
  649.         // $('body').on("click", ".accpetOrderBtnTableList", function(e) {
  650.         //     $(this).parents('.new-order-actions').addClass('popup-order-processing');
  651.         // });
  652.    
  653.         //on Single click donot cancel order table list
  654.         $('body').on("click", ".cancelOrderBtnTableList", function(e) {
  655.             return false;
  656.         });
  657.    
  658.         $('body').on("click", ".cancelOrderBtnTableList", function(e) {
  659.             e.preventDefault()
  660.             if (((new Date().getTime()) - touchtime) < 500) {
  661.                 $(this).parents('.new-order-actions').addClass('popup-order-processing');
  662.                 window.location = this.href;
  663.                 return false;
  664.             }
  665.             touchtime = new Date().getTime();
  666.         });
  667.    
  668.         //on Single click donot cancel order popup
  669.         $('body').on("click", ".cancelOrderBtnPopup", function(e) {
  670.             return false;
  671.         });
  672.        
  673.         $('.actionAfterAccept').click(function(event) {
  674.           $(this).parents('.accepted-order-actions').addClass('popup-order-processing');
  675.         });
  676.        
  677.    
  678.         $('body').on("click", ".cancelOrderBtnPopup", function(e) {
  679.             e.preventDefault()
  680.    
  681.             if (((new Date().getTime()) - touchtime) < 500) {
  682.    
  683.                 let context = $(this).parents('.popup-order');
  684.                 context.addClass('popup-order-processing').prepend('<div class="d-flex pt-2 pr-2 float-right"><i class="icon-spinner10 spinner"></i></div>')
  685.                 console.log("HERE", context);
  686.                
  687.                 let id = $(this).attr("data-id");
  688.                 let cancelOrderURL = "{{ url('/store-owner/orders/cancel-order') }}/" +id;
  689.                 $.ajax({
  690.                     url: cancelOrderURL,
  691.                     type: 'GET',
  692.                     dataType: 'JSON',
  693.                 })
  694.                 .done(function(data) {
  695.                     $(context).remove();
  696.                     //count number of order on popup, if 0 then remove popup
  697.                     if ($('.popup-order').length == 0) {
  698.                         $('#newOrderModal').modal('hide');
  699.                     }
  700.                     $.jGrowl("{{__('storeDashboard.orderCanceledNotification')}}", {
  701.                         position: 'bottom-center',
  702.                         header: '{{__('storeDashboard.successNotification')}}',
  703.                         theme: 'bg-success',
  704.                         life: '5000'
  705.                     });
  706.                 })
  707.                 .fail(function() {
  708.                     console.log("error");
  709.                     $.jGrowl("{{__('storeDashboard.orderSomethingWentWrongNotification')}}", {
  710.                         position: 'bottom-center',
  711.                         header: '{{__('storeDashboard.woopssNotification')}}',
  712.                         theme: 'bg-warning',
  713.                         life: '5000'
  714.                     });
  715.                 })
  716.             }
  717.             touchtime = new Date().getTime();
  718.         });
  719.     });
  720. </script>
  721. @endsection
RAW Paste Data