discount-form.blade.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. @extends('layouts.app')
  2. @section('css')
  3. @endsection
  4. @php
  5. $resto = \App\Models\Restaurants::find(\App\Helpers\CommonMethods::getRestuarantID());
  6. $lang = $resto->default_lang;
  7. app()->setLocale($lang);
  8. if(session('app_lang') !==null){
  9. $lang = session('app_lang');
  10. app()->setLocale($lang);
  11. }
  12. @endphp
  13. @section('content')
  14. <link href="{!! env('APP_ASSETS') !!}vendor_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css" rel="stylesheet"/>
  15. <link href="{!! env('APP_ASSETS') !!}vendor_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css" rel="stylesheet"/>
  16. <link href="{!! env('APP_ASSETS') !!}/css/jquery.timepicker.min.css" rel="stylesheet"/>
  17. <link href="{!! env('APP_ASSETS') !!}vendor_components/select2/dist/css/select2.min.css" rel="stylesheet">
  18. <style>
  19. .datepicker-days{
  20. display: block !important;
  21. }
  22. .alert {
  23. display: none;
  24. }
  25. .border-red {
  26. border: 1px solid #F00 !important;
  27. }
  28. .tab-pane{}
  29. .container-full,.content-wrapper{
  30. background-color: transparent !important;
  31. }
  32. #image-preview {
  33. width: 700px;
  34. border-radius: 20px;
  35. height: 341px;
  36. position: relative;
  37. overflow: hidden;
  38. background-color: #f9f9f9;
  39. color: #ecf0f1;
  40. background-position: center !important;
  41. background-size: cover !important;
  42. }
  43. #image-preview input {
  44. line-height: 200px;
  45. font-size: 200px;
  46. position: absolute;
  47. opacity: 0;
  48. z-index: 10;
  49. }
  50. #image-preview label {
  51. position: absolute;
  52. z-index: 5;
  53. opacity: 0.8;
  54. cursor: pointer;
  55. background-color: #bdc3c7;
  56. width: 200px;
  57. height: 50px;
  58. font-size: 20px;
  59. line-height: 50px;
  60. text-transform: uppercase;
  61. top: 0;
  62. left: 0;
  63. right: 0;
  64. bottom: 0;
  65. margin: auto;
  66. text-align: center;
  67. }
  68. .select2-container .select2-selection--multiple{
  69. min-height: 46px;
  70. }
  71. .form-control, .form-select {
  72. height: 46px !important;
  73. border-color: #E4E6EB !important;
  74. border-radius: 7px !important;
  75. }
  76. .select2-container--default .select2-selection--single{
  77. height: 40px !important;
  78. border-color: #E4E6EB !important;
  79. border-radius: 7px !important;
  80. padding: 9px 12px;
  81. }
  82. .outlet-section,.item-section{
  83. display: none;
  84. }
  85. .outlets.selected .outlet-section, .items.selected .item-section{
  86. display: inline-flex;
  87. }
  88. .select2 {width: 100% !important;}
  89. </style>
  90. <div class="content-wrapper">
  91. <div class="container-full">
  92. <section class="content">
  93. @if(isset($discount))
  94. <h3 style="margin-left: 10px">{!! $discount->discont_code !!}</h3>
  95. @endif
  96. <form id="discount-form" method="POST" action="{!! env('APP_URL') !!}discount/save"
  97. enctype="multipart/form-data">
  98. @csrf
  99. <input type="hidden" name="id" value="{!! isset($discount)?$discount->id:'' !!}"/>
  100. <div class="row">
  101. <div class="col-xl-9">
  102. <div class="card mb-4">
  103. <div class="card-body">
  104. <h4>{{__('label.add_discount')}}</h4>
  105. <div class="row">
  106. <div class="col-sm-4 col-md-6">
  107. <div class="form-group">
  108. <label>{{__('label.discount_name')}}*</label>
  109. <input type="text" class="form-control" placeholder="E.g. Taco Tuesday" name="discount_name"
  110. value="{!! isset($discount)?$discount->discount_name:'' !!}" required="">
  111. </div>
  112. </div>
  113. </div>
  114. <div class="row">
  115. <div class="col-sm-4 col-md-6">
  116. <div class="form-group">
  117. <label>{{__('label.discount_arabic_name')}}*</label>
  118. <input style="direction: rtl" type="text" class="form-control" placeholder="E.g. Taco Tuesday" name="discount_name_arabic"
  119. value="{!! isset($discount)?$discount->discount_name_arabic:'' !!}" required="">
  120. </div>
  121. </div>
  122. </div>
  123. <div class="row">
  124. <div class="col-sm-4 col-md-4">
  125. <div class="form-group">
  126. <label>{{__('label.discount_code')}}</label>
  127. <input type="text" class="form-control" placeholder="E.g. TACO01102" name="discount_code"
  128. value="{!! isset($discount)?$discount->discount_code:'' !!}" required="">
  129. </div>
  130. </div>
  131. <div class="col-sm-4 col-md-2">
  132. <div class="form-group">
  133. <a href="#!" class="btn btn-primary generate-code mt-20">{{__('label.generate')}}</a>
  134. </div>
  135. </div>
  136. </div>
  137. <div class="row">
  138. <div class="col-sm-4 col-md-6">
  139. <div class="form-group">
  140. <input type="checkbox" id="order_applicable" name="order_applicable" class="filled-in" @if(isset($discount) && $discount->order_applicable == "Yes") checked @endif />
  141. <label for="order_applicable">{{__('label.apply_at_whole_order')}}</label>
  142. </div>
  143. </div>
  144. </div>
  145. <div class="row">
  146. <div class="col-sm-4 col-md-6">
  147. <div class="form-group">
  148. <input type="checkbox" id="is_discount_at_delivery" name="is_discount_at_delivery" class="filled-in" @if(isset($discount) && $discount->is_discount_at_delivery == "Yes") checked @endif />
  149. <label for="is_discount_at_delivery">{{__('label.is_discount_at_delivery')}}</label>
  150. </div>
  151. </div>
  152. </div>
  153. <div class="row">
  154. <div class="col-sm-4 col-md-4">
  155. <div class="form-group">
  156. <label for="order_applicable">{{__('label.discount_at_delivery')}}</label>
  157. <input type="text" id="discount_at_delivery" name="discount_at_delivery" class="form-control" value="{!! isset($discount)?$discount->discount_at_delivery:'' !!}" />
  158. </div>
  159. </div>
  160. <div class="col-md-3">
  161. <label for="order_applicable" style="visibility: hidden">{{__('label.discount_at_delivery')}}</label>
  162. <input name="delivery_discount_type" value="percentage" type="radio" id="radio_4" checked="">
  163. <label for="radio_4">Percentage (%)</label>
  164. </div>
  165. <div class="col-md-3">
  166. <label for="order_applicable" style="visibility: hidden">{{__('label.discount_at_delivery')}}</label>
  167. <input name="delivery_discount_type" type="radio" value="fixed_value" id="radio_5">
  168. <label for="radio_5">Fixed Value</label>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. <div class="selection-based-discount">
  174. <div class="card card-body">
  175. <h4 class="mb-40">{{__('label.application')}}</h4>
  176. <div class="row mb-20">
  177. <div class="col-md-1">
  178. <div class="form-group">
  179. <div class="custom-control custom-radio">
  180. <input class="custom-control-input " id="application-automatic" value="automatic" name="application_type" @if(isset($discount)) @if($discount->application_type=="automatic") checked @endif @else checked @endif type="radio"/>
  181. <label class="custom-control-label" for="application-automatic"></label>
  182. </div>
  183. </div>
  184. </div>
  185. <div class="col-md-10">
  186. <h4 class="mb-0">{{__('label.automatic')}} </h4>
  187. <p>{{__('label.will_be_automatically_applied_upon_checkout')}}</p>
  188. </div>
  189. </div>
  190. <div class="row mb-20">
  191. <div class="col-md-1">
  192. <div class="form-group">
  193. <div class="custom-control custom-radio">
  194. <input class="custom-control-input " id="application-manual" value="manual" @if(isset($discount) && $discount->application_type=="manual") checked @endif name="application_type" type="radio"/>
  195. <label class="custom-control-label" for="application-manual"></label>
  196. </div>
  197. </div>
  198. </div>
  199. <div class="col-md-10">
  200. <h4 class="mb-0">{{__('label.manual')}}</h4>
  201. <p>{{__('label.will_be_displayed_on_the_ordering_menu')}}</p>
  202. </div>
  203. </div>
  204. <div class="row">
  205. <div class="col-md-1">
  206. <div class="form-group">
  207. <div class="custom-control custom-radio">
  208. <input class="custom-control-input " id="application-hidden" value="hidden" name="application_type" @if(isset($discount) && $discount->application_type=="hidden") checked @endif type="radio"/>
  209. <label class="custom-control-label" for="application-hidden"></label>
  210. </div>
  211. </div>
  212. </div>
  213. <div class="col-md-10">
  214. <h4 class="mb-0">{{__('label.hidden_code')}}</h4>
  215. <p>{{__('label.wont_ be_displayed_on_the_ordering_menu')}}</p>
  216. </div>
  217. </div>
  218. </div>
  219. <div class="card card-body">
  220. <h4 class="mb-40">{{__('label.order_type')}}</h4>
  221. @php
  222. $order_type = !empty($discount->order_type)?explode(',',$discount->order_type):[];
  223. @endphp
  224. <div class="demo-checkbox">
  225. <input type="checkbox" id="basic_checkbox_1" name="order_type[]" value="delivery" class="filled-in" @if(isset($discount)) @if(in_array('delivery', $order_type)) checked @endif @else checked @endif />
  226. <label for="basic_checkbox_1">{{__('label.delivery')}}</label>
  227. <input type="checkbox" id="basic_checkbox_2" name="order_type[]" value="pickup" class="filled-in" @if(in_array('pickup', $order_type)) checked @endif />
  228. <label for="basic_checkbox_2">{{__('label.pickup')}}</label>
  229. <input type="checkbox" id="basic_checkbox_3" name="order_type[]" value="dine-in" class="filled-in" @if(in_array('dine-in', $order_type)) checked @endif />
  230. <label for="basic_checkbox_3">{{__('label.dine_in')}}</label>
  231. </div>
  232. </div>
  233. <div class="card card-body">
  234. <h4 class="mb-40">{{__('label.application_outlets')}}</h4>
  235. <div class="demo-checkbox">
  236. <div class="row">
  237. <div class="col-md-6 outlets">
  238. <input name="outlets" value="all_outlets" type="radio" id="radio_outlets_12" @if(isset($discount)) @if($discount->outlets=="all_outlets") checked @endif @else checked @endif />
  239. <label for="radio_outlets_12">{{__('label.all_outlets')}}</label>
  240. </div>
  241. <div class="col-md-6 outlets @if(isset($discount) && $discount->outlets=="selected_outlets") selected @endif">
  242. <input name="outlets" type="radio" value="selected_outlets" id="radio_outlets_22" @if(isset($discount) && $discount->outlets=="selected_outlets") checked @endif />
  243. <label for="radio_outlets_22">{{__('label.selected_outlets')}}</label>
  244. @php
  245. $resto_id =\App\Helpers\CommonMethods::getRestuarantID();
  246. $outlets = \App\Models\Outlets::whereNull('deleted_at')->where('resto_id',$resto_id)->get();
  247. $selected_outlets = [];
  248. $selected_items = [];
  249. if(isset($discount)){
  250. if($discount->outlets=="selected_outlets"){
  251. $outlt = ($discount->discount_outlets);
  252. if(isset($outlt) && $outlt->count() > 0){
  253. $selected_outlets = $outlt->pluck('outlet_id')->toArray();
  254. }
  255. }
  256. if($discount->items=="selected_items"){
  257. $d_items = ($discount->discount_items);
  258. if(isset($d_items) && $d_items->count() > 0){
  259. $selected_items = $d_items->pluck('item_id')->toArray();
  260. }
  261. }
  262. }
  263. @endphp
  264. <div class="col-md-12 outlet-section">
  265. @if(isset($outlets) && $outlets->count() > 0)
  266. <ul class="list-unstyled">
  267. @foreach($outlets as $outlet)
  268. <li>
  269. <div class="custom-control custom-checkbox">
  270. <input class="custom-control-input selected-outlets" @if(isset($discount) && count($selected_outlets) > 0 && in_array($outlet->id,$selected_outlets)) checked @endif id="outlet-manager-{!! $outlet->id !!}" value="{!! $outlet->id !!}" name="selected_outlets[]" type="checkbox"/>
  271. <label class="custom-control-label" for="outlet-manager-{!! $outlet->id !!}"> {!! $outlet->name !!}</label>
  272. </div>
  273. </li>
  274. @endforeach
  275. </ul>
  276. @endif
  277. </div>
  278. </div>
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. <div class="card card-body">
  284. <h4 class="mb-40">{{__('label.discount_type')}}</h4>
  285. <div class="demo-checkbox">
  286. <div class="row">
  287. <div class="col-md-6">
  288. <input name="discount_type" value="percentage" type="radio" id="radio_1" checked />
  289. <label for="radio_1">{{__('label.percentage_%')}}</label>
  290. </div>
  291. <div class="col-md-6">
  292. <input name="discount_type" type="radio" value="fixed_value" id="radio_2" />
  293. <label for="radio_2">{{__('label.fixed_value')}}</label>
  294. </div>
  295. </div>
  296. </div>
  297. <div class="row mt-20 mb-20">
  298. <div class="col-md-4">
  299. <div class="form-group">
  300. <label>{{__('label.amount')}} *</label>
  301. <input type="text" value="{!! isset($discount)?$discount->amount:'' !!}" required="" name="amount" required="" class="form-control">
  302. </div>
  303. </div>
  304. <div class="col-md-4">
  305. <div class="form-group">
  306. <label>{{__('label.minimum_order_value')}} </label>
  307. <input type="text" value="{!! isset($discount)?$discount->minimum_order_value:'' !!}" name="minimum_order_value" class="form-control">
  308. </div>
  309. </div>
  310. <div class="col-md-4">
  311. <div class="form-group">
  312. <label>{{__('label.maximum_discount')}} </label>
  313. <input type="text" name="maximum_discount" value="{!! isset($discount)?$discount->maximum_discount:'' !!}" class="form-control">
  314. </div>
  315. </div>
  316. </div>
  317. </div>
  318. <div class="selection-based-discount">
  319. <div class="card card-body">
  320. <h4 class="mb-40">{{__('label.discount_items')}}</h4>
  321. <div class="demo-checkbox">
  322. <div class="row">
  323. <div class="col-md-6 items">
  324. <input name="items" value="all_items" type="radio" id="radio_12" checked />
  325. <label for="radio_12">{{__('label.all_Items')}}</label>
  326. </div>
  327. <div class="col-md-6 items @if(isset($discount) && $discount->items=="selected_items") selected @endif">
  328. <input name="items" type="radio" value="selected_items" @if(isset($discount) && $discount->items=="selected_items") checked @endif id="radio_22" />
  329. <label for="radio_22">{{__('label.selected_items')}}</label>
  330. @php
  331. $items = \App\Models\Recipes::whereNull('deleted_at')->where('resto_id',$resto_id)->get();
  332. @endphp
  333. <div class="col-md-12 item-section">
  334. <select id="item-list" multiple class="form-control" name="discount_item[]">
  335. @if(isset($items) && $items->count() > 0)
  336. @foreach($items as $item)
  337. <option value="{!! $item->unique_shared_key !!}" @if(isset($discount) && count($selected_items) > 0 && in_array($item->unique_shared_key,$selected_items)) selected @endif >{!! $item->name !!}</option>
  338. @endforeach
  339. @endif
  340. </select>
  341. </div>
  342. </div>
  343. </div>
  344. </div>
  345. </div>
  346. </div>
  347. <div class="card card-body">
  348. <h4 class="mb-40">{{__('label.customer_segmentation')}}</h4>
  349. <div class="demo-checkbox">
  350. <div class="row">
  351. <div class="col-md-6">
  352. <input name="customer_segmentation" value="all_customers" type="radio" id="customer_segmentation_12" checked />
  353. <label for="customer_segmentation_12">{{__('label.all_customers')}}</label>
  354. </div>
  355. <div class="col-md-6">
  356. <input name="customer_segmentation" type="radio" value="new_customer" id="customer_segmentation_22" />
  357. <label for="customer_segmentation_22">{{__('label.new_customer')}}</label>
  358. </div>
  359. </div>
  360. </div>
  361. <div class="row mt-10 mb-20">
  362. <div class="col-md-4">
  363. <div class="form-group">
  364. <label>{{__('label.number_of_uses_per_customer')}}</label>
  365. <input type="number" value="{!! isset($discount)?$discount->number_of_uses_per_customer:'' !!}" required="" name="number_of_uses_per_customer" class="form-control">
  366. </div>
  367. </div>
  368. </div>
  369. </div>
  370. <div class="card card-body">
  371. <h4 class="mb-40">{{__('label.availability')}}</h4>
  372. <div class="row mt-20 mb-10">
  373. <div class="col-md-6">
  374. <div class="form-group">
  375. <label>{{__('label.start_date')}} *</label>
  376. <input type="text" required="" name="start_date" value="{!! isset($discount)?$discount->start_date:'' !!}" required="" readonly class="form-control date">
  377. </div>
  378. </div>
  379. <div class="col-md-6">
  380. <div class="form-group">
  381. <label>{{__('label.start_time')}} * </label>
  382. <input type="text" name="start_time" value="{!! isset($discount)?$discount->start_time:'' !!}" required="" class="form-control timepicker">
  383. </div>
  384. </div>
  385. </div>
  386. <div class="demo-checkbox">
  387. <input name="expire_on_date" value="expire_on_date" type="radio" id="expire_on_date_12" checked />
  388. <label for="expire_on_date_12">{{__('label.expires_on_specific_date')}}</label>
  389. <input name="expire_on_date" type="radio" value="never_expire" id="expire_on_date_22" />
  390. <label for="expire_on_date_22">{{__('label.never_expire')}}</label>
  391. </div>
  392. <div class="row mt-10 mb-10">
  393. <div class="col-md-6">
  394. <div class="form-group">
  395. <label>{{__('label.end_date')}}</label>
  396. <input type="text" name="end_date" value="{!! isset($discount)?$discount->end_date:'' !!}" readonly class="form-control date" id="end_date">
  397. </div>
  398. </div>
  399. <div class="col-md-6">
  400. <div class="form-group">
  401. <label>{{__('label.end_time')}}</label>
  402. <input type="text" name="end_time" value="{!! isset($discount)?$discount->end_time:'' !!}" class="form-control timepicker">
  403. </div>
  404. </div>
  405. </div>
  406. <div class="row">
  407. <div class="col-md-6">
  408. <div class="form-group">
  409. <label>{{__('label.total_number_of_uses')}}</label>
  410. <input type="number" name="total_number_of_cases" value="{!! isset($discount)?$discount->total_number_of_cases:'' !!}" required="" class="form-control">
  411. </div>
  412. </div>
  413. </div>
  414. </div>
  415. <div class="card card-body">
  416. <div class="row">
  417. <div class="col-md-3">
  418. <a href="#!" class="btn btn-primary save-discount">{{__('label.save_discount')}}</a>
  419. </div>
  420. </div>
  421. </div>
  422. </div>
  423. </div>
  424. </form>
  425. </section>
  426. </div>
  427. </div>
  428. @endsection
  429. @section('js')
  430. <script src="{!! env('APP_ASSETS') !!}vendor_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script>
  431. <script src="{!! env('APP_ASSETS') !!}vendor_components/select2/dist/js/select2.min.js"></script>
  432. <script src="{!! env('APP_ASSETS') !!}js/jquery.timepicker.min.js"></script>
  433. <script type="text/javascript">
  434. $(function(){
  435. $(".timepicker").timepicker({ step:5});
  436. $("#item-list").select2({
  437. width: 'element',
  438. });
  439. $(".date").datepicker({
  440. format:"yyyy-mm-dd"
  441. });
  442. $("body").on("change","#order_applicable",function(){
  443. //var _required_inputs = $("").find("input").prop("required");
  444. if($(this).is(":checked")){
  445. $(".selection-based-discount").hide();
  446. $("input[name=amount]").prop('required',false);
  447. }
  448. else{
  449. $("input[name=amount]").prop('required',true);
  450. $(".selection-based-discount").show();
  451. }
  452. });
  453. $("input[name=outlets]").on('change',function(){
  454. var value = $(this).val();
  455. var _this = $(this);
  456. $(".outlets").removeClass('selected');
  457. _this.parent().addClass('selected');
  458. });
  459. $("input[name=items]").on('change',function(){
  460. var value = $(this).val();
  461. var _this = $(this);
  462. $(".items").removeClass('selected');
  463. _this.parent().addClass('selected');
  464. });
  465. $("body").on("click",".generate-code",function(){
  466. var result = '';
  467. var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  468. var charactersLength = characters.length;
  469. for ( var i = 0; i < 6; i++ ) {
  470. result += characters.charAt(Math.floor(Math.random() * charactersLength));
  471. }
  472. $("input[name=discount_code]").val(result);
  473. });
  474. $("body").on("click",".save-discount",function(){
  475. if($("#discount-form").valid()){
  476. $("#discount-form").ajaxForm(function(response){
  477. response = $.parseJSON(response);
  478. if(response.type=="success"){
  479. $.toast({
  480. heading: "{{__('label.discount_updated')}}",
  481. text: response.message,
  482. position: 'top-right',
  483. loaderBg: '#ff6849',
  484. icon: 'success',
  485. hideAfter: 3000,
  486. stack: 1
  487. });
  488. setTimeout(function () {
  489. window.location = "{!! env('APP_URL') !!}discounts";
  490. },2000);
  491. }else{
  492. $.toast({
  493. heading:"{{__('label.discount_updating_error')}}",
  494. text: response.message,
  495. position: 'top-right',
  496. loaderBg: '#ff6849',
  497. icon: 'error',
  498. hideAfter: 3000,
  499. stack: 1
  500. });
  501. }
  502. }).submit();
  503. }
  504. });
  505. })
  506. </script>
  507. @endsection