HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/SubcategoryController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Subcategories;
use App\Category;
use Illuminate\Support\Facades\Storage;
use DB;
use Datatables;
use App\Http\Controllers\WoocommerceController;
use App\Http\Controllers\UtilController;

class SubcategoryController extends Controller
{
    private $util;

    public function __construct(Request $request)
    {
        $this->util = new UtilController();
    }
    public function index($storeType = 'main')
    {
        $subcategories = Subcategories::orderBy('name', 'ASC')->get();
        return view('subcategories.subcategories')
            ->with('subcategories', $subcategories)
            ->with('storeType', $storeType);
    }

    public function indexAdd()
    {
        $categories = Category::all();
        return view('subcategories.addSubcategory')->with('categories', $categories);
    }

    public function indexEdit($storeType = 'main', $id)
    {
        $subcategory = Subcategories::find($id);
        $categories = Category::all();
        return view('subcategories.editSubcategory')
            ->with('subcategory', $subcategory)
            ->with('categories', $categories)
            ->with('storeType', $storeType);
    }

    public function create(Request $request)
    {
        $categoty = Category::find($request["category"]);
        $woo = new WoocommerceController();
        $data = [
            'name'      => $request["name"],
            'parent'    => $categoty->reference_woocommerce_category_id,
        ];
        $reference_category_id = $woo->createCategory($data);

        $subcategory = new Subcategories();
        $subcategory->name =  $request["name"];
        $subcategory->order =  $request["priority"];
        $subcategory->active =  1;
        $subcategory->category_id =  $request["category"];
        $subcategory->reference_woocommerce_category_id =  $reference_category_id;
        $subcategory->save(); //Guarda el nuevo objeto

        $logObject = $subcategory;
        $id = array('id' => $subcategory->id);
        $this->registerLog(Auth::user()->id, trans('messages.subcategories_controller_tag1'), json_encode($logObject), "Create", 6);

        return array('r' => true, 'd' => $id, 'm' => trans('messages.subcategories_controller_tag2')); //Se asigna a una respuesta en array
    }

    public function updateImage(Request $request)
    {
        $id = $request->id;
        $subcategory = Subcategories::find($id);
        $logObject = $subcategory;
        $image = $subcategory->image;
        Storage::disk('s3')->delete(config('s3.subcategories') . $image);
        $num_ram = rand(1, 999);
        $extension = $request->file('image')->getClientOriginalExtension();
        $filenametostore = $num_ram . time() . '.' . $extension;
        Storage::disk('s3')->put(config('s3.subcategories') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');

        $subcategory->image = $filenametostore;
        $subcategory->update();

        $woo = new WoocommerceController();
        $data = [
            'name' => $subcategory->name,
            'image' => [
                'src' => config('filesystems.disks.s3.url') . '/subcategories/' . $filenametostore
            ]
        ];
        $woo->updateCategory($subcategory->reference_woocommerce_category_id, $data);

        $this->registerLog(Auth::user()->id, trans('messages.subcategories_controller_tag3'), json_encode($logObject), "Create", 6);

        return array('r' => true, 'm' => trans('messages.subcategories_controller_tag4'));
    }

    public function saveImage(Request $request)
    {
        $id = $request->id;
        $num_ram = rand(1, 999);
        $extension = $request->file('image')->getClientOriginalExtension();
        $filenametostore = $num_ram . time() . '.' . $extension;
        Storage::disk('s3')->put(config('s3.subcategories') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');

        $subcategory = Subcategories::find($id);
        $logObject = $subcategory;
        $subcategory->image = $filenametostore;
        $subcategory->update();

        $woo = new WoocommerceController();
        $data = [
            'name' => $subcategory->name,
            'image' => [
                'src' => config('filesystems.disks.s3.url') . '/subcategories/' . $filenametostore
            ]
        ];
        $woo->updateCategory($subcategory->reference_woocommerce_category_id, $data);

        $this->registerLog(Auth::user()->id, trans('messages.subcategories_controller_tag5'), json_encode($logObject), "Update", 6);

        return array('r' => true, 'm' => trans('messages.subcategories_controller_tag6'));
    }

    public function update(Request $request)
    {
        $id = $request["id"];
        $subcategory = Subcategories::find($id);

        $woo = new WoocommerceController();
        $data = [
            'name'      => $request["name"],
        ];
        $woo->updateCategory($subcategory->reference_woocommerce_category_id, $data);

        $logObject = $subcategory;
        $id = array('id' => $subcategory->id);
        $subcategory->name =  $request["name"]; //Se asigna el nombre que viene en el request
        $subcategory->order =  $request["priority"]; //Se asigna la prioridad que viene en el request
        $subcategory->category_id =  $request["category_id"]; //Se asigna la categoria que viene en el request
        $subcategory->update(); //Actualiza el objeto

        $this->registerLog(Auth::user()->id, trans('messages.subcategories_controller_tag7'), json_encode($logObject), "Update", 6);

        return array('r' => true, 'd' => $id, 'm' => trans('messages.subcategories_controller_tag8')); //Se asigna a una respuesta en array

    }

    public function activateSubcategory(Request $request)
    {
        $id = $request['id'];
        $state = $request['state'];
        $subcategory = Subcategories::find($id);
        $subcategory->active = $state;
        $logObject = $subcategory;
        $subcategory->update();

        $this->registerLog(Auth::user()->id, trans('messages.subcategories_controller_tag9'), json_encode($logObject), "Update", 6);

        return array('r' => true, 'd' => $id, 'm' => trans('messages.subcategories_controller_tag10'));
    }

    public function delete(Request $request)
    {
        $id = $request['id'];
        $subcategory = Subcategories::find($id);
        $logObject = $subcategory;
        $subcategory->delete();

        $woo = new WoocommerceController();
        $woo->deleteCategory($subcategory->reference_woocommerce_category_id);

        $this->registerLog(Auth::user()->id, trans('messages.subcategories_controller_tag11'), json_encode($logObject), "Delete", 6);
        return array('r' => true, 'd' => $id, 'm' => trans('messages.subcategories_controller_tag6'));
    }


    public function tableFilter($storeType = 'main')
    {
        $obj = $obj = DB::table('subcategories')
            ->select('subcategories.id', 'subcategories.name', 'subcategories.image', 'subcategories.order', 'subcategories.active', 'categories.name as category')
            ->join('categories', 'categories.id', '=', 'subcategories.category_id')
            ->where('subcategories.store_type', $storeType);

        return Datatables::of($obj)
            ->addColumn('actions', function ($obj) {
                return '<i class="fa fa-pencil iconMini" onClick="clickEditSubcategory(' . $obj->id . ')" data-id="' . $obj->id . '" title="Editar"></i>
                        <i class="fa fa-trash iconMini" onClick="clickDeleteSubcategory(' . $obj->id . ')" data-id="' . $obj->id . '" title="Eliminar"></i>';
            })
            ->editColumn('image', function ($obj) {
                if (!$obj->image) {
                    return $this->util->generateEmptyImageColumn();
                } else {
                    return $this->util->generateImageColumn(config('filesystems.disks.s3.url') . '/subcategories/' . $obj->image, $obj->name, 'logo' . $obj->id);
                }
            })
            ->editColumn('active', function ($obj) {
                if ($obj->active == 0) {
                    return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkSubcategory(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" />
                        <span></span>Si </label></div> </label> </div>';
                } else {
                    return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label>   No <input type="checkbox" onChange="chkSubcategory(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
                        <span></span> Si </label> </div>  </label> </div>';
                }
            })
            ->rawColumns(['image', 'active', 'actions'])
            ->make(true);
    }
}