recipe_form.blade.php 71 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607
  1. @extends('layouts.app')
  2. @section('css')
  3. <link href="{!! env('APP_ASSETS') !!}vendor_components/dropzone/dist/dropzone.css" rel="stylesheet">
  4. <link href="{!! env('APP_ASSETS') !!}vendor_components/select2/dist/css/select2.min.css" rel="stylesheet">
  5. @endsection
  6. @php
  7. $resto = \App\Models\Restaurants::find(\App\Helpers\CommonMethods::getRestuarantID());
  8. $lang = $resto->default_lang;
  9. app()->setLocale($lang);
  10. if(session('app_lang') !==null){
  11. $lang = session('app_lang');
  12. app()->setLocale($lang);
  13. }
  14. @endphp
  15. @section('content')
  16. <style>
  17. .alert{
  18. display: none;
  19. }
  20. .container-full,.content-wrapper{
  21. background-color: transparent !important;
  22. }
  23. .card-header{
  24. display: inline-block;
  25. }
  26. #image-preview {
  27. width: 568px;
  28. border-radius: 20px;
  29. /* height: 341px;*/
  30. position: relative;
  31. overflow: hidden;
  32. background-color: #f9f9f9;
  33. color: #ecf0f1;
  34. background-position: center !important;
  35. background-size: cover !important;
  36. }
  37. #image-preview input {
  38. line-height: 200px;
  39. font-size: 200px;
  40. position: absolute;
  41. opacity: 0;
  42. z-index: 10;
  43. }
  44. #image-preview label {
  45. position: absolute;
  46. z-index: 5;
  47. opacity: 0.8;
  48. cursor: pointer;
  49. background-color: #bdc3c7;
  50. width: 200px;
  51. height: 50px;
  52. font-size: 20px;
  53. line-height: 50px;
  54. text-transform: uppercase;
  55. top: 0;
  56. left: 0;
  57. right: 0;
  58. bottom: 0;
  59. margin: auto;
  60. text-align: center;
  61. }
  62. .form-control, .form-select {
  63. height: 46px ;
  64. border-color: #E4E6EB !important;
  65. border-radius: 7px !important;
  66. }
  67. textarea{
  68. height: 80px !important;
  69. }
  70. .select2 {
  71. width: 100% !important;
  72. height: 46px;
  73. border-color: #E4E6EB !important;
  74. border-radius: 7px !important;
  75. /*padding: 0.375rem 0.75rem !important;
  76. font-size: 1rem !important;
  77. font-weight: 400;
  78. line-height: 1.5;
  79. color: #212529;*/
  80. }
  81. .select2-container--default .select2-selection--multiple{
  82. padding:6px;
  83. }
  84. @media only screen and (max-width:428px){
  85. #image-preview{
  86. width:100%;
  87. }
  88. }
  89. .modal-header {
  90. border-bottom-color: #ffab00;
  91. background-color: #ffab00;
  92. color:white;
  93. }
  94. </style>
  95. @php
  96. $resto = \App\Models\Restaurants::find(\App\Helpers\CommonMethods::getRestuarantID());
  97. $restuarant1 = $resto;
  98. $resto_meta = isset($restuarant1->resto_metas)?$restuarant1->resto_metas:null;
  99. $resto_metas = [];
  100. $billing = [];
  101. if(isset($resto_meta)){
  102. foreach($resto_meta as $meta){
  103. // dump($meta->resto_meta_defs);
  104. $index_name = isset($meta->resto_meta_defs->parents)?$meta->resto_meta_defs->parents->meta_def_name:$meta->resto_meta_defs->meta_def_name;
  105. if(isset($_GET['debug'])){
  106. // dump($index_name );
  107. }
  108. if($meta->resto_meta_defs->meta_def_name=="BILLING_GATEWAY"){
  109. // dump($meta->resto_meta_defs->meta_def_name);
  110. // $resto_metas['BILLING_GATEWAY'][] = $meta->meta_val;
  111. $billing[] = array('id'=>$meta->meta_id,'value'=>$meta->meta_val);
  112. }
  113. $resto_metas[$index_name] = $meta->meta_val;
  114. }
  115. }
  116. $resto_metas['BILLING_GATEWAY'] = $billing;
  117. $currency = isset($resto_metas['BUSSINESS_CCY'])?$resto_metas['BUSSINESS_CCY']:"IQD";
  118. $business_type = isset($resto_metas['BUSSINESS_TYPE'])?$resto_metas['BUSSINESS_TYPE']:"Restaurants";
  119. $allow_pre_order = isset($resto_metas['ALLOW_PRE_ORDERS'])?$resto_metas['ALLOW_PRE_ORDERS']:"No";
  120. $business_type = trim($business_type);
  121. @endphp
  122. <div class="content-wrapper">
  123. <div class="container-full">
  124. <section class="content">
  125. <h1 class="mt-4">{{__('label.recipe')}}</h1>
  126. <ol class="breadcrumb mb-4">
  127. <li class="breadcrumb-item"><a href="{!! env('APP_URL') !!}dashboard">{{__('label.dashboard')}}</a></li>
  128. <li class="breadcrumb-item active"> @if(isset($recipe)) {{__('label.edit_recipe')}} @else {{__('label.new_recipe')}} @endif</li>
  129. </ol>
  130. <div class="row">
  131. <div class="col-xl-12">
  132. <div class="card mb-4">
  133. <div class="card-header">
  134. <i class="fa fa-plus mr-1"></i>
  135. @if(isset($recipe))
  136. {{__('label.edit')}} {!! $recipe->name !!}
  137. @else
  138. {{__('label.new_item')}}
  139. @endif
  140. </div>
  141. <div class="card-body">
  142. <form id="restaurant-form" method="POST" action="{!! env('APP_URL') !!}recipe/save" enctype="multipart/form-data">
  143. @csrf
  144. <input type="hidden" name="id" value="{!! isset($recipe)?$recipe->id:'' !!}" />
  145. <input type="hidden" name="business_type" value="{!! $business_type !!}">
  146. <div class="row mb-4 main-cover-image">
  147. <div class="col-sm-12">
  148. <p style="font-size: 14px">{{__('label.cover_image')}}</p>
  149. <div id="image-preview" class="ratio ratio-16x9" @if(isset($recipe) && isset($recipe->main_images) && !empty($recipe->main_images->file_name)) style="background: url({!! $recipe->main_images->file_name !!})" @endif>
  150. <label for="image-upload" id="image-label">{{__('label.choose_file')}}</label>
  151. <input type="file" name="main_image" id="image-upload" />
  152. </div>
  153. @if(isset($recipe) && isset($recipe->main_images) && !empty($recipe->main_images->file_name))
  154. <a href="#!" class="text-center text-danger remove-image" data-recipe-id="{!! isset($recipe)?$recipe->id:'' !!}">{{__('label.remove_image')}}</a>
  155. @endif
  156. <p class="text-warning mt-2">* image size 1920 X 1280 pixels , size 2.4 Mb</p>
  157. </div>
  158. </div>
  159. <div class="row">
  160. <div class="col-sm-4 col-md-6">
  161. <div class="form-group">
  162. <label>{{__('label.english_name')}}</label>
  163. <input type="text" class="form-control" placeholder="" name="name" value="{!! isset($recipe)?$recipe->name:'' !!}" required>
  164. </div>
  165. </div>
  166. </div>
  167. <div class="row">
  168. <div class="col-sm-4 col-md-6">
  169. <div class="form-group">
  170. <label>{{__('label.arabic_name')}}</label>
  171. <input type="text" style="direction: rtl" class="form-control" placeholder="" name="arabic_name" value="{!! isset($recipe)?$recipe->arabic_name:'' !!}" required>
  172. </div>
  173. </div>
  174. </div>
  175. @php
  176. $c = [];
  177. if(isset($recipe)){
  178. $c = $recipe->categories->pluck('category_id')->toArray();
  179. // dump($c);
  180. }
  181. @endphp
  182. <div class="row">
  183. <div class="col-sm-4 col-md-6">
  184. <div class="form-group">
  185. <label>{{__('label.category')}}</label>
  186. <select class="custom-select" name="category[]" multiple>
  187. <option value="">{{__('label.select_category')}}</option>
  188. @if(isset($categories) && $categories->count() > 0)
  189. @foreach($categories as $category)
  190. <option value="{!! $category->id !!}" @if(isset($recipe) && in_array($category->id,$c)) selected @endif>{!! $category->name !!}</option>
  191. @endforeach
  192. @endif
  193. </select>
  194. </div>
  195. </div>
  196. </div>
  197. <div class="row">
  198. <div class="col-sm-4 col-md-4">
  199. <div class="form-group">
  200. <label>{{__('label.price')}}</label>
  201. <input type="number" class="form-control" placeholder="" name="price" value="{!! isset($recipe)?$recipe->price:'' !!}" required>
  202. </div>
  203. </div>
  204. <div class="col-sm-4 col-md-4" style="margin-top:2.2rem">
  205. <div class="form-group">
  206. <label style="visibility: hidden;">Price</label>
  207. @if(isset($recipe))
  208. <input type="checkbox" id="basic_checkbox_2" class="filled-in" name="show_recipe_main_price" @if($recipe->show_recipe_main_price==1) checked @endif>
  209. <label for="basic_checkbox_2">{{__('label.show_item_price')}}</label>
  210. @else
  211. <input type="checkbox" id="basic_checkbox_2" class="filled-in" name="show_recipe_main_price">
  212. <label for="basic_checkbox_2">{{__('label.show_item_price')}}</label>
  213. @endif
  214. </div>
  215. </div>
  216. </div>
  217. <div class="row">
  218. <div class="col-sm-4 col-md-6">
  219. <div class="form-group">
  220. <label>{{__('label.english_description')}}</label>
  221. <textarea class="form-control" placeholder="" name="short_description">{!! isset($recipe)?$recipe->short_description:'' !!}</textarea>
  222. </div>
  223. </div>
  224. </div>
  225. <div class="row">
  226. <div class="col-sm-4 col-md-6">
  227. <div class="form-group">
  228. <label>{{__('label.arabic_description')}}</label>
  229. <textarea class="form-control" style="direction: rtl" placeholder="" name="short_description_arabic">{!! isset($recipe)?$recipe->short_description_arabic:'' !!}</textarea>
  230. </div>
  231. </div>
  232. </div>
  233. @if($business_type=="ClothsStore")
  234. @php
  235. $sizes = [];
  236. $colors = [];
  237. $color_data = null;
  238. if(isset($recipe)){
  239. $colors = \App\Models\ClothOptions::where('product_id',$recipe->id)->where('type','color')->pluck('name')->whereNull('deleted_at')->toArray();
  240. //dump($colors);
  241. $sizes = \App\Models\ClothOptions::where('product_id',$recipe->id)->where('type','size')->pluck('name')->toArray();
  242. $color_data = \App\Models\ClothOptions::where('product_id',$recipe->id)->whereIn('type',['color','color_image'])->whereNull('deleted_at')->get();
  243. }
  244. @endphp
  245. <div class="row">
  246. <div class="col-sm-4 col-md-6">
  247. <div class="form-group">
  248. <label>{{__('label.color_option')}}</label>
  249. <select class="form-control" required name="color_option">
  250. <option value="color" @if(isset($recipe) && $recipe->color_option == 'color' ) selected @endif>{{__('label.color_only')}}</option>
  251. <option value="color_image" @if(isset($recipe) && $recipe->color_option =='color_image' ) selected @endif>{{__('label.color_image')}}</option>
  252. </select>
  253. </div>
  254. </div>
  255. </div>
  256. <div class="row">
  257. <div class="col-sm-4 col-md-6">
  258. <div class="form-group">
  259. <label>{{__('label.color')}}</label>
  260. <select class="form-control" multiple id="color" name="color[]">
  261. </select>
  262. </div>
  263. </div>
  264. </div>
  265. @if(isset($color_data))
  266. <div class="row">
  267. <div class="col-sm-4 col-md-6">
  268. <table class="table table-stripped">
  269. <tbody>
  270. @foreach( $color_data as $color)
  271. <tr>
  272. <td><div style="width: 20px; height: 20px; background-color: {!! $color->name !!}; float: left; border-radius: 20px;"></div></td>
  273. <td>@if($color->img_url!="") <img style="width: 100px" src="{!! $color->img_url!!}" @endif </td>
  274. <td><a href="#!" data-id="{!! $color->id !!}" class="btn btn-sm btn-danger delete-color">{{__('label.delete')}}</a></td>
  275. </tr>
  276. @endforeach
  277. </tbody>
  278. </table>
  279. </div>
  280. </div>
  281. @endif
  282. <div class="row">
  283. <div class="col-sm-4 col-md-6">
  284. <table id="color-table" class="table table-stripped">
  285. <tbody></tbody>
  286. </table>
  287. </div>
  288. </div>
  289. <div class="row">
  290. <div class="col-sm-4 col-md-6">
  291. <div class="form-group">
  292. <label>{{__('label.size')}}</label>
  293. <select class="form-control" multiple id="size" name="size[]">
  294. <option value="30" @if(in_array('30',$sizes)) selected @endif>30</option>
  295. <option value="32" @if(in_array('32',$sizes)) selected @endif>32</option>
  296. <option value="34" @if(in_array('34',$sizes)) selected @endif>34</option>
  297. <option value="36" @if(in_array('36',$sizes)) selected @endif>36</option>
  298. <option value="38" @if(in_array('38',$sizes)) selected @endif>38</option>
  299. <option value="40" @if(in_array('40',$sizes)) selected @endif>40</option>
  300. <option value="41" @if(in_array('41',$sizes)) selected @endif>41</option>
  301. <option value="42" @if(in_array('42',$sizes)) selected @endif>42</option>
  302. <option value="43" @if(in_array('43',$sizes)) selected @endif>43</option>
  303. <option value="44" @if(in_array('44',$sizes)) selected @endif>44</option>
  304. <option value="45" @if(in_array('45',$sizes)) selected @endif>45</option>
  305. <option value="46" @if(in_array('46',$sizes)) selected @endif>46</option>
  306. <option value="48" @if(in_array('48',$sizes)) selected @endif>48</option>
  307. <option value="50" @if(in_array('50',$sizes)) selected @endif>50</option>
  308. <option value="52" @if(in_array('52',$sizes)) selected @endif>52</option>
  309. <option value="54" @if(in_array('54',$sizes)) selected @endif>54</option>
  310. <option value="56" @if(in_array('56',$sizes)) selected @endif>56</option>
  311. <option value="58" @if(in_array('58',$sizes)) selected @endif>58</option>
  312. <option value="60" @if(in_array('60',$sizes)) selected @endif>60</option>
  313. <option value="62" @if(in_array('62',$sizes)) selected @endif>62</option>
  314. <option value="XXS" @if(in_array('XXS',$sizes)) selected @endif>XXS</option>
  315. <option value="XS" @if(in_array('XS',$sizes)) selected @endif>XS</option>
  316. <option value="S" @if(in_array('S',$sizes)) selected @endif>S</option>
  317. <option value="M" @if(in_array('M',$sizes)) selected @endif>M</option>
  318. <option value="L" @if(in_array('L',$sizes)) selected @endif>L</option>
  319. <option value="XL" @if(in_array('XL',$sizes)) selected @endif>XL</option>
  320. <option value="XXL" @if(in_array('XXL',$sizes)) selected @endif>XXL</option>
  321. <option value="XXXL" @if(in_array('XXXL',$sizes)) selected @endif>XXXL</option>
  322. <option value="0-3-Months" @if(in_array('0-3-Months',$sizes)) selected @endif>0-3 Months</option>
  323. <option value="3-6-Months" @if(in_array('3-6-Months',$sizes)) selected @endif>3-6 Months</option>
  324. <option value="6-9-Months" @if(in_array('6-9-Months',$sizes)) selected @endif>6-9 Months</option>
  325. <option value="9-12-Months" @if(in_array('9-12-Months',$sizes)) selected @endif>9-12 Months</option>
  326. <option value="1-2-YEARS" @if(in_array('1-2-YEARS',$sizes)) selected @endif>1-2 YEARS</option>
  327. <option value="2-3-YEARS" @if(in_array('2-3-YEARS',$sizes)) selected @endif>2-3 YEARS</option>
  328. <option value="3-4-YEARS" @if(in_array('3-4-YEARS',$sizes)) selected @endif>3-4 YEARS</option>
  329. <option value="5-6-YEARS" @if(in_array('5-6-YEARS',$sizes)) selected @endif>5-6 YEARS</option>
  330. <option value="6-7-YEARS" @if(in_array('6-7-YEARS',$sizes)) selected @endif>6-7 YEARS</option>
  331. <option value="7-8-YEARS" @if(in_array('7-8-YEARS',$sizes)) selected @endif>7-8 YEARS</option>
  332. <option value="1-2-Y" @if(in_array('1-2-Y',$sizes)) selected @endif>1-2 Y</option>
  333. <option value="2-3-Y" @if(in_array('2-3-Y',$sizes)) selected @endif>2-3 Y</option>
  334. <option value="3-4-Y" @if(in_array('3-4-Y',$sizes)) selected @endif>3-4 Y</option>
  335. <option value="5-6-Y" @if(in_array('5-6-Y',$sizes)) selected @endif>5-6 Y</option>
  336. <option value="6-7-Y" @if(in_array('6-7-Y',$sizes)) selected @endif>6-7 Y</option>
  337. <option value="7-8-Y" @if(in_array('7-8-Y',$sizes)) selected @endif>7-8 Y</option>
  338. <option value="0-3-آشهر" @if(in_array('0-3-آشهر',$sizes)) selected @endif>0-3 آشهر</option>
  339. <option value="3-6-آشهر" @if(in_array('3-6-آشهر',$sizes)) selected @endif>3-6 آشهر</option>
  340. <option value="6-9-آشهر" @if(in_array('6-9-آشهر',$sizes)) selected @endif>6-9 آشهر</option>
  341. <option value="9-12-آشهر" @if(in_array('9-12-آشهر',$sizes)) selected @endif>9-12 آشهر</option>
  342. <option value="1-2-سنوات" @if(in_array('1-2-سنوات',$sizes)) selected @endif>1-2 سنوات</option>
  343. <option value="2-3-سنوات" @if(in_array('2-3-سنوات',$sizes)) selected @endif>2-3 سنوات</option>
  344. <option value="3-4-سنوات" @if(in_array('3-4-سنوات',$sizes)) selected @endif>3-4 سنوات</option>
  345. <option value="5-6-سنوات" @if(in_array('5-6-سنوات',$sizes)) selected @endif>5-6 سنوات</option>
  346. <option value="6-7-سنوات" @if(in_array('6-7-سنوات',$sizes)) selected @endif>6-7 سنوات</option>
  347. <option value="7-8-سنوات" @if(in_array('7-8-سنوات',$sizes)) selected @endif>7-8 سنوات</option>
  348. </select>
  349. </div>
  350. </div>
  351. </div>
  352. @endif
  353. <div class="row">
  354. <div class="col-sm-4 col-md-6">
  355. <div class="form-group">
  356. <label>{{__('label.gallery')}}</label>
  357. </div>
  358. @if(isset($recipe) && isset($recipe->galleries))
  359. <div class="row mb-2">
  360. @foreach($recipe->galleries as $gallery)
  361. <div class="col-sm-2 gallery">
  362. <div class="mb-1" style="width: 100px; height: 100px; background-image: url({!! $gallery->file_name !!}); background-position: center; background-size: contain">
  363. </div>
  364. <div class="text-center">
  365. <a href="#!" class="delete-image text-danger" data-id="{!! $gallery->id !!}"><i class="glyphicon glyphicon-trash"></i> </a>
  366. </div>
  367. </div>
  368. @endforeach
  369. </div>
  370. @endif
  371. </div>
  372. </div>
  373. @if($business_type!="ClothsStore")
  374. @if(isset($recipe->extra_options) && $recipe->extra_options->count() > 0)
  375. <h3>{{__('label.extra_options')}}</h3>
  376. <hr />
  377. <div class="row">
  378. <div class="col-sm-6 col-md-8">
  379. <table class="table table-bordered">
  380. <thead>
  381. <tr>
  382. <th>{{__('label.option_name')}}</th>
  383. <th>{{__('label.price')}}Price</th>
  384. <th>{{__('label.items')}}</th>
  385. <th>{{__('label.is_mandatory')}}?</th>
  386. <th></th>
  387. </tr>
  388. </thead>
  389. <tbody>
  390. @foreach($recipe->extra_options as $option)
  391. <tr>
  392. <td>{!! $option->name !!} @if($option->name_arabic!="") ( {!! $option->name_arabic !!} ) @endif</td>
  393. <td>{!! $option->price !!}</td>
  394. <td>
  395. @if(isset($option->extra_option_items) && $option->extra_option_items->count() > 0)
  396. <a href="#!" class="badge badge-success view-items" data-id="{!! $option->id !!}" >{!! $option->extra_option_items->count() !!}</a>
  397. @endif
  398. <a href="#!" class="badge badge-danger add-new-items" data-id="{!! $option->id !!}"><i class="glyphicon glyphicon-plus"></i> </a>
  399. </td>
  400. <td>
  401. @if(isset($option->extra_option_items) && $option->extra_option_items->count() > 0)
  402. <!-- <input type="checkbox" class="is_mandatory" @if($option->is_mandatory==1) checked @endif value="" data-id="{!! $option->id !!}" /> -->
  403. <input type="checkbox" id="is_mandatory{!! $option->id !!}" class="filled-in is_mandatory" name="is_mandatory" @if($option->is_mandatory==1) checked @endif value="" data-id="{!! $option->id !!}">
  404. <label for="is_mandatory{!! $option->id !!}">Mandatory Items</label>
  405. @if($option->is_mandatory==1) User can select <span class="badge badge-success">{!! $option->mandatory_amount !!}</span> items must @endif
  406. @endif
  407. </td>
  408. <td>
  409. <a href="#!" class="btn btn-sm btn-primary edit-option" data-id="{!! $option->id !!}" data-toggle="tooltip" data-placement="top" title="Edit"><i class="glyphicon glyphicon-edit"></i> </a>
  410. <a href="javascript:;" data-id="{!! $option->id !!}" class="btn btn-sm btn-danger delete-option"><i class="glyphicon glyphicon-trash" data-toggle="tooltip" data-placement="top" title="Delete"></i></a>
  411. </td>
  412. </tr>
  413. @endforeach
  414. </tbody>
  415. </table>
  416. </div>
  417. </div>
  418. @endif
  419. @endif
  420. @if(isset($recipe))
  421. @if(isset($resto_metas['ENABLED_PRODUCT_FAQS']) && $resto_metas['ENABLED_PRODUCT_FAQS']=="Yes")
  422. <div class="row mb-5">
  423. <div class="col-sm-8">
  424. <div class="card">
  425. <div class="card-header">
  426. <h3 class="pull-left">{{__('label.product_faqs')}}</h3>
  427. <a href="#!" class="btn btn-sm btn-primary pull-right add-faq">{{__('label.add_faq')}}</a>
  428. </div>
  429. <div class="card-body">
  430. @if(isset($recipe->product_faqs) && $recipe->product_faqs->count() > 0)
  431. <div class="accordion" id="accordionExample">
  432. @foreach($recipe->product_faqs as $faq)
  433. <div class="accordion-item">
  434. <h2 class="accordion-header" id="heading{!! $faq->id !!}">
  435. <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{!! $faq->id !!}" aria-expanded="true" aria-controls="collapse{!! $faq->id !!}">
  436. {!! $faq->question !!}
  437. </button>
  438. </h2>
  439. <div id="collapse{!! $faq->id !!}" class="accordion-collapse collapse" aria-labelledby="heading{!! $faq->id !!}" data-bs-parent="#accordionExample">
  440. <div class="accordion-body">
  441. <p>{!! nl2br($faq->answer) !!}</p>
  442. <div class="text-end">
  443. <a href="javascript:void(0)" data-id="{!! $faq->id !!}" class="edit-faq" style="margin: 0 3px 0 10px"><i class="glyphicon glyphicon-edit"></i></a>
  444. |
  445. <a href="javascript:void(0)" data-id="{!! $faq->id !!}" class="delete-faq" style="color:red"><i class="glyphicon glyphicon-trash"></i></a>
  446. </div>
  447. </div>
  448. </div>
  449. </div>
  450. @endforeach
  451. </div>
  452. @endif
  453. </div>
  454. </div>
  455. </div>
  456. </div>
  457. @endif
  458. @endif
  459. <div class="row">
  460. <div class="col-sm-4 col-md-6">
  461. @if($business_type!="ClothsStore")
  462. <div class="form-group">
  463. <div class="custom-control custom-checkbox">
  464. <input class="custom-control-input" id="is_customized" @if(isset($recipe) && $recipe->is_customized=="1") checked @endif name="is_customized" type="checkbox" />
  465. <label class="custom-control-label" for="is_customized">{{__('label.customizedable')}}</label>
  466. </div>
  467. </div>
  468. @endif
  469. <div class="form-group">
  470. <div class="custom-control custom-checkbox">
  471. <input class="custom-control-input" id="status" @if(isset($recipe) && $recipe->status=="1") checked @endif name="status" type="checkbox" />
  472. <label class="custom-control-label" for="status">{{__('label.active')}}?</label>
  473. </div>
  474. </div>
  475. @if($allow_pre_order=="Yes")
  476. <div class="form-group">
  477. <div class="custom-control custom-checkbox">
  478. <input class="custom-control-input" id="allow_pre_order" @if(isset($recipe) && $recipe->allow_pre_order=="Yes") checked @endif name="allow_pre_order" type="checkbox" />
  479. <label class="custom-control-label" for="allow_pre_order">{{__('label.allow_pre_order')}}?</label>
  480. </div>
  481. </div>
  482. @endif
  483. </div>
  484. </div>
  485. <div class="row">
  486. <div class="col-sm-12">
  487. <a href="#!" class="btn btn-primary save">{{__('label.save')}}</a>
  488. @if( isset($recipe))
  489. <a href="#!" class="btn btn-primary upload-gallery">{{__('label.upload_gallery')}}</a>
  490. @if($business_type!="ClothsStore" )
  491. <a href="#!" class="btn btn-primary add-options">{{__('label.add_extra_options')}}</a>
  492. @endif
  493. @endif
  494. </div>
  495. </div>
  496. <div class="row mt-2">
  497. <div class="col-md-12">
  498. <div class="alert alert-success success"></div>
  499. <div class="alert alert-danger error"></div>
  500. </div>
  501. </div>
  502. </form>
  503. </div>
  504. </div>
  505. </div>
  506. </div>
  507. </section>
  508. </div>
  509. </div>
  510. @if( isset($recipe))
  511. <div class="modal" id="upload-gallery" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  512. <div class="modal-dialog">
  513. <div class="modal-content">
  514. <div class="modal-header">
  515. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.recipe_gallery')}}</h5>
  516. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  517. </div>
  518. <div class="modal-body">
  519. <div class="row">
  520. <div class="col-sm-12 col-md-12">
  521. <div class="form-group">
  522. <label>Gallery</label>
  523. <div class="dropzone dz-clickable" id="gallery">
  524. <div class="dz-default dz-message" data-dz-message="">
  525. <span>{{__('label.drop_files_here_to_upload')}} <br>
  526. <b>(accepted file formats .jpg,.png,.jpeg case sensitive)</b> </span>
  527. </div>
  528. </div>
  529. </div>
  530. </div>
  531. </div>
  532. </div>
  533. <div class="modal-footer">
  534. <button type="button" class="btn btn-primary upload">{{__('label.upload')}}</button>
  535. <button type="button" class="btn btn-secondary" data-dismiss="modal">{{__('label.close')}}</button>
  536. </div>
  537. </div>
  538. </div>
  539. </div>
  540. <div class="modal" id="extra-options" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  541. <div class="modal-dialog modal-lg">
  542. <div class="modal-content">
  543. <div class="modal-header">
  544. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.add_extra_options')}}</h5>
  545. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  546. </div>
  547. <div class="modal-body">
  548. <form id="extra-options-form" method="POST" action="{!! env('APP_URL') !!}save/extra/options">
  549. @csrf
  550. <input type="hidden" name="recipe_id" value="{!! $recipe->id !!}" />
  551. <input type="hidden" name="resto_id" value="{!! $recipe->resto_id !!}" />
  552. <div class="row">
  553. <div class="col-sm-4">
  554. <b>{{__('label.english_name')}}: </b>
  555. <input class="form-control" name="option" placeholder="Name of option" required />
  556. </div>
  557. <div class="col-sm-4">
  558. <b>{{__('label.name_arabic')}}: </b>
  559. <input class="form-control" name="arabic_option" placeholder="Name of option in arabic" required />
  560. </div>
  561. <div class="col-sm-3">
  562. <b>{{__('label.price')}} : </b>
  563. <input class="form-control" name="price" placeholder="Price if it has" />
  564. </div>
  565. </div>
  566. <div class="row">
  567. <div class="col-sm-12 text-right"><a href="#!" class="btn btn-sm btn-danger mt-1 add-extra-items">{{__('label.add_extra_item')}}</a> </div>
  568. </div>
  569. <div id="items-list">
  570. </div>
  571. </form>
  572. </div>
  573. <div class="modal-footer">
  574. <button type="button" class="btn btn-primary save-extra-options">{{__('label.add')}}</button>
  575. <button type="button" class="btn btn-secondary" data-dismiss="modal">{{__('label.close')}}</button>
  576. </div>
  577. </div>
  578. </div>
  579. </div>
  580. <div class="modal" id="edit-extra-option" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  581. <div class="modal-dialog modal-sm">
  582. <div class="modal-content">
  583. <div class="modal-header">
  584. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.edit_option')}}</h5>
  585. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  586. </div>
  587. <div class="modal-body">
  588. <form method="POST" action="{!! env('APP_URL') !!}update/option" id="edit-form">
  589. <input type="hidden" name="id" />
  590. @csrf
  591. <div class="row">
  592. <div class="col-sm-12">
  593. <b>{{__('label.english_name')}} </b>
  594. <input class="form-control" name="option" placeholder="Name of option" required />
  595. </div>
  596. </div>
  597. <div class="row">
  598. <div class="col-sm-12">
  599. <b>{{__('label.name_arabic')}}</b>
  600. <input class="form-control" name="arabic_option" placeholder="Name of option in arabic" />
  601. </div>
  602. </div>
  603. <div class="row">
  604. <div class="col-sm-12">
  605. <b>{{__('label.price')}} </b>
  606. <input class="form-control" name="price" placeholder="Price" />
  607. </div>
  608. </div>
  609. <div class="row">
  610. <div class="col-sm-12">
  611. <br>
  612. <b></b>
  613. <a href="#!" style="margin-top: 2px" class="btn btn-primary update-option">{{__('label.save')}} <i class="fa fa-save"></i> </a>
  614. </div>
  615. </div>
  616. <div class="row mt-2">
  617. <div class="col-md-12">
  618. <div class="alert alert-success success"></div>
  619. <div class="alert alert-danger error"></div>
  620. </div>
  621. </div>
  622. </form>
  623. </div>
  624. <!--
  625. <div class="modal-footer">
  626. <button type="button" class="btn btn-primary save-extra-options">Add</button>
  627. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  628. </div>
  629. -->
  630. </div>
  631. </div>
  632. </div>
  633. <div class="modal" id="extra-option-item" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  634. <div class="modal-dialog modal-lg">
  635. <div class="modal-content">
  636. <div class="modal-header">
  637. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.customized_items_list')}}</h5>
  638. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  639. </div>
  640. <div class="modal-body">
  641. <table class="table table-bordered" id="item-table">
  642. <thead>
  643. <tr>
  644. <th>{{__('label.name')}}</th>
  645. <th>{{__('label.name_arabic')}}</th>
  646. <th>{{__('label.price')}}</th>
  647. <th>{{__('label.iItem_type')}}</th>
  648. <th>{{__('label.customized_sub_items_list')}}</th>
  649. <th></th>
  650. </tr>
  651. </thead>
  652. <tbody>
  653. </tbody>
  654. </table>
  655. </div>
  656. </div>
  657. </div>
  658. </div>
  659. <div class="modal" id="edit-extra-item-option" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  660. <div class="modal-dialog modal-lg">
  661. <div class="modal-content">
  662. <div class="modal-header">
  663. <h5 class="modal-title" id="staticBackdropLabel"><b>{{__('label.edit_item')}}</b> </h5>
  664. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  665. </div>
  666. <div class="modal-body modal-lg">
  667. <form method="POST" action="{!! env('APP_URL') !!}update/item" id="edit-item-form">
  668. <input type="hidden" name="id" />
  669. @csrf
  670. <div class="row">
  671. <div class="col-sm-12">
  672. <b>{{__('label.english_name')}}: </b>
  673. <input class="form-control" name="option" placeholder="Name of Item" required />
  674. </div>
  675. </div>
  676. <div class="row">
  677. <div class="col-sm-12">
  678. <b><br>{{__('label.name_arabic')}}: </b>
  679. <input class="form-control" name="name_arabic" placeholder="Name of option in arabic" required />
  680. <br>
  681. </div>
  682. </div>
  683. <div class="row">
  684. <div class="col-sm-12">
  685. <b>{{__('label.price')}}: </b>
  686. <input class="form-control" name="price" placeholder="Price" />
  687. </div>
  688. </div>
  689. <div class="row">
  690. <div class="col-sm-12">
  691. <br><select class="form-control" name="item_type">
  692. <option value="">{{__('label.choose_button_type')}}</option>
  693. <option value="option">{{__('label.option_button')}}</option>
  694. <option value="check-box">{{__('label.checkbox')}}</option>
  695. </select>
  696. </div>
  697. <br>
  698. </div>
  699. <div class="row">
  700. <div class="col-sm-12">
  701. <br><a href="#!" style="margin-top: 2px" class="btn btn-primary update-item">{{__('label.save')}} <i class="fa fa-save"></i> </a>
  702. </div><br>
  703. </div>
  704. <div class="row mt-2">
  705. <div class="col-md-12">
  706. <div class="alert alert-success success"></div>
  707. <div class="alert alert-danger error"></div>
  708. </div>
  709. </div>
  710. </form>
  711. </div>
  712. </div>
  713. </div>
  714. </div>
  715. <div class="modal" id="mandatory-extra-item-option" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  716. <div class="modal-dialog">
  717. <div class="modal-content">
  718. <div class="modal-header">
  719. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.make_mandatory_options')}}</h5>
  720. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  721. </div>
  722. <div class="modal-body">
  723. <form method="POST" action="{!! env('APP_URL') !!}update/mandatory/item" id="mandatory-item-form">
  724. <input type="hidden" name="id" />
  725. @csrf
  726. <div class="row">
  727. <div class="col-sm-10">
  728. <input class="form-control" type="number" name="mandatory_amount" placeholder="Enter quantity of items" required />
  729. </div>
  730. <div class="col-sm-1">
  731. <a href="#!" style="margin-top: 2px" class="btn btn-sm btn-success make-mandatory-item"><i class="fa fa-save"></i> </a>
  732. </div>
  733. </div>
  734. <div class="row mt-2">
  735. <div class="col-md-12">
  736. <div class="alert alert-success success"></div>
  737. <div class="alert alert-danger error"></div>
  738. </div>
  739. </div>
  740. </form>
  741. </div>
  742. </div>
  743. </div>
  744. </div>
  745. <div class="modal" id="add-new-items" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  746. <div class="modal-dialog modal-lg">
  747. <div class="modal-content">
  748. <div class="modal-header">
  749. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.add_more_items')}}</h5>
  750. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  751. </div>
  752. <div class="modal-body">
  753. <form id="extra-items-form" method="POST" action="{!! env('APP_URL') !!}save/add/items">
  754. @csrf
  755. <input type="hidden" name="extra_option_id"/>
  756. <input type="hidden" name="parent_id" />
  757. <div class="row">
  758. <div class="col-sm-12 text-right"><a href="#!" class="btn btn-sm btn-danger mt-1 add-extra-items-2">{{__('label.add_extra_item')}}</a> </div>
  759. </div>
  760. <div id="items-list-2">
  761. <div class="row" style="margin-top: 10px">
  762. <div class="col-sm-3">
  763. <input class="form-control" name="item_name[]" placeholder="Name of item">
  764. </div>
  765. <div class="col-sm-3">
  766. <input class="form-control" name="item_name_arabic[]" placeholder="Name of item in Arabic">
  767. </div>
  768. <div class="col-sm-3">
  769. <select class="form-control" name="item_type[]"><option value="option">{{__('label.option_button')}}</option><option value="check-box">{{__('label.checkbox')}}</option> </select>
  770. </div>
  771. <div class="col-sm-2">
  772. <input class="form-control" name="item_price[]" placeholder="Price if it has">
  773. </div>
  774. </div>
  775. </div>
  776. </form>
  777. </div>
  778. <div class="modal-footer">
  779. <button type="button" class="btn btn-primary save-extra-items">{{__('label.add_items')}}</button>
  780. <button type="button" class="btn btn-secondary" data-dismiss="modal">{{__('label.close')}}</button>
  781. </div>
  782. </div>
  783. </div>
  784. </div>
  785. <div class="modal" id="add-new-faq" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  786. <div class="modal-dialog">
  787. <div class="modal-content">
  788. <div class="modal-header">
  789. <h5 class="modal-title" id="staticBackdropLabel">{{__('label.add_faq')}}</h5>
  790. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  791. </div>
  792. <div class="modal-body">
  793. <form id="faq-form" method="POST" action="{!! env('APP_URL') !!}save/faq">
  794. @csrf
  795. <input type="hidden" name="id" />
  796. <input type="hidden" name="product_id" value="{!! $recipe->id !!}" />
  797. <div class="form-group">
  798. <label>{{__('label.question')}}</label>
  799. <!-- <input type="text" name="question" required class="form-control" />-->
  800. <textarea row="2" style="height: 200px !important" name="question" required class="form-control"></textarea>
  801. </div>
  802. <div class="form-group">
  803. <label>{{__('label.answer')}}</label>
  804. <textarea row="4" style="height: 200px !important" name="answer" required class="form-control"></textarea>
  805. </div>
  806. </form>
  807. </div>
  808. <div class="modal-footer">
  809. <button type="button" class="btn btn-primary save-faq">{{__('label.add')}}</button>
  810. <button type="button" class="btn btn-secondary" data-dismiss="modal">{{__('label.close')}}</button>
  811. </div>
  812. </div>
  813. </div>
  814. </div>
  815. @endif
  816. @endsection
  817. @section('js')
  818. <script src="{!! env('APP_ASSETS') !!}vendor_components/dropzone/dist/min/dropzone.min.js"></script>
  819. <script src="{!! env('APP_ASSETS') !!}vendor_components/select2/dist/js/select2.min.js"></script>
  820. <script src="{!! env('APP_ASSETS') !!}vendor_components/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js"></script>
  821. <script>
  822. var spinner = '<span class="spinner-border" role="status" aria-hidden="true"></span>';
  823. Dropzone.autoDiscover = false;
  824. var extra_option_id = 0;
  825. var _image_is_required = "required";
  826. var color_option = "color";
  827. color_option=$("select[name=color_option]").val();
  828. $(function () {
  829. @if(isset($recipe))
  830. $("body").on("change","select[name=color_option]",function(){
  831. var _existing = "{!! $recipe->color_option !!}";
  832. var _this_value = $(this).val();
  833. if(_existing!=_this_value){
  834. alert("{{__('label.color_setting_will_be_reset')}}");
  835. }
  836. color_option = _this_value;
  837. if(_this_value=="color_image"){
  838. _image_is_required = "required";
  839. }else{
  840. _image_is_required = "";
  841. $(".color-image-file").remove();
  842. }
  843. });
  844. @endif
  845. $("body").on("click",".delete-color",function(){
  846. var _id = $(this).data('id');
  847. var _this = $(this);
  848. if(confirm("Do you want to delete?")){
  849. $.ajax({
  850. type:"POST",
  851. url:"{!! env('APP_URL') !!}delete/color-image",
  852. data:{
  853. "id":_id,
  854. "_token":"{!! csrf_token() !!}"
  855. },
  856. success:function(){
  857. _this.parents("tr").remove();
  858. }
  859. });
  860. }
  861. });
  862. $("body").on("click",".delete-faq",function(){
  863. var _id = $(this).data('id');
  864. //alert(_id);
  865. var _this = $(this);
  866. if(confirm("Do you want to delete?")){
  867. $.ajax({
  868. type:"POST",
  869. url:"{!! env('APP_URL') !!}delete/faq",
  870. data:{
  871. "id":_id,
  872. "_token":"{!! csrf_token() !!}"
  873. },
  874. success:function(){
  875. _this.parents(".accordion-item").remove();
  876. }
  877. });
  878. }
  879. });
  880. $("body").on("click",".edit-faq",function(){
  881. var _id = $(this).data('id');
  882. $("#faq-form input[name=id]").val(_id);
  883. var _content = $(this).parents(".accordion-body").find('p').text();
  884. var _question = $(this).parents(".accordion-item").find('.accordion-button').text();
  885. $("#faq-form textarea[name=question]").val($.trim(_question));
  886. $("#faq-form textarea[name=answer]").val(_content);
  887. $("#add-new-faq").modal('show');
  888. });
  889. $("body").on("click",".save-faq",function(){
  890. if($("#faq-form").valid()){
  891. $("#faq-form").ajaxForm(function(response){
  892. location.reload();
  893. }).submit();
  894. }
  895. });
  896. $("body").on("click",".add-faq",function(){
  897. $("#add-new-faq").modal('show');
  898. });
  899. @if($business_type=="ClothsStore")
  900. var colors = [
  901. @foreach(\App\Models\Colors::groupBy('color_code')->get() as $color)
  902. {
  903. id:"{!! $color->color_code !!}",
  904. text:"{!! $color->color_name !!}",
  905. html:'<div class="row" style="margin:0"><div style="width: 20px; height: 20px; background-color: {!! $color->color_code !!}; float: left; border-radius: 20px;"></div><div style="float: right; width: 250px">{!! addslashes($color->color_name) !!}</div></div>',
  906. },
  907. @endforeach
  908. ];
  909. function color_template(colors) {
  910. return colors.html;
  911. }
  912. function return_color_row(value){
  913. var str = "";
  914. $(value).each(function(i,v){
  915. str += '<tr>';
  916. str+='<td><div style="width: 20px; height: 20px; background-color: '+v+'; float: left; border-radius: 20px;"></div></td>';
  917. if(color_option=="color_image")
  918. str+='<td><input name="color_image['+v+']" type="file" class="form-control color-image-file" required />';
  919. str+='</tr>';
  920. });
  921. return str;
  922. }
  923. $("#color").select2({
  924. data: colors,
  925. templateResult: color_template,
  926. escapeMarkup: function(m) {
  927. return m;
  928. }
  929. }).on('change',function(){
  930. var _value = $(this).val();
  931. var rows = return_color_row(_value);
  932. $("#color-table tbody").html(rows);
  933. });;
  934. $("#size").select2();
  935. @endif
  936. $("body").on("click",".remove-image",function(){
  937. var id = $(this).data('recipe-id');
  938. var _this = $(this);
  939. $.ajax({
  940. url:"{!! env('APP_URL') !!}remove/recipe/main-image",
  941. type:"POST",
  942. data:{
  943. id:id,
  944. '_token':"{!! csrf_token() !!}"
  945. },
  946. success:function(){
  947. _this.parents('.main-cover-image').find("#image-preview").removeAttr('style');
  948. }
  949. });
  950. });
  951. $.uploadPreview({
  952. input_field: "#image-upload", // Default: .image-upload
  953. preview_box: "#image-preview", // Default: .image-preview
  954. label_field: "#image-label", // Default: .image-label
  955. label_default: "Choose File", // Default: Choose File
  956. label_selected: "Change File", // Default: Change File
  957. no_label: true ,
  958. success_callback: function() {
  959. }// Default: false
  960. });
  961. $("#image-upload").on("change",function(e){
  962. var _current_file = (e.currentTarget.files[0]);
  963. var filesize = ((_current_file.size/1024)/1024).toFixed(2);
  964. if(filesize>2.4){
  965. swal({title:"Image Size error",text:"You are exceeding from 2.4MB maximum size, your file size is "+filesize+" MB"},function(){
  966. $("#image-preview").removeAttr('style');
  967. $("#image-upload").val('');
  968. });
  969. return false;
  970. }else{
  971. var reader = new FileReader();
  972. reader.readAsDataURL(_current_file);
  973. reader.onload = function (e) {
  974. //Initiate the JavaScript Image object.
  975. var image = new Image();
  976. //Set the Base64 string return from FileReader as source.
  977. image.src = e.target.result;
  978. //Validate the File Height and Width.
  979. image.onload = function () {
  980. var height = this.height;
  981. var width = this.width;
  982. if (height > 1280 || width > 1980) {
  983. // swal({title:"Image Dimensions error",text:"You are exceeding from dimension limit (1920 x 1280), your current dimensions are width: "+width+"px and height: "+height+"px"},function(){
  984. // $("#image-preview").removeAttr('style');
  985. // $("#image-upload").val('');
  986. // });
  987. // return false;
  988. }
  989. };
  990. }
  991. }
  992. });
  993. $(".custom-select").select2();
  994. $("body").on("click",".make-mandatory-item",function () {
  995. $(".alert").hide();
  996. if($("#mandatory-item-form").valid()){
  997. $("#mandatory-item-form").ajaxForm(function (response) {
  998. response = $.parseJSON(response);
  999. if(response){
  1000. if(response.type=="success"){
  1001. $('#mandatory-item-form .alert.success').html(response.message);
  1002. $('#mandatory-item-form .alert.success').show();
  1003. setTimeout(function(){
  1004. location.reload();
  1005. },2000)
  1006. }else{
  1007. $('#mandatory-item-form .alert.error').html(response.message);
  1008. $('#mandatory-item-form .alert.error').show();
  1009. }
  1010. }
  1011. }).submit();
  1012. }
  1013. });
  1014. $("body").on("click",".is_mandatory",function () {
  1015. var id = $(this).data('id');
  1016. if($(this).is(":checked")){
  1017. $("#mandatory-extra-item-option").modal('show');
  1018. $("#mandatory-extra-item-option input[name=id]").val(id);
  1019. }else{
  1020. if(confirm("Do you want disable this option?")){
  1021. $.ajax({
  1022. url:"{!! env('APP_URL') !!}remove/mandatory/"+id,
  1023. success:function () {
  1024. location.reload();
  1025. }
  1026. });
  1027. }else{
  1028. return false;
  1029. }
  1030. }
  1031. });
  1032. $("body").on('click','.save',function () {
  1033. var _this = $(this);
  1034. if($("#restaurant-form").valid()){
  1035. _this.removeClass('save');;
  1036. _this.html(spinner);
  1037. //return false;
  1038. $("#restaurant-form").ajaxForm(function (response) {
  1039. //_this.removeAttr('disabled');
  1040. response = $.parseJSON(response);
  1041. if(response){
  1042. if(response.type=="success"){
  1043. $('#restaurant-form .alert.success').html(response.message);
  1044. $('#restaurant-form .alert.success').show();
  1045. setTimeout(function(){
  1046. //window.location = '{!! env('APP_URL') !!}recipes';
  1047. location.reload();
  1048. },2000)
  1049. }else{
  1050. $('#restaurant-form .alert.error').html(response.message);
  1051. $('#restaurant-form .alert.error').show();
  1052. }
  1053. }
  1054. }).submit();
  1055. }
  1056. });
  1057. @if( isset($recipe))
  1058. $("body").on("click",".upload-gallery",function () {
  1059. $("#upload-gallery").modal('show');
  1060. });
  1061. $("body").on("click",".add-options",function () {
  1062. $("#extra-options").modal('show');
  1063. });
  1064. $("body").on("click",".add-new-items",function () {
  1065. var id = $(this).data('id');
  1066. $("input[name=extra_option_id]").val(id);
  1067. $("#add-new-items").modal('show');
  1068. });
  1069. $("body").on("click",".add-sub-item",function () {
  1070. var id = $(this).data('id');
  1071. var extra_option_id = $(this).data('extra-option-id');
  1072. $("input[name=parent_id]").val(id);
  1073. $("input[name=extra_option_id]").val(extra_option_id);
  1074. $("#add-new-items").modal('show');
  1075. });
  1076. $("body").on("click",".add-extra-items",function () {
  1077. var new_item = add_new_item();
  1078. $("#items-list").append(new_item);
  1079. });
  1080. $("body").on("click",".add-extra-items-2",function () {
  1081. var new_item = add_new_item();
  1082. $("#items-list-2").append(new_item);
  1083. });
  1084. $("body").on("click",".delete-item",function () {
  1085. var _this = $(this);
  1086. var id = $(this).data('id');
  1087. $.ajax({
  1088. url:"{!! env('APP_URL') !!}extra/item/delete/"+id,
  1089. success:function (response) {
  1090. _this.parent().parent().remove();
  1091. }
  1092. });
  1093. });
  1094. $("body").on("click",".delete-new-item",function () {
  1095. $(this).parent().parent().remove();
  1096. });
  1097. $("body").on("click",".delete-option",function () {
  1098. var _this = $(this);
  1099. var id = $(this).data('id');
  1100. $.ajax({
  1101. url:"{!! env('APP_URL') !!}extra/option/delete/"+id,
  1102. success:function (response) {
  1103. _this.parent().parent().remove();
  1104. }
  1105. });
  1106. //
  1107. });
  1108. $("body").on("click",".update-option",function () {
  1109. if($("#edit-form").valid()){
  1110. $("#edit-form").ajaxForm(function (response) {
  1111. location.reload();
  1112. }).submit();
  1113. }
  1114. });
  1115. $("body").on("click",".update-item",function () {
  1116. if($("#edit-item-form").valid()){
  1117. $("#edit-item-form").ajaxForm(function (response) {
  1118. var id = extra_option_id;
  1119. $.ajax({
  1120. url:"{!! env('APP_URL') !!}view/items/"+id,
  1121. success:function (response) {
  1122. response = response.data;
  1123. var row = "";
  1124. $.each(response,function (i,v) {
  1125. row+=show_item(v);
  1126. });
  1127. $("#item-table > tbody").html(row);
  1128. $("#edit-extra-item-option").modal('hide');
  1129. }
  1130. });
  1131. }).submit();
  1132. }
  1133. });
  1134. $("body").on("click",".edit-option",function () {
  1135. var id = $(this).data('id');
  1136. $.ajax({
  1137. url:"{!! env('APP_URL') !!}edit/option/"+id,
  1138. success:function (response) {
  1139. response = response.data;
  1140. $("#edit-form input[name=id]").val(response.id);
  1141. $("#edit-form input[name=option]").val(response.name);
  1142. $("#edit-form input[name=arabic_option]").val(response.name_arabic);
  1143. $("#edit-form input[name=price]").val(response.price);
  1144. $("#edit-extra-option").modal('show');
  1145. }
  1146. });
  1147. });
  1148. $("body").on("click",".edit-item",function () {
  1149. var id = $(this).data('id');
  1150. $.ajax({
  1151. url:"{!! env('APP_URL') !!}edit/item/"+id,
  1152. success:function (response) {
  1153. response = response.data;
  1154. $("#edit-item-form input[name=id]").val(response.id);
  1155. $("#edit-item-form input[name=item_type]").val(response.item_type);
  1156. $("#edit-item-form input[name=option]").val(response.name);
  1157. $("#edit-item-form input[name=name_arabic]").val(response.name_arabic);
  1158. $("#edit-item-form input[name=price]").val(response.price);
  1159. $("#edit-extra-item-option").modal('show');
  1160. }
  1161. });
  1162. });
  1163. $("body").on("click",".view-items",function () {
  1164. var id = $(this).data('id');
  1165. extra_option_id = id;
  1166. $.ajax({
  1167. url:"{!! env('APP_URL') !!}view/items/"+id,
  1168. success:function (response) {
  1169. response = response.data;
  1170. var row = "";
  1171. $.each(response,function (i,v) {
  1172. row+=show_item(v);
  1173. });
  1174. $("#item-table > tbody").html(row);
  1175. $("#extra-option-item").modal('show');
  1176. }
  1177. });
  1178. });
  1179. $("body").on("click",".save-extra-options",function () {
  1180. if($("#extra-options-form").valid()){
  1181. $("#extra-options-form").ajaxForm(function (response) {
  1182. response = $.parseJSON(response);
  1183. if(response){
  1184. if(response.type=="success"){
  1185. $('#extra-options .alert.success').html(response.message);
  1186. $('#extra-options .alert.success').show();
  1187. setTimeout(function(){
  1188. window.location.reload();
  1189. },2000)
  1190. }else{
  1191. $('#extra-options .alert.error').html(response.message);
  1192. $('#extra-options .alert.error').show();
  1193. }
  1194. }
  1195. }).submit();
  1196. }
  1197. });
  1198. $("body").on("click",".save-extra-items",function () {
  1199. if($("#extra-items-form").valid()){
  1200. $("#extra-items-form").ajaxForm(function (response) {
  1201. response = $.parseJSON(response);
  1202. if(response){
  1203. if(response.type=="success"){
  1204. $('#extra-items-form .alert.success').html(response.message);
  1205. $('#extra-items-form .alert.success').show();
  1206. setTimeout(function(){
  1207. window.location.reload();
  1208. },2000)
  1209. }else{
  1210. $('#extra-items-form .alert.error').html(response.message);
  1211. $('#extra-items-form .alert.error').show();
  1212. }
  1213. }
  1214. }).submit();
  1215. }
  1216. });
  1217. var gallery = new Dropzone("div#gallery",
  1218. {
  1219. paramName: "files", // The name that will be used to transfer the file
  1220. addRemoveLinks: true,
  1221. uploadMultiple: true,
  1222. autoProcessQueue: false,
  1223. parallelUploads: 50,
  1224. maxFilesize: 5, // MB
  1225. acceptedFiles: ".png, .jpeg, .jpg, .JPG, .JPEG, .PNG,",
  1226. url: "{!! env('APP_URL') !!}upload/gallery/recipe",
  1227. });
  1228. gallery.on("sending", function(file, xhr, formData) {
  1229. var filenames = [];
  1230. $('.dz-preview .dz-filename').each(function() {
  1231. filenames.push($(this).find('span').text());
  1232. });
  1233. formData.append('filenames', filenames);
  1234. formData.append('_token','{!! csrf_token() !!}');
  1235. formData.append('recipe_id',"{!! $recipe->id !!}");
  1236. });
  1237. /* Add Files Script*/
  1238. gallery.on("success", function(file, message){
  1239. $("#msg").html(message);
  1240. //setTimeout(function(){window.location.href="index.php"},200);
  1241. });
  1242. gallery.on("error", function (data) {
  1243. $("#msg").html('<div class="alert alert-danger">{{__("label.there_is_some_thing_wrong")}}</div>');
  1244. });
  1245. gallery.on("complete", function(file) {
  1246. gallery.removeFile(file);
  1247. location.reload();
  1248. });
  1249. $(".upload").on("click",function (e){
  1250. gallery.processQueue();
  1251. e.preventDefault();
  1252. });
  1253. $("body").on("click",".delete-image",function () {
  1254. var _this = $(this);
  1255. var id = $(this).data('id');
  1256. $.ajax({
  1257. url:"{!! env('APP_URL') !!}delete/image/"+id+"?type=recipe",
  1258. success:function (response) {
  1259. _this.parents(".gallery").remove();
  1260. }
  1261. });
  1262. });
  1263. $("body").on("click",".delete-image",function () {
  1264. var _this = $(this);
  1265. var id = $(this).data('id');
  1266. $.ajax({
  1267. url:"{!! env('APP_URL') !!}delete/image/"+id+"?type=recipe",
  1268. success:function (response) {
  1269. _this.parents(".gallery").remove();
  1270. }
  1271. });
  1272. });
  1273. @endif
  1274. });
  1275. function add_new_item() {
  1276. return '<div class="row" style="margin-top: 10px">\n' +
  1277. ' <div class="col-sm-3">\n' +
  1278. ' <input class="form-control" name="item_name[]" placeholder="Name of item">\n' +
  1279. ' </div>\n' +
  1280. ' <div class="col-sm-3">\n' +
  1281. ' <input class="form-control" name="item_name_arabic[]" placeholder="Name of item">\n' +
  1282. ' </div>\n' +
  1283. '<div class="col-sm-3">\n' +
  1284. ' <select class="form-control" name="item_type[]">' +
  1285. '<option value="option">Option Button</option>' +
  1286. '<option value="check-box">Checkbox</option> </select>\n' +
  1287. ' </div>\n' +
  1288. ' <div class="col-sm-2">\n' +
  1289. ' <input class="form-control" name="item_price[]" placeholder="Price if it has">\n' +
  1290. ' </div>\n' +
  1291. ' <div class="col-sm-1">\n' +
  1292. ' <a href="#!" class="delete-new-item btn btn-sm btn-danger" style="margin-top: 3px"><i class="glyphicon glyphicon-trash"></i> </a> \n' +
  1293. ' </div>\n' +
  1294. ' </div>'
  1295. }
  1296. function show_item(item) {
  1297. var str = "<tr>";
  1298. str+='<td>'+item.name+'</td>';
  1299. str+='<td>'+item.name_arabic+'</td>';
  1300. str+='<td>'+item.price+'</td>';
  1301. str+='<td>'+(item.item_type?item.item_type:"")+'</td>';
  1302. str+='<td>';
  1303. var list = "";
  1304. if(item.childern){
  1305. if(item.childern.length > 0){
  1306. list = '<ul class="list-group">';
  1307. $.each(item.childern,function (i,v) {
  1308. list += '<li class="list-group-item d-flex justify-content-between align-items-center"><a href="#!" class="edit-item" data-id="'+v.id+'"> '+v.name+'</a>' +
  1309. '<span class="badge badge-primary badge-pill">'+v.price+'</span>' +
  1310. '</li>';
  1311. });
  1312. list += "</ul>";
  1313. }
  1314. }
  1315. str+=list;
  1316. str+='</td>';
  1317. str+='<td>' +
  1318. '<a href="#!" class="btn btn-sm btn-primary edit-item" data-id="'+item.id+'" data-toggle="tooltip" data-placement="top" title="Edit"><i class="glyphicon glyphicon-edit"></i> </a>'+
  1319. ' <a href="javascript:;" data-id="'+item.id+'" class="btn btn-sm btn-danger delete-item"><i class="glyphicon glyphicon-trash" data-toggle="tooltip" data-placement="top" title="Delete"></i></a>'+
  1320. // ' <a href="javascript:;" data-id="'+item.id+'" data-extra-option-id="'+item.extra_option_id+'" class="btn btn-sm btn-warning add-sub-item"><i class="glyphicon glyphicon-th-list" data-toggle="tooltip" data-placement="top" title="Add sub items"></i></a>'
  1321. '</td>';
  1322. str+='</tr>';
  1323. return str;
  1324. }
  1325. </script>
  1326. @endsection