recipe_form.blade.php_1 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054
  1. @extends('layouts.app')
  2. @section('css')
  3. <link href="{!! env('APP_ASSETS') !!}vendor_components/dropzone/dist/dropzone.css" rel="stylesheet">
  4. @endsection
  5. @section('content')
  6. <style>
  7. .alert{
  8. display: none;
  9. }
  10. .container-full,.content-wrapper{
  11. background-color: transparent !important;
  12. }
  13. .card-header{
  14. display: inline-block;
  15. }
  16. #image-preview {
  17. width: 700px;
  18. border-radius: 20px;
  19. height: 341px;
  20. position: relative;
  21. overflow: hidden;
  22. background-color: #f9f9f9;
  23. color: #ecf0f1;
  24. background-position: center !important;
  25. background-size: cover !important;
  26. }
  27. #image-preview input {
  28. line-height: 200px;
  29. font-size: 200px;
  30. position: absolute;
  31. opacity: 0;
  32. z-index: 10;
  33. }
  34. #image-preview label {
  35. position: absolute;
  36. z-index: 5;
  37. opacity: 0.8;
  38. cursor: pointer;
  39. background-color: #bdc3c7;
  40. width: 200px;
  41. height: 50px;
  42. font-size: 20px;
  43. line-height: 50px;
  44. text-transform: uppercase;
  45. top: 0;
  46. left: 0;
  47. right: 0;
  48. bottom: 0;
  49. margin: auto;
  50. text-align: center;
  51. }
  52. .form-control, .form-select {
  53. height: 46px !important;
  54. border-color: #E4E6EB !important;
  55. border-radius: 7px !important;
  56. }
  57. </style>
  58. <div class="content-wrapper">
  59. <div class="container-full">
  60. <section class="content">
  61. <div class="row">
  62. <div class="col-xl-12">
  63. <div class="card mb-4">
  64. <div class="card-header">
  65. <i class="fa fa-plus mr-1"></i>
  66. @if(isset($recipe))
  67. Edit {!! $recipe->name !!}
  68. @else
  69. New Recipe
  70. @endif
  71. </div>
  72. <div class="card-body">
  73. <form id="restaurant-form" method="POST" action="{!! env('APP_URL') !!}recipe/save" enctype="multipart/form-data">
  74. @csrf
  75. <input type="hidden" name="id" value="{!! isset($recipe)?$recipe->id:'' !!}" />
  76. <div class="row mb-4 main-cover-image">
  77. <div class="col-sm-12">
  78. <p style="font-size: 14px">Cover Image</p>
  79. <div id="image-preview" @if(isset($recipe) && isset($recipe->main_images) && !empty($recipe->main_images->file_name)) style="background: url({!! $recipe->main_images->file_name !!})" @endif>
  80. <label for="image-upload" id="image-label">Choose File</label>
  81. <input type="file" name="main_image" id="image-upload" />
  82. </div>
  83. @if(isset($recipe) && isset($recipe->main_images) && !empty($recipe->main_images->file_name))
  84. <a href="#!" class="text-center text-danger remove-image" data-recipe-id="{!! isset($recipe)?$recipe->id:'' !!}">Remove Image</a>
  85. @endif
  86. </div>
  87. </div>
  88. <div class="row">
  89. <div class="col-sm-4 col-md-6">
  90. <div class="form-group">
  91. <label>Name</label>
  92. <input type="text" class="form-control" placeholder="" name="name" value="{!! isset($recipe)?$recipe->name:'' !!}" required>
  93. </div>
  94. </div>
  95. </div>
  96. <div class="row">
  97. <div class="col-sm-4 col-md-6">
  98. <div class="form-group">
  99. <label>Arabic Name</label>
  100. <input type="text" class="form-control" placeholder="" name="arabic_name" value="{!! isset($recipe)?$recipe->arabic_name:'' !!}" required>
  101. </div>
  102. </div>
  103. </div>
  104. @php
  105. $c = [];
  106. if(isset($recipe)){
  107. $c = $recipe->categories->pluck('category_id')->toArray();
  108. }
  109. @endphp
  110. <div class="row">
  111. <div class="col-sm-4 col-md-6">
  112. <div class="form-group">
  113. <label>Category</label>
  114. <select class="custom-select" name="category[]" multiple>
  115. <option value="">Select Category</option>
  116. @if(isset($categories) && $categories->count() > 0)
  117. @foreach($categories as $category)
  118. <option value="{!! $category->id !!}" @if(isset($recipe) && in_array($category->id,$c)) selected @endif>{!! $category->name !!}</option>
  119. @endforeach
  120. @endif
  121. </select>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="row">
  126. <div class="col-sm-4 col-md-4">
  127. <div class="form-group">
  128. <label>Price</label>
  129. <input type="number" class="form-control" placeholder="" name="price" value="{!! isset($recipe)?$recipe->price:'' !!}" required>
  130. </div>
  131. </div>
  132. <div class="col-sm-4 col-md-4" style="margin-top:2.2rem">
  133. <div class="form-group">
  134. <label style="visibility: hidden;">Price</label>
  135. @if(isset($recipe))
  136. <input type="checkbox" id="basic_checkbox_2" class="filled-in" name="show_recipe_main_price" @if($recipe->show_recipe_main_price==1) checked @endif>
  137. <label for="basic_checkbox_2">Show Recipe Price</label>
  138. @else
  139. <input type="checkbox" id="basic_checkbox_2" class="filled-in" name="show_recipe_main_price">
  140. <label for="basic_checkbox_2">Show Recipe Pricec</label>
  141. @endif
  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. <label>Description</label>
  149. <textarea class="form-control" placeholder="" name="short_description">{!! isset($recipe)?$recipe->short_description:'' !!}</textarea>
  150. </div>
  151. </div>
  152. </div>
  153. <div class="row">
  154. <div class="col-sm-4 col-md-6">
  155. <div class="form-group">
  156. <label>Gallery</label>
  157. </div>
  158. @if(isset($recipe) && isset($recipe->galleries))
  159. <div class="row mb-2">
  160. @foreach($recipe->galleries as $gallery)
  161. <div class="col-sm-2 gallery">
  162. <div class="mb-1" style="width: 100px; height: 100px; background-image: url({!! $gallery->file_name !!}); background-position: center; background-size: contain">
  163. </div>
  164. <div class="text-center">
  165. <a href="#!" class="delete-image" data-id="{!! $gallery->id !!}"><i class="fa fa-trash-alt"></i> </a>
  166. </div>
  167. </div>
  168. @endforeach
  169. </div>
  170. @endif
  171. </div>
  172. </div>
  173. @if(isset($recipe->extra_options) && $recipe->extra_options->count() > 0)
  174. <h3>Extra Options</h3>
  175. <hr />
  176. <div class="row">
  177. <div class="col-sm-6 col-md-8">
  178. <table class="table table-bordered">
  179. <thead>
  180. <tr>
  181. <th>Option Name</th>
  182. <th>Price</th>
  183. <th>Items</th>
  184. <th>Is Mandatory?</th>
  185. <th></th>
  186. </tr>
  187. </thead>
  188. <tbody>
  189. @foreach($recipe->extra_options as $option)
  190. <tr>
  191. <td>{!! $option->name !!}</td>
  192. <td>{!! $option->price !!}</td>
  193. <td>
  194. @if(isset($option->extra_option_items) && $option->extra_option_items->count() > 0)
  195. <a href="#!" class="badge badge-success view-items" data-id="{!! $option->id !!}" >{!! $option->extra_option_items->count() !!}</a>
  196. @endif
  197. <a href="#!" class="badge badge-danger add-new-items" data-id="{!! $option->id !!}"><i class="glyphicon glyphicon-plus"></i> </a>
  198. </td>
  199. <td>
  200. @if(isset($option->extra_option_items) && $option->extra_option_items->count() > 0)
  201. <input type="checkbox" class="is_mandatory" @if($option->is_mandatory==1) checked @endif value="" data-id="{!! $option->id !!}" />
  202. @if($option->is_mandatory==1) User can select <span class="badge badge-success">{!! $option->mandatory_amount !!}</span> items must @endif
  203. @endif
  204. </td>
  205. <td>
  206. <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>
  207. <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>
  208. </td>
  209. </tr>
  210. @endforeach
  211. </tbody>
  212. </table>
  213. </div>
  214. </div>
  215. @endif
  216. <div class="row">
  217. <div class="col-sm-4 col-md-6">
  218. <div class="form-group">
  219. <div class="custom-control custom-checkbox">
  220. <input class="custom-control-input" id="is_customized" @if(isset($recipe) && $recipe->is_customized=="1") checked @endif name="is_customized" type="checkbox" />
  221. <label class="custom-control-label" for="is_customized">Customizedable</label>
  222. </div>
  223. </div>
  224. <div class="form-group">
  225. <div class="custom-control custom-checkbox">
  226. <input class="custom-control-input" id="status" @if(isset($recipe) && $recipe->status=="1") checked @endif name="status" type="checkbox" />
  227. <label class="custom-control-label" for="status">Active?</label>
  228. </div>
  229. </div>
  230. </div>
  231. </div>
  232. <div class="row">
  233. <div class="col-sm-12">
  234. <a href="#!" class="btn btn-primary save">Save</a>
  235. @if( isset($recipe))
  236. <a href="#!" class="btn btn-primary upload-gallery">Upload Gallery</a>
  237. <a href="#!" class="btn btn-primary add-options">Add Extra Options</a>
  238. @endif
  239. </div>
  240. </div>
  241. <div class="row mt-2">
  242. <div class="col-md-12">
  243. <div class="alert alert-success success"></div>
  244. <div class="alert alert-danger error"></div>
  245. </div>
  246. </div>
  247. </form>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. </section>
  253. </div>
  254. </div>
  255. <div class="container-fluid">
  256. <h1 class="mt-4">Recipe</h1>
  257. <ol class="breadcrumb mb-4">
  258. <li class="breadcrumb-item"><a href="{!! env('APP_URL') !!}dashboard">Dashboard</a></li>
  259. <li class="breadcrumb-item active"> @if(isset($recipe)) Edit Recipe @else New Recipe @endif</li>
  260. </ol>
  261. <div class="row">
  262. <div class="col-xl-12">
  263. <div class="card mb-4">
  264. <div class="card-header">
  265. <i class="fas fa-plus mr-1"></i>
  266. </div>
  267. <div class="card-body">
  268. </div>
  269. </div>
  270. </div>
  271. </div>
  272. </div>
  273. @if( isset($recipe))
  274. <div class="modal" id="upload-gallery" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  275. <div class="modal-dialog">
  276. <div class="modal-content">
  277. <div class="modal-header">
  278. <h5 class="modal-title" id="staticBackdropLabel">Recipe Gallery</h5>
  279. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  280. </div>
  281. <div class="modal-body">
  282. <div class="row">
  283. <div class="col-sm-12 col-md-12">
  284. <div class="form-group">
  285. <label>Gallery</label>
  286. <div class="dropzone dz-clickable" id="gallery">
  287. <div class="dz-default dz-message" data-dz-message="">
  288. <span>Drop files here to upload</span>
  289. </div>
  290. </div>
  291. </div>
  292. </div>
  293. </div>
  294. </div>
  295. <div class="modal-footer">
  296. <button type="button" class="btn btn-primary upload">Upload</button>
  297. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  298. </div>
  299. </div>
  300. </div>
  301. </div>
  302. <div class="modal" id="extra-options" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  303. <div class="modal-dialog">
  304. <div class="modal-content">
  305. <div class="modal-header">
  306. <h5 class="modal-title" id="staticBackdropLabel">Order Detail</h5>
  307. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  308. </div>
  309. <div class="modal-body">
  310. <form id="extra-options-form" method="POST" action="{!! env('APP_URL') !!}save/extra/options">
  311. @csrf
  312. <input type="hidden" name="recipe_id" value="{!! $recipe->id !!}" />
  313. <input type="hidden" name="resto_id" value="{!! $recipe->resto_id !!}" />
  314. <div class="row">
  315. <div class="col-sm-9">
  316. <input class="form-control" name="option" placeholder="Name of option" required />
  317. </div>
  318. <div class="col-sm-3">
  319. <input class="form-control" name="price" placeholder="Price if it has" />
  320. </div>
  321. </div>
  322. <div class="row">
  323. <div class="col-sm-12 text-right"><a href="#!" class="btn btn-sm btn-danger mt-1 add-extra-items">Add Extra Item</a> </div>
  324. </div>
  325. <div id="items-list">
  326. </div>
  327. </form>
  328. </div>
  329. <div class="modal-footer">
  330. <button type="button" class="btn btn-primary save-extra-options">Add</button>
  331. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  332. </div>
  333. </div>
  334. </div>
  335. </div>
  336. <div class="modal" id="edit-extra-option" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  337. <div class="modal-dialog">
  338. <div class="modal-content">
  339. <div class="modal-header">
  340. <h5 class="modal-title" id="staticBackdropLabel">Edit Option</h5>
  341. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  342. </div>
  343. <div class="modal-body">
  344. <form method="POST" action="{!! env('APP_URL') !!}update/option" id="edit-form">
  345. <input type="hidden" name="id" />
  346. @csrf
  347. <div class="row">
  348. <div class="col-sm-8">
  349. <input class="form-control" name="option" placeholder="Name of option" required />
  350. </div>
  351. <div class="col-sm-3">
  352. <input class="form-control" name="price" placeholder="Price" />
  353. </div>
  354. <div class="col-sm-1">
  355. <a href="#!" style="margin-top: 2px" class="btn btn-sm btn-success update-option"><i class="fa fa-save"></i> </a>
  356. </div>
  357. </div>
  358. <div class="row mt-2">
  359. <div class="col-md-12">
  360. <div class="alert alert-success success"></div>
  361. <div class="alert alert-danger error"></div>
  362. </div>
  363. </div>
  364. </form>
  365. </div>
  366. <div class="modal-footer">
  367. <button type="button" class="btn btn-primary save-extra-options">Add</button>
  368. <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  369. </div>
  370. </div>
  371. </div>
  372. </div>
  373. <div class="modal" id="extra-option-item" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  374. <div class="modal-dialog">
  375. <div class="modal-content">
  376. <div class="modal-header">
  377. <h5 class="modal-title" id="staticBackdropLabel">Customized Items List</h5>
  378. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  379. </div>
  380. <div class="modal-body">
  381. <table class="table table-bordered" id="item-table">
  382. <thead>
  383. <tr>
  384. <th>Name</th>
  385. <th>Price</th>
  386. <th>Item type</th>
  387. <th>Customized Sub Items List</th>
  388. <th></th>
  389. </tr>
  390. </thead>
  391. <tbody>
  392. </tbody>
  393. </table>
  394. </div>
  395. </div>
  396. </div>
  397. </div>
  398. <div class="modal" id="edit-extra-item-option" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  399. <div class="modal-dialog">
  400. <div class="modal-content">
  401. <div class="modal-header">
  402. <h5 class="modal-title" id="staticBackdropLabel">Edit Item</h5>
  403. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  404. </div>
  405. <div class="modal-body">
  406. <form method="POST" action="{!! env('APP_URL') !!}update/item" id="edit-item-form">
  407. <input type="hidden" name="id" />
  408. @csrf
  409. <div class="row">
  410. <div class="col-sm-5">
  411. <input class="form-control" name="option" placeholder="Name of Item" required />
  412. </div>
  413. <div class="col-sm-4">
  414. <select class="form-control" name="item_type">
  415. <option value="">Choose Button type</option>
  416. <option value="option">Option Button</option>
  417. <option value="check-box">Checkbox</option>
  418. </select>
  419. </div>
  420. <div class="col-sm-2">
  421. <input class="form-control" name="price" placeholder="Price" />
  422. </div>
  423. <div class="col-sm-1">
  424. <a href="#!" style="margin-top: 2px" class="btn btn-sm btn-success update-item"><i class="fa fa-save"></i> </a>
  425. </div>
  426. </div>
  427. <div class="row mt-2">
  428. <div class="col-md-12">
  429. <div class="alert alert-success success"></div>
  430. <div class="alert alert-danger error"></div>
  431. </div>
  432. </div>
  433. </form>
  434. </div>
  435. </div>
  436. </div>
  437. </div>
  438. <div class="modal" id="mandatory-extra-item-option" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  439. <div class="modal-dialog">
  440. <div class="modal-content">
  441. <div class="modal-header">
  442. <h5 class="modal-title" id="staticBackdropLabel">Make Mandatory options</h5>
  443. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  444. </div>
  445. <div class="modal-body">
  446. <form method="POST" action="{!! env('APP_URL') !!}update/mandatory/item" id="mandatory-item-form">
  447. <input type="hidden" name="id" />
  448. @csrf
  449. <div class="row">
  450. <div class="col-sm-10">
  451. <input class="form-control" type="number" name="mandatory_amount" placeholder="Enter quantity of items" required />
  452. </div>
  453. <div class="col-sm-1">
  454. <a href="#!" style="margin-top: 2px" class="btn btn-sm btn-success make-mandatory-item"><i class="fa fa-save"></i> </a>
  455. </div>
  456. </div>
  457. <div class="row mt-2">
  458. <div class="col-md-12">
  459. <div class="alert alert-success success"></div>
  460. <div class="alert alert-danger error"></div>
  461. </div>
  462. </div>
  463. </form>
  464. </div>
  465. </div>
  466. </div>
  467. </div>
  468. <div class="modal" id="add-new-items" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  469. <div class="modal-dialog">
  470. <div class="modal-content">
  471. <div class="modal-header">
  472. <h5 class="modal-title" id="staticBackdropLabel">Add more Items</h5>
  473. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  474. </div>
  475. <div class="modal-body">
  476. <form id="extra-items-form" method="POST" action="{!! env('APP_URL') !!}save/add/items">
  477. @csrf
  478. <input type="hidden" name="extra_option_id"/>
  479. <input type="hidden" name="parent_id" />
  480. <div class="row">
  481. <div class="col-sm-12 text-right"><a href="#!" class="btn btn-sm btn-danger mt-1 add-extra-items-2">Add Extra Item</a> </div>
  482. </div>
  483. <div id="items-list-2">
  484. <div class="row" style="margin-top: 10px">
  485. <div class="col-sm-6">
  486. <input class="form-control" name="item_name[]" placeholder="Name of item">
  487. </div>
  488. <div class="col-sm-3">
  489. <select class="form-control" name="item_type[]"><option value="option">Option Button</option><option value="check-box">Checkbox</option> </select>
  490. </div>
  491. <div class="col-sm-2">
  492. <input class="form-control" name="item_price[]" placeholder="Price if it has">
  493. </div>
  494. </div>
  495. </div>
  496. </form>
  497. </div>
  498. </div>
  499. </div>
  500. </div>
  501. @endif
  502. @endsection
  503. @section('js')
  504. <script src="{!! env('APP_ASSETS') !!}vendor_components/dropzone/dist/min/dropzone.min.js"></script>
  505. <script src="{!! env('APP_ASSETS') !!}vendor_components/select2/dist/js/select2.min.js"></script>
  506. <script>
  507. Dropzone.autoDiscover = false;
  508. var extra_option_id = 0;
  509. $(function () {
  510. $("body").on("click",".remove-image",function(){
  511. var id = $(this).data('recipe-id');
  512. var _this = $(this);
  513. $.ajax({
  514. url:"{!! env('APP_URL') !!}remove/recipe/main-image",
  515. type:"POST",
  516. data:{
  517. id:id,
  518. '_token':"{!! csrf_token() !!}"
  519. },
  520. success:function(){
  521. _this.parents('.main-cover-image').find("#image-preview").removeAttr('style');
  522. }
  523. });
  524. });
  525. $.uploadPreview({
  526. input_field: "#image-upload", // Default: .image-upload
  527. preview_box: "#image-preview", // Default: .image-preview
  528. label_field: "#image-label", // Default: .image-label
  529. label_default: "Choose File", // Default: Choose File
  530. label_selected: "Change File", // Default: Change File
  531. no_label: true ,
  532. success_callback: function() {
  533. }// Default: false
  534. });
  535. $(".custom-select").select2();
  536. $("body").on("click",".make-mandatory-item",function () {
  537. $(".alert").hide();
  538. if($("#mandatory-item-form").valid()){
  539. $("#mandatory-item-form").ajaxForm(function (response) {
  540. response = $.parseJSON(response);
  541. if(response){
  542. if(response.type=="success"){
  543. $('#mandatory-item-form .alert.success').html(response.message);
  544. $('#mandatory-item-form .alert.success').show();
  545. setTimeout(function(){
  546. location.reload();
  547. },2000)
  548. }else{
  549. $('#mandatory-item-form .alert.error').html(response.message);
  550. $('#mandatory-item-form .alert.error').show();
  551. }
  552. }
  553. }).submit();
  554. }
  555. });
  556. $("body").on("click",".is_mandatory",function () {
  557. var id = $(this).data('id');
  558. if($(this).is(":checked")){
  559. $("#mandatory-extra-item-option").modal('show');
  560. $("#mandatory-extra-item-option input[name=id]").val(id);
  561. }else{
  562. if(confirm("Do you want disable this option?")){
  563. $.ajax({
  564. url:"{!! env('APP_URL') !!}remove/mandatory/"+id,
  565. success:function () {
  566. location.reload();
  567. }
  568. });
  569. }else{
  570. return false;
  571. }
  572. }
  573. });
  574. $("body").on('click','.save',function () {
  575. if($("#restaurant-form").valid()){
  576. $("#restaurant-form").ajaxForm(function (response) {
  577. response = $.parseJSON(response);
  578. if(response){
  579. if(response.type=="success"){
  580. $('#restaurant-form .alert.success').html(response.message);
  581. $('#restaurant-form .alert.success').show();
  582. setTimeout(function(){
  583. window.location = '{!! env('APP_URL') !!}recipes';
  584. },2000)
  585. }else{
  586. $('#restaurant-form .alert.error').html(response.message);
  587. $('#restaurant-form .alert.error').show();
  588. }
  589. }
  590. }).submit();
  591. }
  592. });
  593. @if( isset($recipe))
  594. $("body").on("click",".upload-gallery",function () {
  595. $("#upload-gallery").modal('show');
  596. });
  597. $("body").on("click",".add-options",function () {
  598. $("#extra-options").modal('show');
  599. });
  600. $("body").on("click",".add-new-items",function () {
  601. var id = $(this).data('id');
  602. $("input[name=extra_option_id]").val(id);
  603. $("#add-new-items").modal('show');
  604. });
  605. $("body").on("click",".add-sub-item",function () {
  606. var id = $(this).data('id');
  607. var extra_option_id = $(this).data('extra-option-id');
  608. $("input[name=parent_id]").val(id);
  609. $("input[name=extra_option_id]").val(extra_option_id);
  610. $("#add-new-items").modal('show');
  611. });
  612. $("body").on("click",".add-extra-items",function () {
  613. var new_item = add_new_item();
  614. $("#items-list").append(new_item);
  615. });
  616. $("body").on("click",".add-extra-items-2",function () {
  617. var new_item = add_new_item();
  618. $("#items-list-2").append(new_item);
  619. });
  620. $("body").on("click",".delete-item",function () {
  621. var _this = $(this);
  622. var id = $(this).data('id');
  623. $.ajax({
  624. url:"{!! env('APP_URL') !!}extra/item/delete/"+id,
  625. success:function (response) {
  626. _this.parent().parent().remove();
  627. }
  628. });
  629. });
  630. $("body").on("click",".delete-new-item",function () {
  631. $(this).parent().parent().remove();
  632. });
  633. $("body").on("click",".delete-option",function () {
  634. var _this = $(this);
  635. var id = $(this).data('id');
  636. $.ajax({
  637. url:"{!! env('APP_URL') !!}extra/option/delete/"+id,
  638. success:function (response) {
  639. _this.parent().parent().remove();
  640. }
  641. });
  642. //
  643. });
  644. $("body").on("click",".update-option",function () {
  645. if($("#edit-form").valid()){
  646. $("#edit-form").ajaxForm(function (response) {
  647. location.reload();
  648. }).submit();
  649. }
  650. });
  651. $("body").on("click",".update-item",function () {
  652. if($("#edit-item-form").valid()){
  653. $("#edit-item-form").ajaxForm(function (response) {
  654. var id = extra_option_id;
  655. $.ajax({
  656. url:"{!! env('APP_URL') !!}view/items/"+id,
  657. success:function (response) {
  658. response = response.data;
  659. var row = "";
  660. $.each(response,function (i,v) {
  661. row+=show_item(v);
  662. });
  663. $("#item-table > tbody").html(row);
  664. $("#edit-extra-item-option").modal('hide');
  665. }
  666. });
  667. }).submit();
  668. }
  669. });
  670. $("body").on("click",".edit-option",function () {
  671. var id = $(this).data('id');
  672. $.ajax({
  673. url:"{!! env('APP_URL') !!}edit/option/"+id,
  674. success:function (response) {
  675. response = response.data;
  676. $("#edit-form input[name=id]").val(response.id);
  677. $("#edit-form input[name=option]").val(response.name);
  678. $("#edit-form input[name=price]").val(response.price);
  679. $("#edit-extra-option").modal();
  680. }
  681. });
  682. });
  683. $("body").on("click",".edit-item",function () {
  684. var id = $(this).data('id');
  685. $.ajax({
  686. url:"{!! env('APP_URL') !!}edit/item/"+id,
  687. success:function (response) {
  688. response = response.data;
  689. $("#edit-item-form input[name=id]").val(response.id);
  690. $("#edit-item-form input[name=item_type]").val(response.item_type);
  691. $("#edit-item-form input[name=option]").val(response.name);
  692. $("#edit-item-form input[name=price]").val(response.price);
  693. $("#edit-extra-item-option").modal('show');
  694. }
  695. });
  696. });
  697. $("body").on("click",".view-items",function () {
  698. var id = $(this).data('id');
  699. extra_option_id = id;
  700. $.ajax({
  701. url:"{!! env('APP_URL') !!}view/items/"+id,
  702. success:function (response) {
  703. response = response.data;
  704. var row = "";
  705. $.each(response,function (i,v) {
  706. row+=show_item(v);
  707. });
  708. $("#item-table > tbody").html(row);
  709. $("#extra-option-item").modal('show');
  710. }
  711. });
  712. });
  713. $("body").on("click",".save-extra-options",function () {
  714. if($("#extra-options-form").valid()){
  715. $("#extra-options-form").ajaxForm(function (response) {
  716. response = $.parseJSON(response);
  717. if(response){
  718. if(response.type=="success"){
  719. $('#extra-options .alert.success').html(response.message);
  720. $('#extra-options .alert.success').show();
  721. setTimeout(function(){
  722. window.location.reload();
  723. },2000)
  724. }else{
  725. $('#extra-options .alert.error').html(response.message);
  726. $('#extra-options .alert.error').show();
  727. }
  728. }
  729. }).submit();
  730. }
  731. });
  732. $("body").on("click",".save-extra-items",function () {
  733. if($("#extra-items-form").valid()){
  734. $("#extra-items-form").ajaxForm(function (response) {
  735. response = $.parseJSON(response);
  736. if(response){
  737. if(response.type=="success"){
  738. $('#extra-items-form .alert.success').html(response.message);
  739. $('#extra-items-form .alert.success').show();
  740. setTimeout(function(){
  741. window.location.reload();
  742. },2000)
  743. }else{
  744. $('#extra-items-form .alert.error').html(response.message);
  745. $('#extra-items-form .alert.error').show();
  746. }
  747. }
  748. }).submit();
  749. }
  750. });
  751. var gallery = new Dropzone("div#gallery",
  752. {
  753. paramName: "files", // The name that will be used to transfer the file
  754. addRemoveLinks: true,
  755. uploadMultiple: true,
  756. autoProcessQueue: false,
  757. parallelUploads: 50,
  758. maxFilesize: 5, // MB
  759. acceptedFiles: ".png, .jpeg, .jpg,",
  760. url: "{!! env('APP_URL') !!}upload/gallery/recipe",
  761. });
  762. gallery.on("sending", function(file, xhr, formData) {
  763. var filenames = [];
  764. $('.dz-preview .dz-filename').each(function() {
  765. filenames.push($(this).find('span').text());
  766. });
  767. formData.append('filenames', filenames);
  768. formData.append('_token','{!! csrf_token() !!}');
  769. formData.append('recipe_id',"{!! $recipe->id !!}");
  770. });
  771. /* Add Files Script*/
  772. gallery.on("success", function(file, message){
  773. $("#msg").html(message);
  774. //setTimeout(function(){window.location.href="index.php"},200);
  775. });
  776. gallery.on("error", function (data) {
  777. $("#msg").html('<div class="alert alert-danger">There is some thing wrong, Please try again!</div>');
  778. });
  779. gallery.on("complete", function(file) {
  780. gallery.removeFile(file);
  781. location.reload();
  782. });
  783. $(".upload").on("click",function (e){
  784. gallery.processQueue();
  785. e.preventDefault();
  786. });
  787. $("body").on("click",".delete-image",function () {
  788. var _this = $(this);
  789. var id = $(this).data('id');
  790. $.ajax({
  791. url:"{!! env('APP_URL') !!}delete/image/"+id+"?type=recipe",
  792. success:function (response) {
  793. _this.parents(".gallery").remove();
  794. }
  795. });
  796. });
  797. $("body").on("click",".delete-image",function () {
  798. var _this = $(this);
  799. var id = $(this).data('id');
  800. $.ajax({
  801. url:"{!! env('APP_URL') !!}delete/image/"+id+"?type=recipe",
  802. success:function (response) {
  803. _this.parents(".gallery").remove();
  804. }
  805. });
  806. });
  807. @endif
  808. });
  809. function add_new_item() {
  810. return '<div class="row" style="margin-top: 10px">\n' +
  811. ' <div class="col-sm-6">\n' +
  812. ' <input class="form-control" name="item_name[]" placeholder="Name of item">\n' +
  813. ' </div>\n' +
  814. '<div class="col-sm-3">\n' +
  815. ' <select class="form-control" name="item_type[]">' +
  816. '<option value="option">Option Button</option>' +
  817. '<option value="check-box">Checkbox</option> </select>\n' +
  818. ' </div>\n' +
  819. ' <div class="col-sm-2">\n' +
  820. ' <input class="form-control" name="item_price[]" placeholder="Price if it has">\n' +
  821. ' </div>\n' +
  822. ' <div class="col-sm-1">\n' +
  823. ' <a href="#!" class="delete-new-item btn btn-sm btn-danger" style="margin-top: 3px"><i class="fa fa-trash-alt"></i> </a> \n' +
  824. ' </div>\n' +
  825. ' </div>'
  826. }
  827. function show_item(item) {
  828. var str = "<tr>";
  829. str+='<td>'+item.name+'</td>';
  830. str+='<td>'+item.price+'</td>';
  831. str+='<td>'+(item.item_type?item.item_type:"")+'</td>';
  832. str+='<td>';
  833. var list = "";
  834. if(item.childern){
  835. if(item.childern.length > 0){
  836. list = '<ul class="list-group">';
  837. $.each(item.childern,function (i,v) {
  838. 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>' +
  839. '<span class="badge badge-primary badge-pill">'+v.price+'</span>' +
  840. '</li>';
  841. });
  842. list += "</ul>";
  843. }
  844. }
  845. str+=list;
  846. str+='</td>';
  847. str+='<td>' +
  848. '<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>'+
  849. ' <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>'+
  850. ' <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>'
  851. '</td>';
  852. str+='</tr>';
  853. return str;
  854. }
  855. </script>
  856. @endsection