Attendize/app/Http/Controllers/API/PublicController.php

81 lines
2.5 KiB
PHP
Raw Normal View History

2019-09-28 07:05:26 +00:00
<?php
namespace App\Http\Controllers\API;
use App\Models\Category;
use App\Models\Event;
2019-11-26 12:11:21 +00:00
use Carbon\Carbon;
2019-09-28 07:05:26 +00:00
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class PublicController extends Controller
{
public function getCategories($parent_id = false){
2019-10-02 14:08:07 +00:00
$categories = Category::select('title_tk','title_ru','id','parent_id');
2019-09-28 07:05:26 +00:00
if($parent_id)
$categories->children($parent_id);
else
$categories->main();
2019-11-26 12:53:04 +00:00
return response()->json($categories->get());
2019-11-02 10:32:23 +00:00
// return $categories->get();
2019-09-28 07:05:26 +00:00
}
2019-11-26 12:53:04 +00:00
public function showCategoryEvents($cat_id){
2019-09-28 07:05:26 +00:00
2019-11-26 12:11:21 +00:00
$category = Category::select('id','title_tk','title_ru','view_type','events_limit','parent_id')
->findOrFail($cat_id);
2019-09-28 07:05:26 +00:00
2019-11-26 12:11:21 +00:00
[$order, $data] = $this->sorts_filters();
$data['category'] = $category;
$data['sub_cats'] = $category->children()
->withLiveEvents($order, $data['start'], $data['end'], $category->events_limit)
->whereHas('cat_events',
function ($query) use($data){
$query->onLive($data['start'], $data['end']);
})->get();
2019-09-28 07:05:26 +00:00
2019-11-26 12:11:21 +00:00
return response()->json($data);
}
private function sorts_filters(){
$data['start'] = \request()->get('start') ?? Carbon::today();
$data['end'] = \request()->get('end')?? Carbon::today()->endOfCentury();
$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';
2019-09-28 07:05:26 +00:00
}
2019-11-26 12:11:21 +00:00
$data['sort'] = $sort;
//todo check date formats;
return [$orderBy, $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'])
->get();
2019-09-28 07:05:26 +00:00
2019-11-26 12:11:21 +00:00
return response()->json($data);
2019-09-28 07:05:26 +00:00
}
public function getEvent($id){
$event = Event::with('images')->findOrFail($id);
2019-11-26 12:11:21 +00:00
return response()->json($event);
2019-09-28 07:05:26 +00:00
}
}