Attendize/app/Http/Controllers/PublicController.php

140 lines
4.7 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-10-04 08:17:57 +00:00
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-10-03 09:18:21 +00:00
public function showCategoryEvents($cat_id, Request $request){
2019-09-10 13:33:55 +00:00
$date = $request->get('date');
2019-10-03 09:18:21 +00:00
$sort = $request->get('sort');
$filter =$request->get('filter');//today,tomorrow,week,month,date
2019-09-10 13:33:55 +00:00
2019-10-03 09:18:21 +00:00
if($sort == 'new')
$orderBy = ['field'=>'created_at','order'=>'desc'];
if ($sort =='pop')
$orderBy = ['field'=>'views','order'=>'desc'];
else
{
$orderBy =['field'=>'start_date','order'=>'asc'];
$sort = 'start_date';
2019-09-10 13:33:55 +00:00
}
2019-10-03 09:18:21 +00:00
switch ($filter){
case 'today' : $date_start = Carbon::now(); $date_end = $date_start->endOfDay(); break;
case 'tomorrow' : $date_start = Carbon::tomorrow(); $date_end = $date_start->endOfDay();break;
case 'week' : $date_start = Carbon::now(); $date_end = $date_start->endOfWeek(); break;
case 'month' : $date_start = Carbon::now(); $date_end = $date_start->endOfMonth(); break;
case 'date' : $date_start = Carbon::parse($date); $date_end = $date_start->endOfDay(); break;
default : $date_start = null; $date_end = null;
2019-09-10 13:33:55 +00:00
}
2019-10-03 09:18:21 +00:00
// dd(url('path'));
2019-10-02 14:08:07 +00:00
// setlocale(LC_TIME, 'tk');
// Carbon::setLocale('tk');
// dd(Carbon::parse('2019-01-01',config('app.timezone')) ->formatLocalized('%d %B'));
// Carbon::
$category = Category::select('id','title_tk','title_ru','view_type','events_limit','parent_id')
2019-09-28 07:05:26 +00:00
->findOrFail($cat_id);
2019-10-03 09:18:21 +00:00
$data = ['sort' => $sort, 'category' => $category, 'filter' => $filter];
2019-10-02 14:08:07 +00:00
if($category->parent_id >0 || $category->view_type === 'concert'){
2019-09-28 07:05:26 +00:00
$events = $category->cat_events()
2019-10-03 09:18:21 +00:00
->onLive($date_start,$date_end)
->orderBy($orderBy)
2019-09-28 07:05:26 +00:00
->get();
2019-10-03 09:18:21 +00:00
$data['events'] = $events;
return view("Bilettm.Public.CategoryEventsPage")->with($data);
2019-09-28 07:05:26 +00:00
}
else{
$subCats = $category->children()
2019-10-03 09:18:21 +00:00
->withLiveEvents($orderBy, $date_start, $date_end, $category->events_limit)
->whereHas('cat_events',
function ($query) use($date_start, $date_end){
$query->onLive($date_start, $date_end);
2019-10-02 14:08:07 +00:00
})->get();
2019-10-03 09:18:21 +00:00
$data['sub_cats'] = $subCats;
return view("Bilettm.Public.EventsPage")->with($data);
2019-09-28 07:05:26 +00:00
}
}
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
}