File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/PopupEmbedController.php
<?php
namespace App\Http\Controllers;
use App\Tag;
use Datatables;
use App\PopupEmbed;
use App\TypeAction;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\UtilController;
use App\PopupTags;
use DB;
class PopupEmbedController extends Controller
{
private $util;
public function __construct()
{
$this->util = new UtilController();
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('popup_embed.popup');
}
public function indexAdd()
{
$typeActions = TypeAction::where('active', true)->get();
$multiselectItems = Tag::where('active', true)->get();
return view('popup_embed.addPopup', compact('typeActions'))->with('multiselectItems', $multiselectItems);
}
public function indexEdit($id)
{
$popup = PopupEmbed::find($id);
$typeActions = TypeAction::where('active', true)->get();
$multiselectItems = Tag::where('active', true)->get();
$multiselectSelection = PopupTags::select('tag_id')->where('popup_id', $id)->get();
return view('popup_embed.editPopup', compact('typeActions', 'popup'))
->with('multiselectItems', $multiselectItems)
->with('multiselectSelection', $multiselectSelection);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
$data = $request->all();
if ($data['type_action_id'] == '0')
$data['type_action_id'] = null;
$popup = PopupEmbed::create($data);
if ($request["tags"] != null) {
foreach ($request["tags"] as $tagId) {
PopupTags::create([
'tag_id' => $tagId,
'popup_id' => $popup->id
]);
}
}
if ($popup) {
return array('r' => true, 'd' => array('id' => $popup->id), 'm' => trans('messages.screen_popup_tag14'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_popup_tag15'));
}
}
public function saveImage(Request $request)
{
$id = $request->id;
$extension = $request->file('image')->getClientOriginalExtension();
$filenametostore = $id . '.' . $extension;
Storage::disk('s3')->put(config('s3.popups') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');
$status = PopupEmbed::where('id', $id)->update(['image' => $filenametostore]);
if ($status) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_popup_tag14'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_popup_tag15'));
}
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$tags = $request["tags"];
$request->request->remove('tags');
$popupId = $request["popup_id"];
$data = $request->except('popup_id');
if (!isset($data['id']))
$data['id'] = $popupId;
if ($data['type_action_id'] == '0')
$data['type_action_id'] = null;
if (PopupEmbed::where('id', $popupId)->update($data)) {
if ($tags != null) {
foreach ($tags as $tagId) {
PopupTags::create([
'tag_id' => $tagId,
'popup_id' => $popupId
]);
}
} else {
PopupTags::where('popup_id', $popupId)->delete();
}
return array('r' => true, 'd' => array('id' => $request["popup_id"]), 'm' => trans('messages.screen_popup_tag16'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_popup_tag17'));
}
}
public function updateImage(Request $request)
{
$id = $request->id;
$extension = $request->file('image')->getClientOriginalExtension();
$filenametostore = $id . '.' . $extension;
Storage::disk('s3')->put(config('s3.popups') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');
$status = PopupEmbed::where('id', $id)->update(['image' => $filenametostore]);
if ($status) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_popup_tag16'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_popup_tag17'));
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($popup_id)
{
if (PopupEmbed::where('id', $popup_id)->delete()) {
return response(array("r" => true, "type" => "success", "title" => "", "m" => __('messages.deleted_successfully'), "data" => null));
} else {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_removing'), "data" => null));
}
}
public function activatePopup(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$popup = PopupEmbed::find($id);
$popup->active = $state;
$popup->update();
if ($popup) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_popup_tag18'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_popup_tag19'));
}
}
public function tableFilter()
{
DB::statement("SET sql_mode = ''");
$obj = $obj = PopupEmbed::select(
'popup_embeds.id',
'popup_embeds.title',
'popup_embeds.msj',
'popup_embeds.type_action_id',
'popup_embeds.value',
'popup_embeds.text_button_ok',
'popup_embeds.image',
'popup_embeds.created_at',
'popup_embeds.active',
DB::raw('GROUP_CONCAT(DISTINCT(tags.name)) AS segmentation')
)
->with('type_action')
->leftjoin('popup_tags', 'popup_embeds.id', '=', 'popup_tags.popup_id')
->leftjoin('tags', function ($join) {
$join->on('tags.id', '=', 'popup_tags.tag_id')->where('tags.active', 1);
})
->groupBy('popup_embeds.id');
DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");
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') . '/popups/' . $obj->image, $obj->title, '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="chkPopup(' . $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="chkPopup(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" /><span></span> Si </label> </div> </label> </div>';
}
})
->editColumn('created_at', function ($obj) {
return \Carbon\Carbon::parse($obj->created_at)->format('Y-m-d h:i:s A');
})
->addColumn('actions', function ($obj) {
return '
<i class="fa fa-pencil iconMini" onClick="clickEditPopup(' . $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="clickDeletePopup(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Eliminar" style="cursor:pointer;"></i>
';
})
->rawColumns(['active', 'actions', 'image'])
->make(true);
}
}