File: /var/www/vhost/disk-apps/agile-selling-wpb/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;
class SubcategoryController extends Controller
{
public function __construct(Request $request)
{
$this->middleware('auth');
// $this->middleware(function ($request, $next) {
// $this->user = Auth::user();
// if(Auth::user()->rol->id == 1 || Auth::user()->rol->id == 6){
// $this->changeDbDefault($request);
// }
// return $next($request);
// });
}
public function index(){
// $rol = Auth::user()->rol->id;
// if ($rol == 1 || $rol == 6) {
$subcategories = Subcategories::orderBy('name', 'ASC')->get();
return view('subcategories.subcategories')->with('subcategories',$subcategories);
// }else{
// return redirect()->back();
// }
}
public function indexAdd(){
$categories = Category::all();
return view('subcategories.addSubcategory')->with('categories',$categories);
}
public function indexEdit($id){
$subcategory = Subcategories::find($id);
$categories = Category::all();
return view('subcategories.editSubcategory')->with('subcategory',$subcategory)->with('categories',$categories);
}
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(env('S3_SUBCATEGORY_PATH').$image);
$num_ram = rand(1, 999);
$extension = $request->file('image')->getClientOriginalExtension();
$filenametostore = $num_ram.time().'.'.$extension;
Storage::disk('s3')->put(env('S3_SUBCATEGORY_PATH').$filenametostore, fopen($request->file('image'), 'r+'), 'public');
$subcategory->image= $filenametostore;
$subcategory->update();
$woo = new WoocommerceController();
$data = [
'name' => $subcategory->name,
'image' => [
'src' => env('AWS_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(env('S3_SUBCATEGORY_PATH').$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' => env('AWS_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(){
$obj = $obj = DB::table('subcategories')
->join('categories', 'categories.id', '=', 'subcategories.category_id')
->select('subcategories.id', 'subcategories.name','subcategories.image','subcategories.order','subcategories.active','categories.name as category');
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>';
})
->editColumn('image', function ($obj) {
if($obj->image == ''){
return '<div class="media-left">
<p>Sin imagen</p>
</div>';
}else{
return '<div class="media-left">
<img src="' . env('AWS_URL') . '/subcategories/'.$obj->image.'" class="media-object " alt="User Image">
</div>';
}
})
->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);
}
}