Outlet.php_1 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\BranchDeliveryAreas;
  4. use App\BranchFeatures;
  5. use App\BranchHours;
  6. use App\Helpers\CommonMethods;
  7. use App\Outlets;
  8. use App\Photos;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\Storage;
  12. use Str;
  13. use File;
  14. use Image;
  15. class Outlet extends Controller
  16. {
  17. //
  18. public function outlets(){
  19. $outlets = Outlets::whereNull('deleted_at')->where('resto_id',Auth::user()->restaurants->id)->get();
  20. return view('outlets.outlets',['outlets'=>$outlets]);
  21. }
  22. public function outlet_form(){
  23. return view('outlets.new-outlets',['outlet'=>NULL]);
  24. }
  25. public function outlet_edit($unique_key){
  26. $outlet = Outlets::where('unique_key',$unique_key)->first();
  27. return view('outlets.new-outlets',['outlet'=>$outlet]);
  28. }
  29. public function outlet_address(){
  30. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  31. return view('outlets.outlet-address',['outlet'=>$outlet]);
  32. }
  33. public function outlet_delivery_area(){
  34. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  35. $areas = BranchDeliveryAreas::where('branch_id',$outlet->id)->whereNull('deleted_at')->get();
  36. //dd($areas);
  37. return view('outlets.outlet-delivery-area',['outlet'=>$outlet,'areas'=>$areas]);
  38. }
  39. public function edit_area($id){
  40. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  41. $area = BranchDeliveryAreas::find($id);
  42. $areas = BranchDeliveryAreas::where('branch_id',$outlet->id)->whereNull('deleted_at')->get();
  43. return view('outlets.outlet-delivery-area',['outlet'=>$outlet,'area'=>$area,'areas'=>$areas]);
  44. }
  45. public function outlet_delivery_area_listing(){
  46. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  47. $areas = BranchDeliveryAreas::where('branch_id',$outlet->id)->whereNull('deleted_at')->get();
  48. return view('outlets.outlet-delivery-area-listing',['outlet'=>$outlet,'areas'=>$areas]);
  49. }
  50. public function outlet_delivery(){
  51. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  52. $features = isset($outlet->delivery_feature)?$outlet->delivery_feature:NULL;
  53. //$hours = isset($outlet->delivery_hours_feature)?$outlet->delivery_hours_feature:NULL;
  54. return view('outlets.outlet-delivery',['outlet'=>$outlet,'features'=>$features]);
  55. }
  56. public function outlet_ordering_mode(){
  57. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  58. return view('outlets.outlet-ordering-mode',['outlet'=>$outlet]);
  59. }
  60. public function outlet_pickup(){
  61. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  62. $features = isset($outlet->pickup_feature)?$outlet->pickup_feature:NULL;
  63. return view('outlets.outlet-pickup',['outlet'=>$outlet,'features'=>$features]);
  64. }
  65. public function outlet_dining(){
  66. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  67. $features = isset($outlet->contactless_dining_feature)?$outlet->contactless_dining_feature:NULL;
  68. return view('outlets.outlet-contactless-dining',['outlet'=>$outlet,'features'=>$features]);
  69. }
  70. public function update_feature_status_1(Request $request){
  71. $id = $request->id;
  72. $status = $request->status;
  73. $type = $request->type;
  74. $outlet = Outlets::find($id);
  75. if($type=="delivery"){
  76. $outlet->is_delivery = $status;
  77. }
  78. if($type=="pickup"){
  79. $outlet->is_pickup = $status;
  80. }
  81. if($type=="dine-in"){
  82. $outlet->is_contactless_dining = $status;
  83. }
  84. $result = $outlet->save();
  85. }
  86. public function save_outlet(Request $request){
  87. $name = $request->outlet_name;
  88. $time_zone = $request->timezone;
  89. $email = $request->email;
  90. $phone = $request->phone;
  91. $id = $request->id;
  92. $restaurants =Auth::user()->restaurants;
  93. $branch_id = 0;
  94. if(empty($id)){
  95. $outlet= new Outlets(); $outlet->unique_key = \Illuminate\Support\Str::uuid();
  96. }else{
  97. $outlet = Outlets::find($id);
  98. }
  99. $outlet->resto_id = $restaurants->id;
  100. $outlet->time_zone = $time_zone;
  101. $outlet->name = $name;
  102. $outlet->email = $email;
  103. $outlet->phone_number = $phone;
  104. $outlet->resto_id = $restaurants->id;
  105. $outlet->save();
  106. $branch_id = $outlet->id;
  107. if($branch_id > 0){
  108. if($request->hasFile('image')){
  109. $logo = $request->file('image');
  110. $file_name = Str::slug($request->name)."-branch-main-image".'-'.time();
  111. $extension = $logo->getClientOriginalExtension();
  112. Storage::disk('logo')->put($file_name.'.'.$extension, File::get($logo));
  113. $file = public_path('uploads/logo/'.$file_name.'.'.$extension);
  114. //uploadFileToAWSCDN($budketName, $restoID ,$restoName ,$sourceFile,$fileName )
  115. $destinationPath = public_path('/uploads/logo/');
  116. /* $img = Image::make($destinationPath . '/' . $file_name.'.'.$extension)->resize(800, null, function ($constraint) {
  117. $constraint->aspectRatio();
  118. });
  119. $img->save($destinationPath . '/' . $file_name.'.'.$extension);*/
  120. $result = CommonMethods::uploadFileToAWSCDN('meemapp-order',$restaurants->id, $restaurants->resto_unique_name,$file,$file_name);
  121. /* dd($buckets);
  122. $path = Storage::disk('s3')->put("meemcdn/".$file_name.'.'.$extension, File::get($logo));
  123. dd($path);*/
  124. /* $destinationPath = public_path('/uploads/logo/');
  125. $img = Image::make($destinationPath . '/' . $file_name.'.'.$extension)->resize(1400, null, function ($constraint) {
  126. $constraint->aspectRatio();
  127. });
  128. $img->save($destinationPath . '/' . $file_name.'.'.$extension);
  129. $img = Image::make($destinationPath . '/' . $file_name.'.'.$extension)->resize(85, null, function ($constraint) {
  130. $constraint->aspectRatio();
  131. });
  132. $img->save($destinationPath . '/thumbnails/' . $file_name.'.'.$extension);*/
  133. if($result['type']=="success"){
  134. $logo = Photos::where('resto_id',$restaurants->id)->where('branch_id',$branch_id)->where('photo_type','branch')->first();
  135. if(!$logo)
  136. $logo = new Photos();
  137. $logo->file_name = $result['url'];
  138. $logo->aws_cdn = $result['url'];
  139. $logo->resto_id = $restaurants->id;
  140. $logo->branch_id = $branch_id;
  141. $logo->photo_type = 'branch';
  142. $r = $logo->save();
  143. File::delete($file);
  144. }
  145. //$resto->text =
  146. }
  147. echo json_encode(array('type' => 'success', 'message'=>"Outlet's data is saved successfully.",'unique_key'=>$outlet->unique_key));
  148. }else{
  149. echo json_encode(array('type' => 'error', 'message'=>"Outlet's data is not saved, check info again."));
  150. }
  151. }
  152. public function update_outlet(Request $request){
  153. $id = $request->id;
  154. $status = $request->status;
  155. $outlet = Outlets::find($id);
  156. $outlet->active = $status;
  157. $outlet->save();
  158. }
  159. public function save_address(Request $request){
  160. $unique_id = $request->unique_id;
  161. $address = $request->address;
  162. $area = $request->area;
  163. $outlet = Outlets::where('unique_key',$unique_id)->first();
  164. $outlet->latitude = $request->lat;
  165. $outlet->longitude = $request->lng;
  166. if(isset($outlet)){
  167. $outlet->address = $address;
  168. $outlet->place = $area;
  169. $result = $outlet->save();
  170. if($result)
  171. echo json_encode(array('type' => 'success', 'message'=>"Outlet's address is saved successfully."));
  172. else
  173. echo json_encode(array('type' => 'error', 'message'=>"Outlet's address is not saved, check info again."));
  174. }else{
  175. echo json_encode(array('type' => 'error', 'message'=>"Outlet key is invalid."));
  176. }
  177. }
  178. public function save_branch_feature(Request $request){
  179. $payment_method = isset($request->payment_methods)?implode(',',$request->payment_methods):NULL;
  180. $feature_type = $request->feature_type;
  181. $preparation_time = $request->preparation_time;
  182. $preparation_delivery_time = $request->preperation_delivery;
  183. $estimated_time = $request->estimated_time;
  184. $is_open = $request->is_open;
  185. $id = $request->id;
  186. $feature = BranchFeatures::where('branch_id',$id)->where('feature_type',$feature_type)->first();
  187. if(!isset($feature))
  188. $feature = new BranchFeatures();
  189. $feature->payment_methods = $payment_method;
  190. $feature->feature_type = $feature_type;
  191. $feature->preparation_timing = $preparation_time;
  192. $feature->preparation_delivery_time = $preparation_delivery_time;
  193. $feature->estimated_time = $estimated_time;
  194. $feature->branch_id = $id;
  195. $feature->save();
  196. $start_time = $request->start_time;
  197. $end_time = $request->end_time;
  198. if(isset($start_time)){
  199. $time = BranchHours::where('branch_id',$id)->where('hours_for',$feature_type)->delete();
  200. foreach($start_time as $k=>$s){
  201. // $time = BranchHours::where('day_name',$k)->where('branch_id',$id)->where('hours_for',$feature_type)->first();
  202. // if(!isset($time))
  203. foreach($s as $a=>$v){
  204. $time = new BranchHours();
  205. $time->day_name = $k;
  206. $time->branch_id = $id;
  207. $time->hours_for = $feature_type;
  208. $time->start_time = isset($is_open[strtolower($k)])? date('H:i',strtotime($v)):NULL;
  209. $time->end_time = isset($is_open[strtolower($k)])?date('H:i',strtotime($end_time[$k][$a])):NULL;
  210. $time->status = isset($is_open[strtolower($k)])?"open":"close";
  211. $result = $time->save();
  212. //$time->status = 'open';
  213. }
  214. //$result = $time->save();
  215. }
  216. }
  217. if($result)
  218. echo json_encode(array('type' => 'success', 'message'=>"Outlet's ".$feature_type." is saved successfully."));
  219. else
  220. echo json_encode(array('type' => 'error', 'message'=>"Outlet's ".$feature_type." is not saved, check info again."));
  221. }
  222. public function update_feature_status(Request $request){
  223. $id = $request->outletId;
  224. $status = $request->is_active=="true"?1:0;
  225. $feature = $request->feature;
  226. $outlet = Outlets::find($id);
  227. $outlet->$feature = $status;
  228. $result = $outlet->save();
  229. }
  230. public function delete_outlet ($id){
  231. $outlet = Outlets::where('unique_key',$id)->first();
  232. $outlet->deleted_at =date('Y-m-d H:i:s');
  233. $outlet->save();
  234. }
  235. public function delete_area ($id){
  236. $outlet = BranchDeliveryAreas::find($id);
  237. $outlet->deleted_at =date('Y-m-d H:i:s');
  238. $outlet->save();
  239. }
  240. public function save_outlet_area(Request $request){
  241. $id = $request->id;
  242. $coordinates = $request->coordinates;
  243. $area_name = $request->area_name;
  244. $min_price = $request->min_basket;
  245. $delivery_fee = $request->delivery_fee;
  246. $unique_id = $request->unique_id;
  247. $center_radius = $request->center_radius;
  248. $outlet = Outlets::where('unique_key',$unique_id)->first();
  249. $outlet_id = $outlet->id;
  250. if($id==0)
  251. $area = new BranchDeliveryAreas();
  252. else
  253. $area = BranchDeliveryAreas::find($id);
  254. $area->branch_id = $outlet_id;
  255. $area->lat_lag = $coordinates;
  256. // $area->center_radius = $center_radius;
  257. $area->area_name = $area_name;
  258. $area->delivery_fee = $delivery_fee;
  259. $area->min_price = $min_price;
  260. $result = $area->save();
  261. if($result)
  262. echo json_encode(array('type' => 'success', 'message'=>"Area's information is saved successfully."));
  263. else
  264. echo json_encode(array('type' => 'error', 'message'=>"Outlet's information is not saved, check info again."));
  265. }
  266. public function update_area_status(Request $request){
  267. $id = $request->id;
  268. $status = $request->status;
  269. $outlet = BranchDeliveryAreas::find($id);
  270. $outlet->status = $status;
  271. $outlet->save();
  272. }
  273. public function outlet_digital_menu(){
  274. $outlet = Outlets::where('unique_key',request()->get('o'))->first();
  275. return view('outlets.outlet-digital-menu',['outlet'=>$outlet]);
  276. }
  277. public function pause_orders(){
  278. $outlets = Outlets::whereNull('deleted_at')->where('resto_id',Auth::user()->restaurants->id)->get();
  279. return view('outlets.outlets-pause-orders',['outlets'=>$outlets]);
  280. }
  281. }