Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mcoil.corals.io/app/Http/Controllers/Admin/CategoryBoxes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mcoil.corals.io/app/Http/Controllers/Admin/CategoryBoxes/CategoryBoxController.php
<?php

namespace App\Http\Controllers\Admin\CategoryBoxes;

use App\Shop\CategoryBoxes\Repositories\Interfaces\CategoryBoxRepositoryInterface;
use App\Shop\CategoryBoxes\Repositories\CategoryBoxRepository;
use App\Shop\CategoryBoxes\CategoryBox;
use App\Shop\CategoryBoxes\Requests\CreateCategoryBoxRequest;
use App\Shop\CategoryBoxes\Requests\UpdateCategoryBoxRequest;
use App\Http\Controllers\Controller;

use App\Shop\Tools\UploadableTrait;
use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use App\Helper\Helper;

class CategoryBoxController extends Controller
{
    use UploadableTrait;

    /**
     * @var CategoryBoxRepositoryInterface
     */
    private $categoryBoxRepo;

    /**
     * CategoryBoxController constructor.
     *
     * @param CategoryBoxRepositoryInterface $categoryBoxRepository
     * @param CategoryBox $categoryBox
     */
    public function __construct(
        CategoryBoxRepositoryInterface $categoryBoxRepository,
        CategoryBox $categoryBox
    ) {
        $this->categoryBoxRepo = $categoryBoxRepository;
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request) {
        $routeName = $request->route()->getName();
        /*$routeName = $request->segments();
        $routeName = Route::currentRouteName();*/
        switch ($routeName) {
            case 'admin.blog.category.list':
                $section = 'blog';
                $heading = 'Blog Categories';
                break;

            case 'admin.long.term.category.list':
                $section = 'long-term';
                $heading = 'Long Term Categories';
                break;
            
            default:
                $section = 'short-term';
                $heading = 'Short Term Categories';
                break;
        }

        $list = CategoryBox::whereSection($section)->orderBy('id','ASC')->paginate(20);
        return view('admin.category-box.list', [
            'section' => $section,
            'heading' => $heading,
            'categories' => $list
        ])->with('i', ($request->input('page', 1) - 1) * 5);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function create() {
        $sections = Helper::categorySection()->pluck('value','id');
        return view(
            'admin.category-box.create', compact('sections')
        );
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  CreateCategoryBoxRequest $request
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function store(CreateCategoryBoxRequest $request) {
        $data = $request->all();
        if ($request->hasFile('image')) {
            $data['image'] = $this->categoryBoxRepo->saveImage($request->file('image'));
        }
        $this->categoryBoxRepo->createCategoryBox($data);
        $redirectRoute = $this->getRedirectToRoute($data['section']);
        $request->session()->flash('message', 'Icon added successfully.');
        return redirect()->route($redirectRoute);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function edit(int $id) {
        $sections = Helper::categorySection()->pluck('value','id');
        $category = $this->categoryBoxRepo->findCategoryBoxById($id);
        $backRoute = $this->getRedirectToRoute($category->section);
        return view(
            'admin.category-box.edit',compact('sections','category','backRoute')
        );
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  UpdateCategoryBoxRequest $request
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function update(UpdateCategoryBoxRequest $request, int $id) {
        $currentData = $this->categoryBoxRepo->findCategoryBoxById($id);
        $currentDataRepo = new CategoryBoxRepository($currentData);
        $data = $request->all();
        
        if ($request->hasFile('image')) {
            $data['image'] = $currentDataRepo->saveImage($request->file('image'));
            if(!empty($data['image'])) {
                $currentDataRepo->deleteImage();
            }
        } else {
            $data['image'] = $currentData->getOriginal()['image'];
        }

        $newData = $currentDataRepo->updateCategoryBox($data);
        $redirectRoute = $this->getRedirectToRoute($newData->section);
        $request->session()->flash('message', 'Update successful');
        return redirect()->route($redirectRoute);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function destroy(Request $request, int $id) {
        $currentData = $this->categoryBoxRepo->findCategoryBoxById($id);
        $redirectRoute = $this->getRedirectToRoute($currentData->section);
        $currentDataRepo = new CategoryBoxRepository($currentData);
        $currentDataRepo->deleteCategoryBox();
        $request->session()->flash('message', 'Category deleted.');
        return redirect()->route($redirectRoute);
    }

    public function getRedirectToRoute($section=null) {
        switch ($section) {
            case 'long-term':
                $redirectRoute = 'admin.long.term.category.list';
                break;

            case 'blog':
                $redirectRoute = 'admin.blog.category.list';
                break;
            
            default:
                $redirectRoute = 'admin.short.term.category.list';
                break;
        }
        return $redirectRoute;
    }
}

Spamworldpro Mini