src/Http/Controllers/EventCategoryController.php
<?php
namespace DavideCasiraghi\LaravelEventsCalendar\Http\Controllers;
use DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
use Validator;
class EventCategoryController extends Controller
{
/* Restrict the access to this resource just to logged in users except show view */
public function __construct()
{
$this->middleware('admin', ['except' => ['show']]);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\View\View
*/
public function index()
{
$eventCategories = EventCategory::latest()->paginate(20);
// Countries available for translations
$countriesAvailableForTranslations = LaravelLocalization::getSupportedLocales();
return view('laravel-events-calendar::eventCategories.index', compact('eventCategories'))
->with('i', (request()->input('page', 1) - 1) * 20)
->with('countriesAvailableForTranslations', $countriesAvailableForTranslations);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('laravel-events-calendar::eventCategories.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request)
{
// Validate form datas
$validator = Validator::make($request->all(), [
'name' => 'required',
]);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
}
$eventCategory = new EventCategory();
$this->saveOnDb($request, $eventCategory);
return redirect()->route('eventCategories.index')
->with('success', __('laravel-events-calendar::messages.category_added_successfully'));
}
/**
* Display the specified resource.
*
* @param \DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory $eventCategory
* @return \Illuminate\View\View
*/
public function show(EventCategory $eventCategory)
{
return view('laravel-events-calendar::eventCategories.show', compact('eventCategory'));
}
/**
* Show the form for editing the specified resource.
*
* @param \DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory $eventCategory
* @return \Illuminate\View\View
*/
public function edit(EventCategory $eventCategory)
{
return view('laravel-events-calendar::eventCategories.edit', compact('eventCategory'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory $eventCategory
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, EventCategory $eventCategory)
{
request()->validate([
'name' => 'required',
]);
$this->saveOnDb($request, $eventCategory);
return redirect()->route('eventCategories.index')
->with('success', __('laravel-events-calendar::messages.category_updated_successfully'));
}
/**
* Remove the specified resource from storage.
*
* @param \DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory $eventCategory
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(EventCategory $eventCategory)
{
$eventCategory->delete();
return redirect()->route('eventCategories.index')
->with('success', __('laravel-events-calendar::messages.category_deleted_successfully'));
}
// **********************************************************************
/**
* Return the single event category datas by cat id.
*
* @param int $cat_id
* @return \DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory
*/
/*public function eventcategorydata($cat_id)
{
$ret = DB::table('event_categories')->where('id', $cat_id)->first();
//dump($ret);
return $ret;
}*/
// **********************************************************************
/**
* Save/Update the record on DB.
*
* @param \Illuminate\Http\Request $request
* @param \DavideCasiraghi\LaravelEventsCalendar\Models\EventCategory $eventCategory
* @return void
*/
public function saveOnDb(Request $request, EventCategory $eventCategory): void
{
$eventCategory->name = $request->get('name');
$eventCategory->slug = Str::slug($eventCategory->name, '-');
$eventCategory->save();
}
}