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