orders.blade.php_3 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. @extends('layouts.app')
  2. @section('css')
  3. <link href="{!! env('APP_ASSETS') !!}css/liveorder.css" rel="stylesheet" type="text/css">
  4. @endsection
  5. @section('content')
  6. <style>
  7. body {
  8. background-color: #FFF;
  9. }
  10. #show-recipes .box-header{
  11. padding: 15px 1.5rem 5px;
  12. }
  13. @-webkit-keyframes special {
  14. from { background-color: rgba(255, 121, 77, 0.27); }
  15. to { background-color: inherit; }
  16. }
  17. @-moz-keyframes special {
  18. from { background-color: rgba(255, 121, 77, 0.27);; }
  19. to { background-color: inherit; }
  20. }
  21. @-o-keyframes special {
  22. from { background-color: rgba(255, 121, 77, 0.27);; }
  23. to { background-color: inherit; }
  24. }
  25. @keyframes special {
  26. from { background-color: rgba(255, 121, 77, 0.27);; }
  27. to { background-color: inherit; }
  28. }
  29. .special {
  30. -webkit-animation: special 1s infinite; /* Safari 4+ */
  31. -moz-animation: special 1s infinite; /* Fx 5+ */
  32. -o-animation: special 1s infinite; /* Opera 12+ */
  33. animation: special 1s infinite; /* IE 10+ */
  34. }
  35. .mlist_li.selected .media, .mlist_li.selected .box{
  36. /*background-color: transparent !important;*/
  37. }
  38. .mlist_li.selected p{
  39. color:#fff !important;
  40. }
  41. .labelcenter { width: auto}
  42. .gap-items p.status{ font-size: 12px}
  43. .gap-items p.min{
  44. line-height: 13px;
  45. padding-top: 11px;
  46. font-size: 11px;
  47. }
  48. .bg-danger p.min, .bg-danger .gap-items p.status{
  49. display: none;}
  50. .bg-danger .circle-div{ height: 10px; width: 10px; background: #fff !important; margin-right: 15px;}
  51. .mlist_li.selected .media-list-hover > .media:not(.media-list-header):not(.media-list-footer):hover,.mlist_li.selected .media-list-hover .media-list-body > .media:hover{
  52. background-color: transparent; !important;
  53. }
  54. .sidebar-mini.sidebar-collapse .content-wrapper {
  55. width: calc(100% - 60px) !important;
  56. margin-left: 60px !important;
  57. }
  58. .no-order-found{
  59. background-color: #000;
  60. background-image: url({!! env('APP_ASSETS') !!}images/no-order.png);
  61. background-repeat: no-repeat;
  62. background-position: center;
  63. ;
  64. }
  65. @media screen and (min-device-width: 1200px) and (max-device-width: 1600px) and (-webkit-min-device-pixel-ratio: 1){
  66. body {
  67. padding: 0px !important;
  68. }
  69. }
  70. </style>
  71. <!-- Content Wrapper. Contains page content -->
  72. <div class="content-wrapper">
  73. <div id="countdown"></div>
  74. <div class="container-full">
  75. <section class="content p-0">
  76. <div class="row">
  77. <div class="col-sm-12">
  78. <nav class="navbar navbar-static-top ">
  79. <!-- Sidebar toggle button-->
  80. <div class="row">
  81. <div class="col-md-12 tab-bar-section">
  82. <div class="app">
  83. <ul class="hs full nav nav-tabs" role="tablist">
  84. <li class="item nav-item d-flex align-items-start">
  85. <div class="gap-items-4 d-flex justify-content-end">
  86. <a class="nav-link p-0 active" data-bs-toggle="tab" href="#all-orders" data-status="all" role="tab">All
  87. <span class="labelcenter label-default all">0</span></a>
  88. </div>
  89. </li>
  90. <li class="item nav-item d-flex align-items-start ">
  91. <div class="gap-items-4 d-flex justify-content-end">
  92. <a class="nav-link p-0" data-bs-toggle="tab" href="#new-orders" data-status="new" role="tab">New
  93. <span class="labelcenter label-default new">0</span></a>
  94. </div>
  95. </li>
  96. <li class="item nav-item d-flex align-items-start">
  97. <div class="gap-items-4 d-flex justify-content-end">
  98. <a class="nav-link p-0" data-bs-toggle="tab" href="#in-kitchen" data-status="kitchen" role="tab">In Prep
  99. <span class="labelcenter label-default kitchen">0</span></a>
  100. </div>
  101. </li>
  102. <li class="item nav-item d-flex align-items-start">
  103. <div class="gap-items-4 d-flex justify-content-end">
  104. <a class="nav-link p-0" data-bs-toggle="tab" href="#in-route" data-status="route" role="tab" >In Route/Ready
  105. <span class="labelcenter label-default route">0</span></a>
  106. </div>
  107. </li>
  108. </ul>
  109. </div>
  110. </div>
  111. </div>
  112. <!-- <div class="app-menu"></div> -->
  113. <a href="#" class="d-inline-block btn right-bar-btn waves-effect waves-circle btn btn-circle btn-danger btn-sm right-close-btn">
  114. <i class="mdi mdi-close"></i>
  115. </a>
  116. </nav>
  117. </div>
  118. </div>
  119. <div class="row">
  120. <div class="col-sm-12 col-md-4 order-sections-list" style="background-color: #f1f1f1">
  121. <div class="row p-10">
  122. <div class="col-md-12 mt-5">
  123. <div class="search-bx mx-5">
  124. <form>
  125. <div class="input-group search-div">
  126. <input type="search" class="form-control" style="background-color: transparent" placeholder="Search by order id" aria-label="Search" aria-describedby="button-addon2">
  127. <div class="input-group-append">
  128. <button class="btn btn-sarch" type="submit" id="button-addon3"><i class="ti-search"></i></button>
  129. </div>
  130. </div>
  131. </form>
  132. </div>
  133. </div>
  134. </div>
  135. <div class="row mt-5 list_row">
  136. <div class=" col-md-12 p-0">
  137. <div class="tab-content">
  138. <div class="tab-pane fade in active all-orders" id="all-orders" role="tabpanel" style="max-height: 82vh; min-height: 82vh; overflow: auto;">
  139. <div class="p-0">
  140. <ul class="list-group list-ul list-unstyled orders-list" id="orders-list">
  141. {{--<li class="mlist_li p-5 mb-5 pl-15">
  142. <div class="d-grid gap-2 d-flex justify-content-center">
  143. <button class="btn btn-md btn-primary ref-btn">Refresh</button>
  144. </div>
  145. </li>--}}
  146. </ul>
  147. </div>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. <div class="col-sm-12 col-md-6 box-shadowed">
  154. <div class="no-order" style="padding-top: 50%; height: 90vh ;">
  155. <h3 class="text-center text-light">No order selected</h3>
  156. </div>
  157. <div class="order-section" style="display: none; height: 90vh ; overflow-x: auto">
  158. <div class="row back-to-orders d-md-none d-lg-none">
  159. <div class="col-sm-12 text-center">
  160. <svg style=" filter: drop-shadow(1px 0px 0px black);" xmlns="http://www.w3.org/2000/svg" width="13.917" height="9.785" viewBox="0 0 13.917 9.785">
  161. <path id="Shape_878" data-name="Shape 878" d="M301.31,1645.861h-7.36v2.854l-6.557-4.9,6.548-4.889v2.853h7.369Zm-8.177,1.227v-2.051h7.354v-2.443h-7.364v-2.036l-4.368,3.261Z" transform="translate(-287.393 -1638.93)"/>
  162. </svg>
  163. Live Orders
  164. @php
  165. $restuarant1 = \Illuminate\Support\Facades\Auth::user()->restaurants;
  166. $resto_meta = isset($restuarant1->resto_metas)?$restuarant1->resto_metas:null;
  167. $resto_metas = [];
  168. $billing = [];
  169. if(isset($resto_meta)){
  170. foreach($resto_meta as $meta){
  171. // dump($meta->resto_meta_defs);
  172. if($meta->resto_meta_defs->meta_def_name=="BILLING_GATEWAY"){
  173. // dump($meta->resto_meta_defs->meta_def_name);
  174. // $resto_metas['BILLING_GATEWAY'][] = $meta->meta_val;
  175. $billing[] = array('id'=>$meta->meta_id,'value'=>$meta->meta_val);
  176. }
  177. $resto_metas[$meta->resto_meta_defs->meta_def_name] = $meta->meta_val;
  178. }
  179. }
  180. $resto_metas['BILLING_GATEWAY'] = $billing;
  181. $currency = isset($resto_metas['BUSSINESS_CCY'])?$resto_metas['BUSSINESS_CCY']:"IQD";
  182. $tax = isset($resto_metas['DISPLAY_TAX_INFO'])?"(".$resto_metas['DISPLAY_TAX_INFO'].")":"";
  183. @endphp
  184. </div>
  185. </div>
  186. <div class="row">
  187. <div class="col-sm-12">
  188. <div class="boxs">
  189. <div class="box-header with-border">
  190. <div class="d-flex justify-content-between align-items-center">
  191. <p class="fw-bold" rel="order_ref"></p>
  192. <p rel="order_placed"></p>
  193. <p class="p-2 inkitchen-btn" id="toggle"></p>
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. <div class="row">
  199. <div class="col-sm-12 mt-1 text-end">
  200. <a href="#!">Print</a>
  201. </div>
  202. </div>
  203. <div class="row right-panel-box">
  204. <div class="col-md-6">
  205. <div class="boxs">
  206. <div class="box-body">
  207. <div class="d-flex align-items-start">
  208. <div>
  209. <p class="text-fade mb-0">Brand</p>
  210. <p rel="brand_name"></p>
  211. </div>
  212. </div>
  213. </div>
  214. </div>
  215. </div>
  216. <div class="col-md-6">
  217. <div class="boxs">
  218. <div class="box-body">
  219. <div class="d-flex align-items-start">
  220. <div>
  221. <p class="text-fade mb-0">Outlet</p>
  222. <p rel="outlet_name"></p>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. </div>
  228. </div>
  229. <div class="row right-panel-box">
  230. <div class="col-md-6">
  231. <div class="boxs">
  232. <div class="box-body">
  233. <div class="d-flex align-items-start">
  234. <div>
  235. <p class="text-fade mb-0">Order type</p>
  236. <p>
  237. <i class="icon-Dinner"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span><span class="path5"></span></i>
  238. <span rel="order_type"></span>
  239. </p>
  240. </div>
  241. </div>
  242. </div>
  243. </div>
  244. </div>
  245. <div class="col-md-6">
  246. <div class="boxs">
  247. <div class="box-body">
  248. <div class="d-flex align-items-start">
  249. <div class="">
  250. <p class="text-fade mb-0">Delivery at</p>
  251. <p rel="delivery_at"></p>
  252. </div>
  253. </div>
  254. </div>
  255. </div>
  256. </div>
  257. </div>
  258. <div class="row right-panel-box">
  259. <div class="col-md-6">
  260. <div class="boxs">
  261. <div class="box-body">
  262. <div class="d-flex align-items-start">
  263. <div class="">
  264. <p class="text-fade mb-0">Customer</p>
  265. <p rel="customer"> <br>
  266. <i class="mdi mdi-crown org-color"></i>
  267. <small class="org-color">Ordered 5 times </small>
  268. </p>
  269. </div>
  270. </div>
  271. </div>
  272. </div>
  273. </div>
  274. <div class="col-md-6">
  275. <div class="boxs">
  276. <div class="box-body">
  277. <div class="d-flex align-items-start">
  278. <div class="">
  279. <p class="text-fade mb-0">Phone number</p>
  280. <p rel="phone"></p>
  281. </div>
  282. </div>
  283. </div>
  284. </div>
  285. </div>
  286. </div>
  287. <div class="row right-panel-box">
  288. <div class="col-md-6">
  289. <div class="boxs">
  290. <div class="box-body">
  291. <div class="d-flex align-items-start">
  292. <div class="">
  293. <p class="text-fade mb-0">Payment</p>
  294. <p rel="payment"></p>
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. <div class="col-md-6">
  301. <div class="boxs">
  302. <div class="box-body">
  303. <div class="d-flex align-items-start">
  304. <div class="">
  305. <p class="text-fade mb-0">Channel</p>
  306. <p rel="channel"></p>
  307. </div>
  308. </div>
  309. </div>
  310. </div>
  311. </div>
  312. </div>
  313. <div class="row right-panel-box">
  314. <div class="col-md-6">
  315. <div class="boxs">
  316. <div class="box-body">
  317. <div class="d-flex align-items-start">
  318. <div class="">
  319. <p class="text-fade mb-0">Address</p>
  320. <p rel="address"></p>
  321. </div>
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. <div class="col-md-6">
  327. <div class="boxs">
  328. <div class="box-body">
  329. <div class="d-flex align-items-start">
  330. <div class="">
  331. <p class="text-fade mb-0">Order Notes</p>
  332. <p rel="delivery_notes"></p>
  333. </div>
  334. </div>
  335. </div>
  336. </div>
  337. </div>
  338. </div>
  339. </div>
  340. <div class="row mt-0 right-panel-footer ">
  341. <div class="col-12" id="show-recipes">
  342. </div>
  343. <div class="col-12">
  344. <div class="box-header border-0 p-15 mt-0 pb-0">
  345. <div class="d-flex justify-content-between align-items-center m-0">
  346. <p>Subtotal:</p>
  347. <p class="sub_total"></p>
  348. </div>
  349. <div class="d-flex justify-content-between align-items-center m-0">
  350. <p>Delivery Fee:</p>
  351. <p class="delivery_fee"></p>
  352. </div>
  353. <div class="d-flex justify-content-between align-items-center m-0">
  354. <p class="p-15 m-5 ">Total: @if(!empty($tax)) <small><em>{{ $tax }}</em></small> @endif </p>
  355. <p class="total_txt"></p>
  356. </div>
  357. </div>
  358. </div>
  359. <div class="col-12 mt-5 button-bottom-div">
  360. <div class="m-5">
  361. <button type="button" class="waves-effect waves-light btn btn-outline btn-danger mb-0 btn-w80 rounded-0 rclose-btn reject change-status-reject" data-status="Rejected" style="display: none">Reject</button>
  362. <button type="button" class="waves-effect waves-light btn btn-outline btn-dark mb-0 btn-w50 rounded-0 rclose-btn accept change-status-reject" data-status="Close" style="display: none">Close</button>
  363. <button type="button" class="waves-effect waves-light btn btn-outline btn-danger mb-0 btn-w50 rounded-0 accept change-status-reject" data-status="Rejected" style="display: none">Cancel</button>
  364. <button type="button" class="waves-effect waves-light btn btn-default btn-w80 rounded-0 ready-collect change-status " data-status="">Accept</button>
  365. </div>
  366. </div>
  367. </div>
  368. </div>
  369. </div>
  370. </div>
  371. </section>
  372. <!-- /.content -->
  373. </div>
  374. </div>
  375. <!-- /.content-wrapper -->
  376. <div class="modal center-modal fade" id="accept-modal" tabindex="-1">
  377. <div class="modal-dialog">
  378. <div class="modal-content">
  379. <div class="modal-body">
  380. <h4> Order Settings</h4>
  381. <p>Set the time needed for preparing and delivering orders</p>
  382. <div class="row">
  383. <div class="col-sm-6">
  384. <div class="form-group">
  385. <label>Preparation (minutes)</label>
  386. <input type="text" name="preparation_time" class="form-control" value="15" />
  387. </div>
  388. </div>
  389. <div class="col-sm-6">
  390. <div class="form-group">
  391. <label>Preparation + delivery (minutes)</label>
  392. <input type="text" name="preperation_delivery" class="form-control" value="40" />
  393. </div>
  394. </div>
  395. </div>
  396. </div>
  397. <div class="modal-footer modal-footer-uniform">
  398. <button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button>
  399. <button type="button" class="btn btn-primary float-end accept-order">Accept Order</button>
  400. </div>
  401. </div>
  402. </div>
  403. </div>
  404. @endsection
  405. @section('js')
  406. <script src="{!! env('APP_ASSETS') !!}js/jquery.jscroll.min.js"></script>
  407. <script src="{!! env('APP_ASSETS') !!}js/jquery.countdown360.min.js"></script>
  408. <script src="{!! env('APP_ASSETS') !!}vendor_components/sweetalert/sweetalert.min.js"></script>
  409. <script>
  410. var resto_id = 0;
  411. var status = "all";
  412. var counter = 0;
  413. var order_id = null;
  414. $(function () {
  415. $("body").on("click",".back-to-orders",function () {
  416. $(".order-section").hide();
  417. });
  418. $.ajax({
  419. url: "{!! env('APP_URL') !!}order/counts",
  420. success: function (response) {
  421. // response = $.parseJSON(response);
  422. var total_accepted = 0;
  423. var total = 0;
  424. $.each(response,function (i,v) {
  425. if(v.status=="Send_to_Kitchen" || v.status=="Accepted"){
  426. total_accepted+=parseInt(v.status_count);
  427. total+=parseInt(v.status_count);
  428. $(".labelcenter.kitchen").text(total_accepted);
  429. }
  430. if(v.status=="On_Road"){
  431. $(".labelcenter.route").text(v.status_count);
  432. total+=parseInt(v.status_count);
  433. }
  434. if(v.status=="Placed"){
  435. $(".labelcenter.new").text(v.status_count);
  436. total+=parseInt(v.status_count);
  437. if(parseInt(v.status_count) > 0){
  438. $("#order-counter").html(v.status_count);
  439. $("#order-counter").show();
  440. }
  441. }
  442. });
  443. $(".labelcenter.all").text(total);
  444. }
  445. });
  446. $("#all-orders").removeClass('no-order-found');
  447. $.ajax({
  448. url:"{!! env('APP_URL') !!}liveorders/"+status,
  449. success:function (response) {
  450. // response = $.parseJSON(response);
  451. if(response){
  452. if(response.type=="success"){
  453. $.each(response.orders,function (i,v) {
  454. var str='<li class="mlist_li" rel="detail" data-order-id="'+v.id+'">\n' +
  455. ' <div class="box '+v.box_bg+' rounded-0">\n' +
  456. ' <div class="media-list media-list-divided media-list-hover">\n' +
  457. ' <div class="media align-items-center">\n' +
  458. ' <div class="media-body">\n' +
  459. ' <p>#'+v.order_ref+'</p>\n' +
  460. ' <p> '+(v.campaign_type!=""?v.campaign_type:"Direct")+', '+v.created_at+'</p>\n' +
  461. ' </div>\n' +
  462. ' <div class="media-right gap-items">\n' +
  463. ' <div class="user-social-acount text-center">\n' +
  464. ' <p class="m-0 status">'+v.status+'</p>\n' +
  465. ' <div class="d-flex align-items-center float-end">\n' +
  466. ' <div class="circle-div '+v.bg+' text-center" data-min="'+v.remaining_min+'" data-color="'+v.bg_color+'">\n' +
  467. ' <p class="mb-5 min">'+v.remaining_min+'<br />\n'+
  468. ' Min</p>\n'+
  469. ' </div>\n' +
  470. ' </div>\n' +
  471. ' </div>\n' +
  472. ' </div>\n' +
  473. ' </div>\n' +
  474. ' </div>\n' +
  475. ' </div>\n' +
  476. '</li>';
  477. counter = counter+1;
  478. $("#orders-list").append(str);
  479. });
  480. $("span."+status).html(counter);
  481. }else{
  482. $("#all-orders").addClass('no-order-found');
  483. }
  484. }
  485. }
  486. });
  487. $("body").on("click",".nav-link",function () {
  488. $("#orders-list").html('');
  489. $(".no-order").show();
  490. $(".order-section").hide();
  491. status = $(this).data('status');
  492. $("#all-orders").removeClass('no-order-found');
  493. var counter = 0;
  494. $.ajax({
  495. url:"{!! env('APP_URL') !!}liveorders/"+status,
  496. success:function (response) {
  497. // response = $.parseJSON(response);
  498. if(response){
  499. if(response.type=="success"){
  500. $.each(response.orders,function (i,v) {
  501. var str='<li class="mlist_li" rel="detail" data-order-id="'+v.id+'">\n' +
  502. ' <div class="box '+v.box_bg+' rounded-0">\n' +
  503. ' <div class="media-list media-list-divided media-list-hover">\n' +
  504. ' <div class="media align-items-center">\n' +
  505. ' <div class="media-body">\n' +
  506. ' <p>#'+v.order_ref+'</p>\n' +
  507. ' <p> '+(v.campaign_type!=""?v.campaign_type:"Direct")+', '+v.created_at+'</p>\n' +
  508. ' </div>\n' +
  509. ' <div class="media-right gap-items">\n' +
  510. ' <div class="user-social-acount text-center">\n' +
  511. ' <p class="m-0 status">'+v.status+'</p>\n' +
  512. ' <div class="circle-div '+v.bg+' text-center" data-min="'+v.remaining_min+'" data-color="'+v.bg_color+'">\n' +
  513. ' <p class="mb-5 min">'+v.remaining_min+'<br />\n'+
  514. ' Min</p>\n'+
  515. ' </div>\n' +
  516. ' </div>\n' +
  517. ' </div>\n' +
  518. ' </div>\n' +
  519. ' </div>\n' +
  520. ' </div>\n' +
  521. '</li>';
  522. $("#orders-list").append(str);
  523. counter = counter+1;
  524. });
  525. }else{
  526. $("#all-orders").addClass('no-order-found');
  527. }
  528. //$("span."+status).html(counter);
  529. }
  530. }
  531. });
  532. });
  533. $("body").on("click","li[rel=detail]",function () {
  534. var id = $(this).data("order-id");
  535. order_id = id;
  536. $(".mlist_li.selected").removeClass('selected');
  537. $("#show-recipes").html('');
  538. $(this).addClass('selected');
  539. $.ajax({
  540. url:"{!! env('APP_URL') !!}get/order/detail/"+id,
  541. success:function (response) {
  542. response = $.parseJSON(response);
  543. var price = 0;
  544. var delivery_fee = 0;
  545. $(".change-status").attr('data-id',id);
  546. $(".change-status-reject").attr('data-id',id);
  547. $.each(response,function (i,v) {
  548. $("p[rel="+i+"]").text(v);
  549. $("span[rel="+i+"]").text(v);
  550. if(i=="delivery_fee"){
  551. delivery_fee = v;
  552. $(".delivery_fee").html("{!! $currency !!} "+v);
  553. }
  554. if(i=="status"){
  555. $(".inkitchen-btn").html(v);
  556. $(".inkitchen-btn").addClass();
  557. if(v=="New"){
  558. $(".reject").show();
  559. $(".accept").hide();
  560. }else{
  561. $(".accept").show();
  562. $(".reject").hide();
  563. }
  564. }
  565. if(i=="bg"){
  566. $(".inkitchen-btn").removeClass('org-bg');
  567. $(".inkitchen-btn").removeClass('bg-danger');
  568. $(".inkitchen-btn").removeClass('green-bg');
  569. $(".inkitchen-btn").addClass(v);
  570. }
  571. if(i=="next_action"){
  572. if(v=="Accepted")
  573. $(".change-status").html('Accept');
  574. else
  575. $(".change-status").html(v);
  576. }
  577. if(i=="next_status"){
  578. $(".change-status").attr('data-status',v);
  579. }
  580. if(i=="recipes"){
  581. var recipes = v;
  582. if(recipes){
  583. $.each(recipes,function(m,n){
  584. console.log(n);
  585. $("#show-recipes").append(show_recipe(n));
  586. price+=parseFloat(n.total_price);
  587. if(n.extra_options){
  588. $.each(n.extra_options,function(c,d){
  589. price+=(n.quantity*parseFloat(d.price));
  590. });
  591. }
  592. });
  593. $(".sub_total").html('{!! $currency !!} '+price);
  594. }
  595. }
  596. $(".total_txt").html("{!! $currency !!} "+(price+delivery_fee));
  597. });
  598. }
  599. });
  600. $(".no-order").hide();
  601. $(".order-section").show();
  602. });
  603. $('ul.pagination').hide();
  604. $('#all-orders').jscroll({
  605. autoTrigger: true,
  606. loadingHtml: '<img class="text-center" src="{!! env('APP_ASSETS') !!}images/preloaders/preloader.svg" alt="Loading..." />',
  607. padding: 0,
  608. nextSelector: '.pagination li.active + li a',
  609. contentSelector: 'div.mlist_li',
  610. callback: function() {
  611. $('ul.pagination').remove();
  612. }
  613. });
  614. $("body").on("click",".nav-link",function () {
  615. $(".nav-link").removeClass('active')
  616. $(this).addClass('active')
  617. });
  618. $("body").on("click",".order-row",function () {
  619. var id = $(this).data('id');
  620. window.location = "{!! env('APP_URL') !!}order/show/"+id;
  621. });
  622. $("body").on("click",".accept-order",function () {
  623. var preparation_time = $("input[name=preparation_time]").val();
  624. var preperation_delivery = $("input[name=preperation_delivery]").val();
  625. if(preperation_delivery==""){
  626. $("input[name=preperation_delivery]").focus();
  627. return false;
  628. }
  629. if(preparation_time==""){
  630. $("input[name=preparation_time]").focus();
  631. return false;
  632. }
  633. $.ajax({
  634. url:"{!! env('APP_URL') !!}update/order/status",
  635. type:"POST",
  636. data:{
  637. id:order_id,
  638. status:"Accepted",
  639. preparation_time:preparation_time,
  640. preperation_delivery:preperation_delivery,
  641. "_token":"{!! csrf_token() !!}"
  642. },
  643. success:function () {
  644. // alert();
  645. $(".mlist_li.selected").remove();
  646. if(status=="all"){
  647. $("#orders-list").html('');
  648. /*$.ajax({
  649. url:"{!! env('APP_URL') !!}liveorders/"+status,
  650. success:function (response) {
  651. //response = $.parseJSON(response);
  652. if(response){
  653. $.each(response.orders,function (i,v) {
  654. var str='<li class="mlist_li" rel="detail" data-order-id="'+v.id+'">\n' +
  655. ' <div class="box '+v.box_bg+' rounded-0">\n' +
  656. ' <div class="media-list media-list-divided media-list-hover">\n' +
  657. ' <div class="media align-items-center">\n' +
  658. ' <div class="media-body">\n' +
  659. ' <p>#'+v.order_ref+'</p>\n' +
  660. ' <p> '+(v.campaign_type!=""?v.campaign_type:"Direct")+', '+v.created_at+'</p>\n' +
  661. ' </div>\n' +
  662. ' <div class="media-right gap-items">\n' +
  663. ' <div class="user-social-acount text-center">\n' +
  664. ' <p class="m-0 status">'+v.status+'</p>\n' +
  665. ' <div class="d-flex align-items-center float-end">\n' +
  666. ' <div class="circle-div '+v.bg+' text-center" data-min="'+v.remaining_min+'" data-color="'+v.bg_color+'">\n' +
  667. ' <p class="mb-5 min">'+v.remaining_min+'<br />\n'+
  668. ' Min</p>\n'+
  669. ' </div>\n' +
  670. ' </div>\n' +
  671. ' </div>\n' +
  672. ' </div>\n' +
  673. ' </div>\n' +
  674. ' </div>\n' +
  675. ' </div>\n' +
  676. '</li>';
  677. counter = counter+1;
  678. $("#orders-list").append(str);
  679. });
  680. $("span."+status).html(counter);
  681. }
  682. }
  683. });*/
  684. }
  685. $(".no-order").show();
  686. $(".order-section").hide();
  687. /*$.ajax({
  688. url: "{!! env('APP_URL') !!}order/counts",
  689. success: function (response) {
  690. // response = $.parseJSON(response);
  691. var total_accepted = 0;
  692. var total = 0;
  693. $.each(response,function (i,v) {
  694. if(v.status=="Send_to_Kitchen" || v.status=="Accepted"){
  695. total_accepted+=parseInt(v.status_count);
  696. total+=parseInt(v.status_count);
  697. $(".labelcenter.kitchen").text(total_accepted);
  698. }
  699. if(v.status=="On_Road"){
  700. $(".labelcenter.route").text(v.status_count);
  701. total+=parseInt(v.status_count);
  702. }
  703. if(v.status=="Placed"){
  704. $(".labelcenter.new").html(v.status_count);
  705. total+=parseInt(v.status_count);
  706. if(parseInt(v.status_count) > 0){
  707. $("#order-counter").html(v.status_count);
  708. $("#order-counter").show();
  709. }else{
  710. audio.pause();
  711. $("#order-counter").html(0);
  712. $("#order-counter").hide();
  713. }
  714. }
  715. });
  716. $(".labelcenter.all").text(total);
  717. }
  718. });*/
  719. // swal("Accepted!", "Order is Accepted.", "success");
  720. $("#accept-modal").modal('hide');
  721. }
  722. });
  723. });
  724. $("body").on("click",'.change-status,.change-status-reject',function (e) {
  725. // alert();
  726. var s = $(".nav-link.active").data('status');
  727. var status = $(this).attr('data-status');
  728. // alert(status); return;
  729. if(status=="Rejected"){
  730. swal({
  731. title: "Are you sure?",
  732. text: "You will not be able to recover this order!",
  733. type: "warning",
  734. showCancelButton: true,
  735. confirmButtonColor: "#DD6B55",
  736. confirmButtonText: "Yes, Reject it!",
  737. closeOnConfirm: true
  738. }, function(){
  739. $.ajax({
  740. url:"{!! env('APP_URL') !!}update/order/status",
  741. type:"POST",
  742. data:{
  743. id:order_id,
  744. status:status,
  745. "_token":"{!! csrf_token() !!}"
  746. },
  747. success:function () {
  748. //alert();
  749. $(".mlist_li.selected").remove();
  750. $(".no-order").show();
  751. $(".order-section").hide();
  752. $.ajax({
  753. url: "{!! env('APP_URL') !!}order/counts",
  754. success: function (response) {
  755. // response = $.parseJSON(response);
  756. var total_accepted = 0;
  757. var total = 0;
  758. $.each(response,function (i,v) {
  759. if(v.status=="Send_to_Kitchen" || v.status=="Accepted"){
  760. total_accepted+=parseInt(v.status_count);
  761. total+=parseInt(v.status_count);
  762. $(".labelcenter.kitchen").text(total_accepted);
  763. }
  764. if(v.status=="On_Road"){
  765. $(".labelcenter.route").text(v.status_count);
  766. total+=parseInt(v.status_count);
  767. }
  768. if(v.status=="Placed"){
  769. $(".labelcenter.new").html(v.status_count);
  770. total+=parseInt(v.status_count);
  771. if(parseInt(v.status_count) > 0){
  772. $("#order-counter").html(v.status_count);
  773. $("#order-counter").show();
  774. }else{
  775. audio.pause();
  776. $("#order-counter").html(0);
  777. $("#order-counter").hide();
  778. }
  779. }
  780. });
  781. $(".labelcenter.all").text(total);
  782. }
  783. });
  784. // swal("Rejected!", "Order is rejected.", "success");
  785. }
  786. });
  787. });
  788. return false;
  789. }
  790. if(status=="Accepted"){
  791. $("#accept-modal").modal('show');
  792. return false;
  793. }
  794. // alert(order_id);
  795. $.ajax({
  796. url:"{!! env('APP_URL') !!}update/order/status",
  797. type:"POST",
  798. data:{
  799. id:order_id,
  800. status:status,
  801. "_token":"{!! csrf_token() !!}"
  802. },
  803. success:function () {
  804. $(".mlist_li.selected").remove();
  805. if(s=="all"){
  806. $("#orders-list").html('');
  807. /* $.ajax({
  808. url:"{!! env('APP_URL') !!}liveorders/all",
  809. success:function (response) {
  810. // response = $.parseJSON(response);
  811. if(response){
  812. $.each(response.orders,function (i,v) {
  813. var str='<li class="mlist_li" rel="detail" data-order-id="'+v.id+'">\n' +
  814. ' <div class="box '+v.box_bg+' rounded-0">\n' +
  815. ' <div class="media-list media-list-divided media-list-hover">\n' +
  816. ' <div class="media align-items-center">\n' +
  817. ' <div class="media-body">\n' +
  818. ' <p>#'+v.order_ref+'</p>\n' +
  819. ' <p> '+(v.campaign_type!=""?v.campaign_type:"Direct")+', '+v.created_at+'</p>\n' +
  820. ' </div>\n' +
  821. ' <div class="media-right gap-items">\n' +
  822. ' <div class="user-social-acount text-center">\n' +
  823. ' <p class="m-0 status">'+v.status+'</p>\n' +
  824. ' <div class="d-flex align-items-center float-end">\n' +
  825. ' <div class="circle-div '+v.bg+' text-center" data-min="'+v.remaining_min+'" data-color="'+v.bg_color+'">\n' +
  826. ' <p class="mb-5 min">'+v.remaining_min+'<br />\n'+
  827. ' Min</p>\n'+
  828. ' </div>\n' +
  829. ' </div>\n' +
  830. ' </div>\n' +
  831. ' </div>\n' +
  832. ' </div>\n' +
  833. ' </div>\n' +
  834. ' </div>\n' +
  835. '</li>';
  836. counter = counter+1;
  837. $("#orders-list").append(str);
  838. });
  839. $("span."+status).html(counter);
  840. }
  841. }
  842. });*/
  843. }
  844. $(".no-order").show();
  845. $(".order-section").hide();
  846. /*$.ajax({
  847. url: "{!! env('APP_URL') !!}order/counts",
  848. success: function (response) {
  849. // response = $.parseJSON(response);
  850. var total_accepted = 0;
  851. var total = 0;
  852. $.each(response,function (i,v) {
  853. if(v.status=="Send_to_Kitchen" || v.status=="Accepted"){
  854. total_accepted+=parseInt(v.status_count);
  855. total+=parseInt(v.status_count);
  856. $(".labelcenter.kitchen").text(total_accepted);
  857. }
  858. if(v.status=="On_Road"){
  859. $(".labelcenter.route").text(v.status_count);
  860. total+=parseInt(v.status_count);
  861. }
  862. if(v.status=="Placed"){
  863. $(".labelcenter.new").text(v.status_count);
  864. total+=parseInt(v.status_count);
  865. }
  866. });
  867. $(".labelcenter.all").text(total);
  868. }
  869. });*/
  870. }
  871. });
  872. e.preventDefault();
  873. e.stopPropagation();
  874. });
  875. $('.table').DataTable({
  876. "order": [[ 0, "desc" ]],
  877. 'paging' : true,
  878. 'lengthChange': true,
  879. 'searching' : true,
  880. 'ordering' : true,
  881. 'info' : true,
  882. 'autoWidth' : true,
  883. /*"processing": true,
  884. "serverSide": true,
  885. "ajax": "{!! env('APP_URL') !!}get/ajax/orders",
  886. "order": [[ 0, "desc", ]],*/
  887. "lengthMenu": [ 50, 100, 150 ]
  888. });
  889. var min_minus = 1;
  890. setInterval(function(){
  891. $(".circle-div").each(function (i,v) {
  892. var min = parseInt($(this).data('min'));
  893. min = 1;
  894. if((min)>0){
  895. var new_time = (min-min_minus);
  896. // alert(new_time);
  897. if(new_time >= 0){
  898. $(this).attr('data-min',new_time);
  899. $(this).find('p.min').html(new_time+"<br />Min");
  900. }
  901. }
  902. });
  903. min_minus++;
  904. },60000);
  905. })
  906. function show_recipe(recipe){
  907. console.log(recipe);
  908. var str='<div class="box-header border-1 ">\n' +
  909. ' <div class="ml-5">\n' +
  910. ' <div class="d-flex justify-content-between align-items-center">\n' +
  911. ' <p>'+recipe.quantity+'x '+recipe.recipe_name+'</p>\n' ;
  912. if(recipe.total_price > 0)
  913. str+= ' <p>{!! $currency !!} '+recipe.total_price+'</p>\n';
  914. if(recipe.extra_options){
  915. str+='<ul>';
  916. if(recipe.extra_options){
  917. $.each(recipe.extra_options,function(c,d){
  918. str+="<li>"+d.name+" : {!! $currency !!} "+d.price+"</li>";
  919. });
  920. }
  921. str+='<ul>';
  922. }
  923. str+=
  924. ' </div>\n' +
  925. ' </div>\n' +
  926. ' </div>';
  927. return str;
  928. }
  929. </script>
  930. @endsection