hasHeader('zoneId')) { $errors = []; array_push($errors, ['code' => 'zoneId', 'message' => translate('messages.zone_id_required')]); return response()->json([ 'errors' => $errors ], 403); } $longitude= $request->header('longitude'); $latitude= $request->header('latitude'); $type = $request->query('type', 'all'); $cuisine= $request->query('cuisine', 'all'); $name= $request->query('name'); $zone_id= json_decode($request->header('zoneId'), true); $restaurants = RestaurantLogic::get_restaurants($zone_id, $filter_data, $request['limit'], $request['offset'],$type, $name,$longitude,$latitude,$cuisine); $restaurants['restaurants'] = Helpers::restaurant_data_formatting($restaurants['restaurants'], true); return response()->json($restaurants, 200); } public function get_latest_restaurants(Request $request, $filter_data="all") { if (!$request->hasHeader('zoneId')) { $errors = []; array_push($errors, ['code' => 'zoneId', 'message' => translate('messages.zone_id_required')]); return response()->json([ 'errors' => $errors ], 403); } $type = $request->query('type', 'all'); $longitude= $request->header('longitude'); $latitude= $request->header('latitude'); $zone_id= json_decode($request->header('zoneId'), true); $restaurants = RestaurantLogic::get_latest_restaurants($zone_id, $request['limit'], $request['offset'], $type ,$longitude,$latitude); $restaurants['restaurants'] = Helpers::restaurant_data_formatting($restaurants['restaurants'], true); return response()->json($restaurants['restaurants'], 200); } public function get_popular_restaurants(Request $request) { if (!$request->hasHeader('zoneId')) { $errors = []; array_push($errors, ['code' => 'zoneId', 'message' => translate('messages.zone_id_required')]); return response()->json([ 'errors' => $errors ], 403); } $longitude= $request->header('longitude'); $latitude= $request->header('latitude'); $type = $request->query('type', 'all'); $zone_id= json_decode($request->header('zoneId'), true); $restaurants = RestaurantLogic::get_popular_restaurants($zone_id, $request['limit'], $request['offset'], $type,$longitude,$latitude); $restaurants['restaurants'] = Helpers::restaurant_data_formatting($restaurants['restaurants'], true); return response()->json($restaurants['restaurants'], 200); } public function recently_viewed_restaurants(Request $request) { if (!$request->hasHeader('zoneId')) { $errors = []; array_push($errors, ['code' => 'zoneId', 'message' => translate('messages.zone_id_required')]); return response()->json([ 'errors' => $errors ], 403); } $longitude= $request->header('longitude'); $latitude= $request->header('latitude'); $type = $request->query('type', 'all'); $zone_id= json_decode($request->header('zoneId'), true); $restaurants = RestaurantLogic::recently_viewed_restaurants_data($zone_id, $request['limit'], $request['offset'], $type,$longitude,$latitude); $restaurants['restaurants'] = Helpers::restaurant_data_formatting($restaurants['restaurants'], true); return response()->json($restaurants['restaurants'], 200); } public function get_details($id) { $restaurant = RestaurantLogic::get_restaurant_details($id); if($restaurant) { $category_ids = DB::table('food') ->join('categories', 'food.category_id', '=', 'categories.id') ->selectRaw('IF((categories.position = "0"), categories.id, categories.parent_id) as categories') ->where('food.restaurant_id', $id) ->where('categories.status',1) ->groupBy('categories') ->get(); $restaurant = Helpers::restaurant_data_formatting($restaurant); $restaurant['category_ids'] = array_map('intval', $category_ids->pluck('categories')->toArray()); if(auth('api')->user() !== null){ $customer_id =auth('api')->user()->id; Helpers::visitor_log('restaurant',$customer_id,$restaurant->id,false); } } return response()->json($restaurant, 200); } public function get_searched_restaurants(Request $request) { if (!$request->hasHeader('zoneId')) { $errors = []; array_push($errors, ['code' => 'zoneId', 'message' => translate('messages.zone_id_required')]); return response()->json([ 'errors' => $errors ], 403); } $validator = Validator::make($request->all(), [ 'name' => 'required', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)], 403); } $type = $request->query('type', 'all'); $longitude= $request->header('longitude'); $latitude= $request->header('latitude'); $zone_id= json_decode($request->header('zoneId'), true); $restaurants = RestaurantLogic::search_restaurants($request['name'], $zone_id, $request->category_id,$request['limit'], $request['offset'], $type,$longitude,$latitude); $restaurants['restaurants'] = Helpers::restaurant_data_formatting($restaurants['restaurants'], true); return response()->json($restaurants, 200); } public function reviews(Request $request) { $validator = Validator::make($request->all(), [ 'restaurant_id' => 'required', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)], 403); } $id = $request['restaurant_id']; $reviews = Review::with(['customer', 'food']) ->whereHas('food', function($query)use($id){ return $query->where('restaurant_id', $id); }) ->active()->latest()->get(); $storage = []; foreach ($reviews as $item) { $item['attachment'] = json_decode($item['attachment']); $item['food_name'] = null; $item['food_image'] = null; $item['customer_name'] = null; if($item->food) { $item['food_name'] = $item->food->name; $item['food_image'] = $item->food->image; if(count($item->food->translations)>0) { $translate = array_column($item->food->translations->toArray(), 'value', 'key'); $item['food_name'] = $translate['name']; } } if($item->customer) { $item['customer_name'] = $item->customer->f_name.' '.$item->customer->l_name; } unset($item['food']); unset($item['customer']); array_push($storage, $item); } return response()->json($storage, 200); } // public function get_product_rating($id) // { // try { // $product = Food::find($id); // $overallRating = ProductLogic::get_overall_rating($product->reviews); // return response()->json(floatval($overallRating[0]), 200); // } catch (\Exception $e) { // return response()->json(['errors' => $e], 403); // } // } public function get_coupons(Request $request){ $validator = Validator::make($request->all(), [ 'restaurant_id' => 'required', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)], 403); } $restaurant_id=$request->restaurant_id; $customer_id=$request->customer_id; $coupons = Coupon::Where(function ($q) use ($restaurant_id,$customer_id) { $q->Where('coupon_type', 'restaurant_wise')->whereJsonContains('data', [$restaurant_id]) ->where(function ($q1) use ($customer_id) { $q1->whereJsonContains('customer_id', [$customer_id])->orWhereJsonContains('customer_id', ['all']); }); })->orWhereHas('restaurant',function($q) use ($restaurant_id){ $q->where('id',$restaurant_id); }) ->active()->whereDate('expire_date', '>=', date('Y-m-d'))->whereDate('start_date', '<=', date('Y-m-d')) ->get(); return response()->json($coupons, 200); } }