Attendize/app/Http/Controllers/PublicController.php

153 lines
4.6 KiB
PHP
Raw Normal View History

2018-12-10 07:32:53 +00:00
<?php
/**
* Created by PhpStorm.
* User: merdan
* Date: 12/9/2018
* Time: 12:39 PM
*/
namespace App\Http\Controllers;
2019-09-16 12:55:29 +00:00
use App\Http\Requests\AddEventRequest;
use App\Http\Requests\SearchRequest;
use App\Http\Requests\SubscribeRequest;
use App\Models\EventRequest;
use App\Models\Subscriber;
use Illuminate\Http\Request;
2019-09-10 13:33:55 +00:00
use App\Models\Category;
2018-12-10 07:32:53 +00:00
use App\Models\Event;
2019-08-28 06:34:37 +00:00
use App\Models\Slider;
2018-12-10 07:32:53 +00:00
use Carbon\Carbon;
class PublicController extends Controller
{
public function showHomePage(){
2019-09-28 07:05:26 +00:00
$cinema = Category::where('view_type','cinema')
->categoryLiveEvents(21)
->first();
2019-09-10 13:33:55 +00:00
2019-09-28 07:05:26 +00:00
$theatre = Category::where('view_type','theatre')
->categoryLiveEvents(6)
->first();
2019-09-10 13:33:55 +00:00
2019-09-28 07:05:26 +00:00
$musical =Category::where('view_type','concert')
->categoryLiveEvents(12)
->first();
2019-09-10 13:33:55 +00:00
2019-08-28 06:34:37 +00:00
$sliders = Slider::where('active',1)->get();
2019-09-28 07:05:26 +00:00
//dd($cinema->events->first());
2019-08-28 06:34:37 +00:00
return view('Bilettm.Public.HomePage')->with([
'cinema' => $cinema,
'theatre' => $theatre,
'musical' => $musical,
'sliders' => $sliders
]);
2018-12-10 07:32:53 +00:00
}
2019-09-16 12:55:29 +00:00
public function showEvents($cat_id = null, Request $request){
2019-09-10 13:33:55 +00:00
$date = $request->get('date');
2019-09-14 14:39:29 +00:00
//$cat_id = $request->get('cat_id');
2019-09-10 13:33:55 +00:00
$e_query = Event::onLive();
$nav_query = Category::select('id','title_tm','title_ru','parent_id')
2019-09-14 14:39:29 +00:00
->orderBy('lft','asc');
2019-09-16 13:30:51 +00:00
$category = null;
2019-09-10 13:33:55 +00:00
if(!empty($cat_id)){
$category = Category::findOrFail($cat_id);
if($category->parent_id > 0){
$e_query->where('sub_category_id',$category->id);
$nav_query->where('parent_id',$category->parent_id);
}
else{
2019-09-10 13:33:55 +00:00
$e_query->where('category_id',$category->id);
$nav_query->where('parent_id',$category->id);
}
}else{
$nav_query->main();
}
if(!empty($date)){
$e_query->whereDate('start_date','>=',Carbon::parse($date));
}
2019-09-23 14:07:27 +00:00
$events = $e_query->with('images')->paginate(5);
2019-09-10 13:33:55 +00:00
$navigation = $nav_query->get();
2019-09-17 14:19:57 +00:00
// dd($events);
2019-09-10 13:33:55 +00:00
return view('Bilettm.Public.EventsPage')->with([
'events' => $events,
2019-09-16 13:30:51 +00:00
'category' => $category,
'navigation' => $navigation
2019-09-10 13:33:55 +00:00
]);
2018-12-10 07:32:53 +00:00
}
2019-09-28 07:05:26 +00:00
public function showCategoryEvents($cat_id, Request $request){
$date = $request->get('date');
$popular = $request->get('popular');
$category = Category::select('id','title_tm','title_ru','view_type','events_limit','parent_id')
->findOrFail($cat_id);
if($category->parent_id>0){
$events = $category->cat_events()
->onLive()
->orderBy($popular ? 'start_date' : 'views')
->get();
return view("Bilettm.EventsList.subCategoryList")->with([
'category' => $category,
'events' => $events
]);
}
else{
$subCats = $category->children()
->withLiveEvents($date,$category->events_limit,$popular)
->get();
// $events = $e_query->with('images')->paginate(5);
// dd($subCats->first()->cat_events);
return view("Bilettm.EventsList.".$category->view_type)->with([
'sub_cats' => $subCats,
'category' => $category,
]);
}
}
2019-09-16 12:55:29 +00:00
public function search(SearchRequest $request){
//todo implement with elastick search and scout
$query = $request->get('q');
$events = Event::where('title','like',"%{$query}%")->paginate(10);
2019-09-16 12:55:29 +00:00
return view('Bilettm.Public.SearchResults')
->with([
'events' => $events,
'query' => $query
]);
}
public function postAddEvent(AddEventRequest $request){
$addEvent = EventRequest::create([
'name' => $request->get('name'),
'email' => $request->get('email'),
'phone' => $request->get('phone'),
'detail' => $request->get('detail')
]);
return view('Bilettm.Public.AddEventResult',compact('addEvent'));
}
public function subscribe(SubscribeRequest $request){
$email = $request->get('email');
2019-09-28 07:05:26 +00:00
//todo validate email
2019-09-16 12:55:29 +00:00
$subscribe = Subscriber::updateOrCreate(['email'=>$email,'active'=>1]);
if($subscribe){
2019-09-28 07:05:26 +00:00
session()->flash('message','Subscription successfully');
2019-09-16 12:55:29 +00:00
}
2019-09-28 07:05:26 +00:00
return response()->json([
'status' => 'success',
'message' => 'Subscription successfully',
]);
}
2018-12-10 07:32:53 +00:00
}