File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/BannerController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use DB;
use Datatables;
use App\Banner;
use App\Category;
use App\Parameter;
use App\TypeAction;
use App\Http\Controllers\UtilController;
class BannerController extends Controller
{
private $util;
public function __construct()
{
$this->util = new UtilController();
}
public function index()
{
return view('banners.banners');
}
public function indexAdd()
{
$parameters = Parameter::first();
if ($parameters->sucursal_products) {
$categories = Category::where('active', 1)->with('sucursal')->get();
} else {
$categories = Category::where('active', 1)->get();
}
$typeActions = TypeAction::where('active', true)->get();
return view('banners.addBanner')
->with('parameters', $parameters)
->with('categories', $categories)
->with('typeActions', $typeActions);
}
public function create(Request $request)
{
$banner = new Banner();
$banner->name = $request["name"];
$banner->description = $request["description"];
$banner->active = true;
$banner->order = $request["order"];
$banner->type_action_id = $request["type_action_id"];
$banner->value = $request["value"];
$banner->save();
if ($banner) {
return array('r' => true, 'd' => array('id' => $banner->id), 'm' => trans('messages.screen_banners_tag14'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag15'));
}
}
public function indexEdit($id)
{
$banner = Banner::find($id);
$parameters = Parameter::first();
$typeActions = TypeAction::where('active', true)->get();
if ($parameters->sucursal_products) {
$categories = Category::where('active', 1)->with('sucursal')->get();
} else {
$categories = Category::where('active', 1)->get();
}
return view('banners.editBanner')
->with('banner', $banner)
->with('parameters', $parameters)
->with('categories', $categories)
->with('typeActions', $typeActions);
}
public function update(Request $request)
{
$banner = Banner::find($request["id"]);
$banner->name = $request["name"];
$banner->description = $request["description"];
$banner->active = true;
$banner->order = $request["order"];
$banner->type_action_id = $request["type_action_id"];
$banner->value = $request["value"];
$banner->update();
if ($banner) {
return array('r' => true, 'd' => array('id' => $banner->id), 'm' => trans('messages.screen_banners_tag16'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag17'));
}
}
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.banners') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');
$status = Banner::where('id', $id)->update(['image' => $filenametostore]);
if ($status) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag14'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag15'));
}
}
public function updateImage(Request $request)
{
$id = $request->id;
$banner = Banner::find($id);
Storage::disk('s3')->delete(config('s3.banners') . $banner->image);
$num_ram = rand(1, 999);
$extension = $request->file('image')->getClientOriginalExtension();
$filenametostore = $num_ram . time() . '.' . $extension;
Storage::disk('s3')->put(config('s3.banners') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');
$status = Banner::where('id', $id)->update(['image' => $filenametostore]);
if ($status) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag16'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag17'));
}
}
public function activateBanner(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$banner = Banner::find($id);
$banner->active = $state;
$banner->update();
if ($banner) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag18'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag19'));
}
}
public function deleteBanner(Request $request)
{
$banner = Banner::find($request['id']);
$banner->delete();
if ($banner) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag20'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag21'));
}
}
public function tableFilter()
{
$obj = $obj = DB::table('banners')
->select('banners.id', 'banners.image', 'banners.name', 'banners.order', 'type_actions.name as name_action', 'banners.value', 'banners.active')
->leftJoin('type_actions', 'banners.type_action_id', '=', 'type_actions.id')->whereNull('banners.deleted_at');
return Datatables::of($obj)
->editColumn('image', function ($obj) {
if (!$obj->image) {
return $this->util->generateEmptyImageColumn();
} else {
return $this->util->generateImageColumnRound(config('filesystems.disks.s3.url') . '/banners/' . $obj->image, $obj->name, 'logo' . $obj->id);
}
})
->addColumn('actions', function ($obj) {
return '
<i class="fa fa-pencil iconMini" onClick="clickEditBanner(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Editar" style="cursor:pointer;"></i>
<i class="fa fa-trash iconMini" onClick="clickDeleteBanner(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Eliminar" style="cursor:pointer;"></i>
';
})
->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="chkBanner(' . $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="chkBanner(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" /><span></span> Si </label> </div> </label> </div>';
}
})
->rawColumns(['active', 'actions', 'image'])
->make(true);
}
}