Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/SubCategoryController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB, Exception, Setting;
use App\Models\{ SubCategory, Category };
use App\Http\Requests\Admin\SubCategory\{ SubCategoryPostRequest, SubCategoryGetRequest };
class SubCategoryController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
$this->middleware('auth:admin');
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method sub_categories_index()
*
* @uses to list the sub_categories
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to sub_categories index page
*/
public function sub_categories_index(Request $request) {
$category = '';
$base_query = SubCategory::with(['category:id,name'])->withCount(['products'])->orderBy('created_at','DESC');
if($request->filled('search_key')) {
$sub_category_ids = SubCategory::when($request->filled('status'), function ($query) use ($request) {
$query->where('status', $request->status);
})->when($request->filled('category_id'), function ($query) use ($request) {
$query->where('category_id', $request->category_id);
})->where(function($query) use ($request) {
$query->where('name', "LIKE", "%". $request->search_key . "%");
})->orWhereHas('category', function ($query) use ($request) {
$query->where('name', "LIKE", "%" . $request->search_key . "%");
})->pluck('id');
$base_query = $base_query->whereIn('id', $sub_category_ids);
}
if($request->category_id) {
$category = Helper::check_model_exists($request->category_id, CATEGORY);
$base_query = $base_query->where('category_id', $request->category_id);
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
$sub_categories = $base_query->paginate($this->take);
return view('admin.sub_categories.index')
->with('page', 'sub_categories')
->with('sub_page', 'sub_categories-view')
->with(compact(['sub_categories', 'category']));
}
/**
* @method sub_categories_create()
*
* @uses To create a new sub category
*
* @created Karthick
*
* @updated
*
* @param create a new object
*
* @return to create sub category page
*
*/
public function sub_categories_create() {
try {
$sub_category = new SubCategory;
$categories = Category::orderBy('name')->get(['id', 'name']);
return view('admin.sub_categories.create')
->with('page', 'sub_categories')
->with('sub_page', 'sub_categories-create')
->with(compact(['categories', 'sub_category']));
} catch(Exception $e) {
return redirect()->route('admin.sub_categories.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_edit()
*
* @uses to edit sub category details based on the sub_category_id
*
* @created Karthick
*
* @updated
*
* @param object $request - sub_category_id
*
* @return to edit category page
*
*/
public function sub_categories_edit(SubCategoryGetRequest $request) {
try {
$sub_category = SubCategory::find($request->sub_category_id);
$categories = Category::orderBy('name')->get(['id', 'name']);
return view('admin.sub_categories.edit')
->with('page' , 'sub_categories')
->with('sub_page','sub_categories-create')
->with(compact(['categories', 'sub_category']));
} catch(Exception $e) {
return redirect()->route('admin.sub_categories.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_save()
*
* @uses to save the sub category details of new/existing object based on sub_category_id
*
* @created Karthick
*
* @updated
*
* @param object $request - sub_category_id
*
* @return view category page
*
*/
public function sub_categories_save(SubCategoryPostRequest $request) {
try {
DB::begintransaction();
$sub_category = SubCategory::updateOrCreate(['id' => $request->sub_category_id], $request->validated());
if($request->hasFile('picture')) {
$request->sub_category_id ? Helper::storage_delete_file($sub_category->picture, SUB_CATEGORY_FILE_PATH) : '';
$sub_category->picture = Helper::storage_upload_file($request->file('picture'), SUB_CATEGORY_FILE_PATH);
}
if($sub_category->save()) {
DB::commit();
$message = $request->sub_category_id ? tr('sub_category_updated_success') : tr('sub_category_created_success');
return redirect(route('admin.sub_categories.view', ['sub_category_id' => $sub_category->id ]))->with('flash_success', $message);
}
throw new Exception(tr('sub_category_save_failed'));
} catch(Exception $e){
DB::rollback();
return back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_view()
*
* @uses to view the sub category details based on sub_category_id
*
* @created Karthick
*
* @updated
*
* @param object $request - sub_category_id
*
* @return View page
*
*/
public function sub_categories_view(SubCategoryGetRequest $request) {
try {
$sub_category = SubCategory::with(['category:id,name'])->withCount(['products'])->find($request->sub_category_id);
return view('admin.sub_categories.view')
->with('page', 'sub_categories')
->with('sub_page', 'sub_categories-view')
->with('sub_category',$sub_category);
} catch (Exception $e) {
return redirect()->route('admin.sub_categories.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_status
*
* @uses to change sub category status as DECLINED/APPROVED based on sub_category_id
*
* @created Karthick
*
* @updated
*
* @param object $request - sub_category_id
*
* @return response success/failure message
*
**/
public function sub_categories_status(SubCategoryGetRequest $request) {
try {
DB::beginTransaction();
$sub_category = SubCategory::find($request->sub_category_id);
$result = $sub_category->update(['status' => $sub_category->status ? DECLINED : APPROVED]);
if($result) {
DB::commit();
$message = $sub_category->status ? tr('sub_category_approve_success') : tr('sub_category_decline_success');
return back()->with('flash_success', $message);
}
throw new Exception(tr('sub_category_status_change_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.sub_categories.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_delete()
*
* @uses to delete the sub category details based on sub_category_id
*
* @created Karthick
*
* @updated
*
* @param object $request - sub_category_id
*
* @return response of success/failure details with view page
*
*/
public function sub_categories_delete(SubCategoryGetRequest $request) {
try {
DB::begintransaction();
$sub_category = SubCategory::find($request->sub_category_id);
if($sub_category->delete()) {
DB::commit();
return redirect()->route('admin.sub_categories.index')->with('flash_success',tr('sub_category_deleted_success'));
}
throw new Exception(tr('sub_category_delete_failed'));
} catch(Exception $e){
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager