categoryLiveEvents(16) ->first(); $cartoon = Category::where('view_type','exhibition')//todo change to cartoon multik ->categoryLiveEvents(16) ->first(); $musical =Category::where('view_type','concert') ->categoryLiveEvents(8) ->first(); $sliders = Slider::where('active',1) ->where(Config::get('app.locale'),1) ->get(); //dd($cinema->events->first()); // return view('desktop.Pages.HomePage')->with([ // 'cinema' => $cinema, // 'cartoon' => $cartoon, // 'musical' => $musical, // 'sliders' => $sliders // ]); return $this->render("Pages.HomePage",[ 'cinema' => $cinema, 'cartoon' => $cartoon, 'musical' => $musical, 'sliders' => $sliders ]); } public function showCategoryEvents($cat_id){ $category = Category::select('id','title_tk','title_ru','view_type','events_limit','parent_id') ->findOrFail($cat_id); [$order, $data] = $this->sorts_filters(); $data['category'] = $category; $data['sub_cats'] = $category->children() ->withLiveEvents($order, $data['start'], $data['end'], $category->events_limit + 3)//wiered ->whereHas('cat_events', function ($query) use($data){ $query->onLive($data['start'], $data['end']); }) ->get(); return $this->render("Pages.EventsPage",$data); } public function showSubCategoryEvents($cat_id){ $category = Category::select('id','title_tk','title_ru','view_type','events_limit','parent_id') ->findOrFail($cat_id); [$order, $data] = $this->sorts_filters(); $data['category'] = $category; $data['events'] = $category->cat_events() ->onLive($data['start'],$data['end']) ->orderBy($order['field'],$order['order']) ->paginate(16); return $this->render("Pages.CategoryEventsPage",$data); } private function sorts_filters(){ $data['start'] = \request()->get('start'); $data['end'] = \request()->get('end'); $sort = \request()->get('sort'); if($sort == 'new') $orderBy = ['field'=>'created_at','order'=>'desc']; if ($sort =='popular') $orderBy = ['field'=>'views','order'=>'desc']; else { $orderBy =['field'=>'start_date','order'=>'asc']; $sort = 'start_date'; } $data['sort'] = $sort; //todo check date formats; return [$orderBy, $data]; } public function search(SearchRequest $request){ //todo implement with elastick search and scout $query = sanitise($request->get('q')); $events = Event::onLive() ->where('title_ru','like',"%{$query}%") ->orWhere('title_tk','like',"%{$query}%") ->paginate(10); return $this->render('Pages.SearchResults',[ 'events' => $events, 'query' => $query ]); } public function postAddEvent(AddEventRequest $request){ $addEvent = EventRequest::create([ 'name' => sanitise($request->get('name')), 'email' => sanitise($request->get('email')), 'phone' => sanitise($request->get('phone')), 'details' => sanitise($request->get('details')) ]); if($addEvent) return response()->json([ 'status' => 'success', 'message' => trans('ClientSide.add_event_success_message'), ]); else return response()->json([ 'status' => 'error', 'message' => trans('ClientSide.add_event_error_message'), ]); } public function subscribe(SubscribeRequest $request){ $email = sanitise($request->get('email')); //todo validate email $subscribe = Subscriber::updateOrCreate(['email'=>$email,'active'=>1]); if($subscribe) return response()->json([ 'status' => 'success', 'message' => trans('ClientSide.subscribe_success_message'), ]); else return response()->json([ 'status' => 'error', 'message' => trans('ClientSide.subscribe_error_message'), ]); } }