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);
}
}