Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/Admin/SubCategoryController.php
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Helpers\Helper, App\Helpers\EnvEditorHelper;
use DB, Hash, Exception, File, Setting, Validator;
use App\Models\User, App\Models\Settings,App\Models\Category, App\Models\SubCategory;
use App\Jobs\SendEmailJob;
class SubCategoryController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
protected $paginate_count;
public function __construct() {
$this->middleware('auth:admin');
$this->paginate_count = 10;
}
/**
* @method sub_categories_index()
*
* @uses To create a sub_category object details
*
* @created Sakthi
*
* @updated
*
* @param
*
* @return View page
*/
public function sub_categories_index(Request $request) {
$base_query = SubCategory::orderBy('updated_at','desc');
if($request->search_key) {
$base_query = $base_query
->where('name','LIKE','%'.$request->search_key.'%');
}
$sub_categories = $base_query->paginate($this->paginate_count);
return view('admin.sub_categories.index')
->with('page', 'sub_categories')
->with('sub_page' , 'sub_categories-view')
->with('sub_categories' , $sub_categories);
}
/**
* @method sub_categories_create()
*
* @uses To create a sub_category object details
*
* @created Sakthi
*
* @updated
*
* @param
*
* @return View page
*/
public function sub_categories_create(Request $request) {
$category = Category::where('status',APPROVED)->get();
$sub_category = new SubCategory;
return view('admin.sub_categories.create')
->with('page' ,'sub_categories')
->with('sub_page' ,'sub_categories-create')
->with('category' , $category)
->with('sub_category' , $sub_category);
}
/**
* @method sub_categories_save()
*
* @uses To save the sub_category object details of new/existing based on details
*
* @created Sakthu
*
* @updated
*
* @param Integer (request) $sub_category_id , (request) sub_category details
*
* @return success/error message
*/
public function sub_categories_save(Request $request) {
try {
DB::begintransaction();
$rules = [
'category_id' => $request->category_id ? 'required|exists:categories,id' : 'required|exists:categories,id',
'name' => 'required|max:191',
'picture' => 'mimes:jpg,png,jpeg',
'description' => 'max:199',
];
Helper::custom_validator($request->all(),$rules);
$sub_category = SubCategory::find($request->sub_category_id) ?? new SubCategory;
$message = $request->sub_category_id ? tr('sub_category_updated_success') : tr('sub_category_created_success');
$sub_category->category_id = $request->category_id ?? '';
$sub_category->name = $request->name ?: $sub_category->name;
$sub_category->description = $request->description ?: '';
// Upload picture
if($request->hasFile('picture')) {
if($request->sub_category_id) {
Helper::storage_delete_file($sub_category->picture, FILE_PATH_SUB_CATEGORY);
// Delete the old pic
}
$sub_category->picture = Helper::storage_upload_file($request->file('picture'), FILE_PATH_SUB_CATEGORY);
}
if($sub_category->save()) {
DB::commit();
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 redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_view()
*
* @uses displays the specified category details based on sub category id
*
* @created Sakthi
*
* @updated
*
* @param object $request - sub category Id
*
* @return View page
*
*/
public function sub_categories_view(Request $request) {
try {
$sub_category = SubCategory::find($request->sub_category_id);
if(!$sub_category) {
throw new Exception(tr('sub_category_not_found'), 101);
}
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()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_edit()
*
* @uses To display and update sub category details based on the sub_category id
*
* @created Sakthi
*
* @updated
*
* @param object $request - SubCategory Id
*
* @return redirect view page
*
*/
public function sub_categories_edit(Request $request) {
try {
$sub_category = SubCategory::find($request->sub_category_id);
$category = selected(Category::orderby('name', 'asc')->where('status',APPROVED)->get(), $sub_category->category_id, 'id');
if(!$sub_category) {
throw new Exception(tr('sub_category_not_found'), 101);
}
return view('admin.sub_categories.edit')
->with('page' , 'sub_categories')
->with('sub_page', 'sub_categories-view')
->with('category' , $category)
->with('sub_category', $sub_category);
} catch(Exception $e) {
return redirect()->route('admin.sub_categories.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_delete()
*
* @uses delete the sub category details based on sub category id
*
* @created Sakthi
*
* @updated
*
* @param object $request - Sub Category Id
*
* @return response of success/failure details with view page
*
*/
public function sub_categories_delete(Request $request) {
try {
DB::begintransaction();
$sub_category = SubCategory::find($request->sub_category_id);
if(!$sub_category) {
throw new Exception(tr('sub_category_not_found'), 101);
}
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 redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method sub_categories_status
*
* @uses To update category status as DECLINED/APPROVED based on sub_category id
*
* @created Sakthi
*
* @updated
*
* @param object $request - Sub Category Id
*
* @return response success/failure message
*
**/
public function sub_categories_status(Request $request) {
try {
DB::beginTransaction();
$sub_category = SubCategory::find($request->sub_category_id);
if(!$sub_category) {
throw new Exception(tr('sub_category_not_found'), 101);
}
$sub_category->status = $sub_category->status ? DECLINED : APPROVED ;
if($sub_category->save()) {
DB::commit();
$message = $sub_category->status ? tr('sub_category_approve_success') : tr('sub_category_decline_success');
return redirect()->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());
}
}
}
Back to Directory
File Manager