Advertisement
Guest User

viewOrder.blade.php

a guest
May 12th, 2021
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 26.50 KB | None | 0 0
  1. @extends('admin.layouts.master')
  2. @section("title") {{__('storeDashboard.ovTitle')}}
  3. @endsection
  4. @section('content')
  5. <style>
  6.     .content-wrapper {
  7.         overflow: hidden;
  8.     }
  9.     .bill-calc-table tr td {
  10.         padding: 6px 80px;
  11.     }
  12.     @media (min-width: 320px) and (max-width: 767px) {
  13.         .bill-calc-table tr td {
  14.             padding: 6px 50px;
  15.         }
  16.     }
  17.     .td-title {
  18.         padding-left: 15px !important;
  19.     }
  20.     .td-data {
  21.         padding-right: 15px !important;
  22.     }
  23. </style>
  24. <div class="content">
  25.     <div class="row">
  26.         <div class="col-lg-8 mt-4">
  27.             @if(\Nwidart\Modules\Facades\Module::find('ThermalPrinter') && \Nwidart\Modules\Facades\Module::find('ThermalPrinter')->isEnabled())
  28.  
  29.             <button type="button" class="btn btn-sm btn-secondary my-2 ml-2 thermalPrintButton" disabled="disabled" title="{{__('thermalPrinterLang.connectingToPrinterMessage')}}" style="color: #fff; float: right; border-radius: 8px" data-type="kot"><i class="icon-printer4 mr-1 thermalPrinterIcon"></i> {{__('thermalPrinterLang.printKotWithThermalPrinter')}}</button>
  30.  
  31.             <button type="button" class="btn btn-sm btn-secondary my-2 ml-2 thermalPrintButton" disabled="disabled" title="{{__('thermalPrinterLang.connectingToPrinterMessage')}}" style="color: #fff; float: right; border-radius: 8px" data-type="invoice"><i class="icon-printer4 mr-1 thermalPrinterIcon"></i> {{__('thermalPrinterLang.printInvoiceWithThermalPrinter')}}</button>
  32.  
  33.             <input type="hidden" id="thermalPrinterCsrf" value="{{ csrf_token() }}">
  34.             <script>
  35.                 var socket = null;
  36.                 var socket_host = 'ws://127.0.0.1:6441';
  37.  
  38.                 initializeSocket = function() {
  39.                     try {
  40.                         if (socket == null) {
  41.                             socket = new WebSocket(socket_host);
  42.                             socket.onopen = function() {};
  43.                             socket.onmessage = function(msg) {
  44.                                 let message = msg.data;
  45.                                 $.jGrowl("", {
  46.                                     position: 'bottom-center',
  47.                                     header: message,
  48.                                     theme: 'bg-danger',
  49.                                     life: '5000'
  50.                                 });
  51.                             };
  52.                             socket.onclose = function() {
  53.                                 socket = null;
  54.                             };
  55.                         }
  56.                     } catch (e) {
  57.                         console.log("ERROR", e);
  58.                     }
  59.  
  60.                     var checkSocketConnecton = setInterval(function() {
  61.                         if (socket == null || socket.readyState != 1) {
  62.                             $('.thermalPrintButton').attr({
  63.                                 disabled: 'disabled',
  64.                                 title: '{{__('thermalPrinterLang.connectingToPrinterFailedMessage')}}'
  65.                             });
  66.                         }
  67.                         if (socket != null && socket.readyState == 1) {
  68.                              $('.thermalPrintButton').removeAttr('disabled').removeAttr('title');
  69.                         }
  70.                         clearInterval(checkSocketConnecton);
  71.                     }, 500)
  72.                 };
  73.  
  74.                 initializeSocket();
  75.  
  76.                 $('.thermalPrintButton').click(function(event) {
  77.                     $('.thermalPrinterIcon').removeClass('icon-printer').addClass('icon-spinner10 spinner');
  78.                     let printButton = $('.thermalPrintButton');
  79.                     printButton.attr('disabled', 'disabled');
  80.                     let printType = $(this).data("type");
  81.  
  82.                     let order_id = '{{ $order->id }}';
  83.                     let token = $('#thermalPrinterCsrf').val();
  84.  
  85.                     $.ajax({
  86.                         url: '{{ route('thermalprinter.getOrderData') }}',
  87.                         type: 'POST',
  88.                         dataType: 'JSON',
  89.                         data: {order_id: order_id, _token: token, print_type: printType },
  90.                     })
  91.                     .done(function(response) {
  92.                         let content = {};
  93.                         content.type = 'print-receipt';
  94.                         content.data = response;
  95.                         let sendData = JSON.stringify(content);
  96.                         if (socket != null && socket.readyState == 1) {
  97.                                 socket.send(sendData);
  98.                                 $.jGrowl("", {
  99.                                     position: 'bottom-center',
  100.                                     header: '{{__('thermalPrinterLang.printCommandSentMessage')}}',
  101.                                     theme: 'bg-success',
  102.                                     life: '3000'
  103.                                 });
  104.                                 setTimeout(function() {
  105.                                     $('.thermalPrinterIcon').removeClass('icon-spinner10 spinner').addClass('icon-printer');
  106.                                     printButton.removeAttr('disabled');
  107.                                 }, 1000);
  108.                             } else {
  109.                                 initializeSocket();
  110.                                 setTimeout(function() {
  111.                                     socket.send(sendData);
  112.                                     $.jGrowl("", {
  113.                                         position: 'bottom-center',
  114.                                         header: '{{__('storeDashboard.printCommandSentMessage')}}',
  115.                                         theme: 'bg-success',
  116.                                         life: '5000'
  117.                                     });
  118.                                 }, 700);
  119.                             }
  120.                     })
  121.                     .fail(function() {
  122.                         alert("ERROR")
  123.                     })
  124.                 });
  125.             </script>
  126.             @endif
  127.  
  128.             <a href="javascript:void(0)" id="printButton" class="btn btn-sm btn-primary mt-2" style="color: #fff; border: 1px solid #ccc; float: right; border-radius: 8px"><i class="icon-printer mr-1"></i>{{__('storeDashboard.ovPrint')}}</a>
  129.                 <div class="clearfix"></div>
  130.             <div class="sidebar-category mt-1" style="box-shadow: 0 1px 6px 1px rgba(0, 0, 0, 0.05);background-color: #fff;">
  131.  
  132.                 <div class="category-content" id="printThis">
  133.                     <div href="#" class="btn btn-block content-group" style="text-align: left; background-color: #8360c3; color: #fff; border-radius: 8px 8px 0 0;"><strong style="font-size: 1.2rem;">{{ $order->unique_order_id }}</strong>
  134.                     </div>
  135.                     <div class="p-3">                        
  136.  
  137.                         <div class="d-flex justify-content-between">
  138.                             <div class="form-group mb-0">
  139.                                 <h3><strong>{{ $order->restaurant->name }}</strong></h3>
  140.                             </div>
  141.                             <div class="form-group mb-0">
  142.                                 <label class="control-label no-margin text-semibold mr-1"><strong>{{__('storeDashboard.ovOrderPlaced')}}:</strong></label>
  143.                                 {{ $order->created_at->format('Y-m-d  - h:i A')}}
  144.                             </div>
  145.                         </div>
  146.  
  147.                         <hr>
  148.  
  149.                         <div>
  150.                             <div class="row">
  151.                                 <div class="col-md-6 col-sm-12">
  152.                                     <div class="form-group">
  153.                                         <label class="control-label no-margin text-semibold mr-1"><strong><h5 class="font-weight-bold">{{__('storeDashboard.ovCustomerDetails')}}</h5></strong></label>
  154.                                         <br>
  155.                                         <p><b>{{__('storeDashboard.ovName')}}: </b> {{ $order->user->name }}</p>
  156.                                         <p><b>{{__('storeDashboard.ovEmail')}}: </b> {{ $order->user->email }}</p>
  157.                                         <p><b>{{__('storeDashboard.ovContactNumber')}}: </b> {{ $order->user->phone }}</p>
  158.                                         @if($order->delivery_type == 1)
  159.                                         <p><b>{{__('storeDashboard.ovAddress')}}: </b> {{ $order->address }}</p>
  160.                                         @endif
  161.                                         @if($order->user->tax_number != NULL)
  162.                                         <p><b>{{__('storeDashboard.ovTaxNumber')}}: </b> {{ strtoupper($order->user->tax_number) }}</p>
  163.                                         @endif
  164.                                         @if($order->order_comment != NULL)
  165.                                             <p><b>{{__('storeDashboard.ovCommentSuggestion')}}: </b> {{ $order->order_comment }}</p>
  166.                                         @endif
  167.                                        
  168.                                     </div>
  169.                                 </div>
  170.  
  171.                                 <div class="col-md-6 col-sm-12">
  172.                                     <div class="form-group mb-1">
  173.                                         <div class="d-flex justify-content-center align-items-center flex-column mb-1" style="border: 1px solid #ddd;">
  174.                                             <div class="py-1" style="font-weight: 900;">{{__('storeDashboard.ovStatusText')}}</div>
  175.                                             <hr style="width: 100%;" class="m-0">
  176.                                             <div class="py-1 text-success @if ($order->orderstatus_id == 6) text-danger @endif" style="font-weight: 500;">
  177.                                                 @if ($order->orderstatus_id == 1) {{__('storeDashboard.opOrderStatus1')}} @endif
  178.                                                 @if ($order->orderstatus_id == 2) {{__('storeDashboard.opOrderStatus2')}} @endif
  179.                                                 @if ($order->orderstatus_id == 3) {{__('storeDashboard.opOrderStatus3')}} @endif
  180.                                                 @if ($order->orderstatus_id == 4) {{__('storeDashboard.opOrderStatus4')}} @endif
  181.                                                 @if ($order->orderstatus_id == 5) {{__('storeDashboard.opOrderStatus5')}} @endif
  182.                                                 @if ($order->orderstatus_id == 6) {{__('storeDashboard.opOrderStatus6')}} @endif
  183.                                                 @if ($order->orderstatus_id == 7) {{__('storeDashboard.opOrderStatus7')}} @endif
  184.                                             </div>
  185.                                         </div>
  186.                                     </div>
  187.                                     @if($order->accept_delivery !== null)
  188.                                     <div class="form-group mb-1 mt-2">
  189.                                         <div class="d-flex justify-content-center align-items-center flex-column mb-1" style="border: 1px solid #ddd;">
  190.                                             <div class="py-1" style="font-weight: 900;">{{__('storeDashboard.opDeliveryBy')}}</div>
  191.                                             <hr style="width: 100%;" class="m-0">
  192.                                             <div class="py-1 text-warning @if ($order->orderstatus_id == 6) text-danger @endif" style="font-weight: 500;">
  193.                                                 @if($order->orderstatus_id > 2 && $order->orderstatus_id  < 6){{ $order->accept_delivery->user->name }}</b>
  194.                                                
  195.                                                 @endif
  196.                                             </div>
  197.                                         </div>
  198.                                     </div>
  199.                                     @endif
  200.  
  201.                                     <div class="form-group mb-1 mt-2">
  202.                                     <div class="d-flex">
  203.                                         <div class="col p-0 mr-2">
  204.                                         <div class="d-flex justify-content-center align-items-center flex-column mb-1" style="border: 1px solid #ddd;">
  205.                                             <div class="py-1" style="font-weight: 900;">{{__('storeDashboard.ovOrderType')}}</div>
  206.                                             <hr style="width: 100%;" class="m-0">
  207.                                             <div class="py-1 text-warning" style="font-weight: 500;">
  208.                                                 @if($order->delivery_type == 1)
  209.                                                     {{__('storeDashboard.ovOrderTypeDelivery')}}
  210.                                                 @else
  211.                                                     {{__('storeDashboard.ovOrderTypeSelfPickup')}}
  212.                                                 @endif
  213.                                             </div>
  214.                                         </div>
  215.                                         </div>
  216.                                         <div class="col p-0">
  217.                                         <div class="d-flex justify-content-center align-items-center flex-column mb-1" style="border: 1px solid #ddd;">
  218.                                             <div class="py-1" style="font-weight: 900;">{{__('storeDashboard.ovPaymentMode')}}</div>
  219.                                             <hr style="width: 100%;" class="m-0">
  220.                                             <div class="py-1 text-warning" style="font-weight: 500;">
  221.                                                 {{ $order->payment_mode }}
  222.                                             </div>
  223.                                         </div>
  224.                                         </div>
  225.                                     </div>
  226.                                 </div>
  227.                             </div>
  228.                             </div>
  229.                         </div>
  230.  
  231.                         @php
  232.                         $subTotal = 0;
  233.                         function calculateAddonTotal($addons) {
  234.                             $total = 0;
  235.                             foreach ($addons as $addon) {
  236.                                 $total += $addon->addon_price;
  237.                             }
  238.                             return $total;
  239.                         }
  240.                         @endphp
  241.                         <div class="text-right">
  242.                             <div class="form-group">
  243.                                 <div class="clearfix"></div>
  244.                                 <div class="row">
  245.                                 <div class="col-md-12 p-2 mb-3" style="background-color: #f7f8fb; float: right; text-align: left;">
  246.                                     @foreach($order->orderitems as $item)
  247.                                     <div>
  248.                                     <div class="d-flex mb-1 align-items-start" style="font-size: 1.2rem;">
  249.                                         <span class="badge badge-flat border-grey-800 text-default mr-2">x{{ $item->quantity }}</span>
  250.                                         <strong class="mr-2" style="width: 100%;">{{ $item->name }}</strong>
  251.                                         @php
  252.                                         $itemTotal = ($item->price +calculateAddonTotal($item->order_item_addons)) * $item->quantity;
  253.                                          $subTotal = $subTotal + $itemTotal;
  254.                                         @endphp
  255.                                         <span class="badge badge-flat border-grey-800 text-default">{{ config('appSettings.currencyFormat') }}{{ $itemTotal }}</span>
  256.                                     </div>
  257.                                     @if(count($item->order_item_addons))
  258.                                     <div class="table-responsive">
  259.                                         <table class="table table-striped">
  260.                                             <thead>
  261.                                                 <tr>
  262.                                                     <th>{{__('storeDashboard.ovTableCategory')}}</th>
  263.                                                     <th>{{__('storeDashboard.ovTableAddon')}}</th>
  264.                                                     <th>{{__('storeDashboard.ovTablePrice')}}</th>
  265.                                                 </tr>
  266.                                             </thead>
  267.                                             <tbody>
  268.                                                 @foreach($item->order_item_addons as $addon)
  269.                                                 <tr>
  270.                                                     <td>{{ $addon->addon_category_name }}</td>
  271.                                                     <td>{{ $addon->addon_name }}</td>
  272.                                                     <td>{{ config('appSettings.currencyFormat') }}{{ $addon->addon_price }}</td>
  273.                                                 </tr>
  274.                                                 @endforeach
  275.                                             </tbody>
  276.                                         </table>
  277.                                         </div>
  278.                                         @endif
  279.                                         @if(!$loop->last)
  280.                                             <div class="mb-2" style="border-bottom: 2px solid #c9c9c9;"></div>
  281.                                         @endif
  282.                                         </div>
  283.                                     @endforeach
  284.                                 </div>
  285.                                 </div>
  286.                             </div>
  287.                         </div>
  288.  
  289.                         <div class="clearfix"></div>
  290.                         <div class="float-right">
  291.                             <table class="table table-bordered table-striped bill-calc-table">
  292.  
  293.                                     <tr>
  294.                                         <td class="text-left td-title">{{__('storeDashboard.ovSubTotal')}}</td>
  295.                                         <td class="text-right td-data"> {{ config('appSettings.currencyFormat') }}{{ $subTotal }}</td>
  296.                                     </tr>
  297.  
  298.                                     @if($order->coupon_name != NULL)
  299.                                         <tr>
  300.                                             <td class="text-left td-title">{{__('storeDashboard.ovCoupon')}}</td>
  301.                                             <td class="text-right td-data"> {{ $order->coupon_name }} @if($order->coupon_amount != NULL) ({{ config('appSettings.currencyFormat') }}{{ $order->coupon_amount }}) @endif</td>
  302.                                         </tr>
  303.                                     @endif
  304.  
  305.                                     @if($order->restaurant_charge != NULL)
  306.                                     <tr>
  307.                                         <td class="text-left td-title">{{__('storeDashboard.ovStoreCharge')}}</td>
  308.                                         <td class="text-right td-data"> {{ config('appSettings.currencyFormat') }}{{ $order->restaurant_charge }} </td>
  309.                                     </tr>
  310.                                     @endif
  311.  
  312.                                     <tr>
  313.                                         <td class="text-left td-title">{{__('storeDashboard.ovDeliveryCharge')}}</td>
  314.                                         <td class="text-right td-data"> {{ config('appSettings.currencyFormat') }}{{ $order->delivery_charge }} </td>
  315.                                     </tr>
  316.  
  317.                                     @if($order->tax != NULL)
  318.                                         <tr>
  319.                                             <td class="text-left td-title">{{__('storeDashboard.ovTax')}}</td>
  320.                                             <td class="text-right td-data">{{ $order->tax }}% @if($order->tax_amount != NULL) ({{ config('appSettings.currencyFormat') }}{{ $order->tax_amount }}) @endif</td>
  321.                                         </tr>
  322.                                     @endif
  323.  
  324.                                     @if($order->wallet_amount != NULL)
  325.                                         <tr>
  326.                                             <td class="text-left td-title">{{__('storeDashboard.ovPaidWithWallet')}} {{ config('appSettings.walletName') }}</td>
  327.                                             <td class="text-right td-data"> {{ config('appSettings.currencyFormat') }}{{ $order->wallet_amount }} </td>
  328.                                         </tr>
  329.                                     @endif
  330.  
  331.  
  332.                                     @php
  333.                                        if(!is_null($order->tip_amount)) {
  334.                                            $total = $order->total - $order->tip_amount;
  335.                                        } else {
  336.                                            $total = $order->total;
  337.                                        }
  338.                                    @endphp
  339.                                     <tr>
  340.                                         <td class="text-left td-title"><b>{{ __('storeDashboard.ovTotal') }}</b></td>
  341.                                         <td class="text-right td-data"> {{ config('appSettings.currencyFormat') }}{{ $total }} </td>
  342.                                     </tr>
  343.  
  344.                                      @php
  345.                                         if(!is_null($order->tip_amount)) {
  346.                                             $payable = $order->payable - $order->tip_amount;
  347.                                         } else {
  348.                                             $payable = $order->payable;
  349.                                         }
  350.                                     @endphp
  351.                                     @if($order->payable != NULL)
  352.                                         <tr>
  353.                                             <td class="text-left td-title">{{ __('storeDashboard.ovPayable') }}</td>
  354.                                             <td class="text-right td-data"><b> {{ config('appSettings.currencyFormat') }}{{ $payable }}</b></td>
  355.                                         </tr>
  356.                                     @endif
  357.                             </table>
  358.                         </div>
  359.  
  360.                         <div class="clearfix"></div>
  361.                     </div>
  362.                 </div>
  363.             </div>
  364.            
  365.         </div>
  366.         <div class="col-md-4 mb-5">
  367.             <div style="margin-top: 5.2rem"></div>
  368.             @if($order->rating)
  369.             <div class="card">
  370.                 <div class="card-body">
  371.                     <p class="text-center mb-3"><b>{{ __('storeDashboard.ratingsAndReviewsText') }}</b></p>
  372.                     <div>
  373.                         <p> <b>Delivery Rating </b> <span class="ml-1 badge badge-flat text-white {{ ratingColorClass($order->rating->rating_delivery) }}">{{ $order->rating->rating_delivery }} <i class="icon-star-full2 text-white" style="font-size: 0.6rem;"></i></span></p>
  374.                        
  375.                         <p>{{ $order->rating->review_delivery }}</p>
  376.                         <hr>
  377.                         <p> <b>Store Rating </b>  <span class="ml-1 badge badge-flat text-white {{ ratingColorClass($order->rating->rating_store) }}">{{ $order->rating->rating_store }} <i class="icon-star-full2 text-white" style="font-size: 0.6rem;"></i></span> </p>
  378.                        
  379.                         <p>{{ $order->rating->review_store }}</p>
  380.                     </div>
  381.                 </div>
  382.             </div>
  383.             @endif
  384.             @if(($order->orderstatus_id == 1) || ($order->delivery_type == 2 && $order->orderstatus_id == 2) || ($order->delivery_type == 2 && $order->orderstatus_id == 7))
  385.             <div class="card">
  386.                 <div class="card-body">
  387.                     <h4 class="text-center mb-3"> <strong> {{ __('storeDashboard.viewOrderOrderActions') }} </strong> </h4>
  388.                     <div class="d-flex justify-content-center">
  389.                         @if($order->orderstatus_id == 1)
  390.                         <a href="{{ route('restaurant.acceptOrder', $order->id) }}"
  391.                             class="mr-2 btn btn-lg acceptOrderBtn btn-primary"> {{__('storeDashboard.ovAccept')}} <i
  392.                             class="icon-checkmark3 ml-1"></i></a>
  393.                         <a href="{{ route('restaurant.cancelOrder', $order->id) }}"
  394.                             class="btn btn-lg cancelOrderBtn btn-danger" data-popup="tooltip" data-placement="top" title="{{__('storeDashboard.ovTooltipCancel')}}"> {{__('storeDashboard.ovCancel')}} <i
  395.                             class="icon-cross ml-1"></i></a>
  396.                         @endif
  397.                         @if($order->delivery_type == 2 && $order->orderstatus_id == 2)
  398.                         <a href="{{ route('restaurant.markOrderReady', $order->id) }}"
  399.                             class="btn btn-lg btn-warning"> {{__('storeDashboard.ovMarkAsReady')}} <i
  400.                             class="icon-checkmark3 ml-1"></i></a>
  401.                         @endif
  402.                         @if($order->delivery_type == 2 && $order->orderstatus_id == 7)
  403.                         <a href="{{ route('restaurant.markSelfPickupOrderAsCompleted', $order->id) }}"
  404.                             class="btn btn-lg btn-success"> {{__('storeDashboard.ovMarkAsCompleted')}} <i
  405.                             class="icon-checkmark3 ml-1"></i></a>
  406.                         @endif
  407.                     </div>
  408.                 </div>
  409.             </div>
  410.             @endif
  411.         </div>
  412.     </div>
  413. </div>
  414. <script>
  415.     $('#printButton').on('click',function(){
  416.         $('#printThis').printThis();
  417.     })
  418.     //on single click, accpet order and disable button
  419.     $('body').on("click", ".acceptOrderBtn", function(e) {
  420.         $(this).addClass('pointer-none');
  421.     });
  422.    
  423.     //on Single click donot cancel order
  424.     $('body').on("click", ".cancelOrderBtn", function(e) {
  425.         return false;
  426.     });
  427.    
  428.     //cancel order on double click
  429.     $('body').on("dblclick", ".cancelOrderBtn", function(e) {
  430.         $(this).addClass('pointer-none');
  431.         window.location = this.href;
  432.         return false;
  433.      });
  434.    
  435.     if (window.location !== window.parent.location )
  436.     {
  437.         //hide menu, nav, header and apply custom css colors when on iFrame from dashboard v2
  438.         $('.navbar-dark').hide();
  439.         $('.navbar-sticky').hide();
  440.         $("body").overlayScrollbars({
  441.             scrollbars : {
  442.                 visibility       : "auto",
  443.                 autoHide         : "leave",
  444.                 autoHideDelay    : 500
  445.             }
  446.         });
  447.     }
  448. </script>
  449. @endsection
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement