File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/CouponsController.php
<?php
namespace App\Http\Controllers;
use DB;
use App\Tag;
use Datatables;
use App\Coupons;
use App\CouponTag;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\UtilController;
class CouponsController extends Controller
{
private $util;
public function __construct()
{
$this->util = new UtilController();
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$coupons = Coupons::latest()->paginate(5);
return view('coupons.coupons', compact('coupons'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
public function indexAdd()
{
$multiselectItems = Tag::where('active', true)->get();
return view('coupons.addCoupons')->with('multiselectItems', $multiselectItems);
}
public function indexEdit($id)
{
$coupons = Coupons::find($id);
$multiselectItems = Tag::where('active', true)->get();
$multiselectValues = CouponTag::select('tag_id')->where('coupon_id', $id)->get();
return view('coupons.editCoupons')
->with('coupons', $coupons)
->with('multiselectItems', $multiselectItems)
->with('multiselectValues', $multiselectValues);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
$codes = $request["codes"];
if ($codes) {
if (count(explode(",", $codes)) < $request["quantity"]) {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_coupon_tag29'));
}
}
$wallet_coupons = new Coupons();
$wallet_coupons->name = $request["name"];
$wallet_coupons->coupon_image = $request["coupon_image"];
$wallet_coupons->code_coupon = $request["code_coupon"];
$wallet_coupons->link = $request["link"];
$wallet_coupons->active = true;
$wallet_coupons->quantity = $request["quantity"];
$wallet_coupons->quantity_per_user = $request["quantity_per_user"];
$wallet_coupons->codes = $request["codes"];
$wallet_coupons->message = $request["message"];
$wallet_coupons->link_redeem = $request["link_redeem"];
$wallet_coupons->save();
if ($wallet_coupons) {
$tags = $request["tags"];
if ($tags != null) {
foreach ($tags as $tagId) {
CouponTag::create([
'tag_id' => $tagId,
'coupon_id' => $wallet_coupons->id
]);
}
}
return array('r' => true, 'd' => array('id' => $wallet_coupons->id), 'm' => trans('messages.screen_points_tag3'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_points_tag4'));
}
}
/**
* 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 \App\Coupons $coupons
* @return \Illuminate\Http\Response
*/
public function show(Coupons $coupons)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Coupons $coupons
* @return \Illuminate\Http\Response
*/
public function edit(Coupons $coupons)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Coupons $coupons
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$wallet_coupons = Coupons::find($request["id"]);
$wallet_coupons->name = $request["name"];
if ($request["coupon_image"] != '') {
$wallet_coupons->coupon_image = $request["coupon_image"];
}
$wallet_coupons->link = $request["link"];
$wallet_coupons->quantity = $request["quantity"];
$wallet_coupons->quantity_per_user = $request["quantity_per_user"];
$wallet_coupons->codes = $request["codes"];
// Reemplazar los saltos de lĂnea (hexadecimal 0x0A) por <br> antes de guardar
$message = $request->input('message');
$message = str_replace("\x0A", '<br>', $message);
$wallet_coupons->message = $message;
$wallet_coupons->link_redeem = $request["link_redeem"];
$wallet_coupons->update();
if ($wallet_coupons) {
CouponTag::where('coupon_id', $wallet_coupons->id)->delete();
$tags = $request["tags"];
if ($tags != null) {
foreach ($tags as $tagId) {
CouponTag::create([
'tag_id' => $tagId,
'coupon_id' => $wallet_coupons->id
]);
}
}
return array('r' => true, 'd' => array('id' => $wallet_coupons->id), 'm' => trans('messages.screen_coupon_tag16'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_coupon_tag17'));
}
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Coupons $coupons
* @return \Illuminate\Http\Response
*/
public function destroy(Coupons $coupons)
{
//
}
public function activateCoupons(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$coupon = Coupons::find($id);
$coupon->active = $state;
$coupon->update();
if ($coupon) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_coupon_tag18'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_coupon_tag19'));
}
}
public function tableFilter()
{
$obj = $obj = DB::table('coupons')
->select(
'coupons.id',
'coupons.name',
'coupons.coupon_image',
'coupons.code_coupon',
'coupons.link',
'coupons.created_at',
'coupons.active',
DB::raw('GROUP_CONCAT(DISTINCT(tags.name)) AS segmentation')
)
->leftjoin('coupon_tags', 'coupons.id', '=', 'coupon_tags.coupon_id')
->leftjoin('tags', function ($join) {
$join->on('tags.id', '=', 'coupon_tags.tag_id')->where('tags.active', 1);
})
->groupBy('coupons.id');
DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");
return Datatables::of($obj)
->editColumn('coupon_image', function ($obj) {
if (!$obj->coupon_image) {
return $this->util->generateEmptyImageColumn();
} else {
return $this->util->generateImageColumn(config('filesystems.disks.s3.url') . '/coupons/' . $obj->coupon_image, $obj->name, 'logo' . $obj->id);
}
})
->addColumn('actions', function ($obj) {
return '<i class="fa fa-pencil iconMini" onClick="clickEditCoupon(' . $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="clickDeleteCoupon(' . $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="chkCoupon(' . $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="chkCoupon(' . $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');
})
->rawColumns(['active', 'actions', 'coupon_image'])
->make(true);
}
public function saveImage(Request $request)
{
try {
$id = $request["id"];
$extension = $this->extension($request->file('image')->getMimeType());
$filenametostore = $id . '_cupon' . '.' . $extension;
Storage::disk('s3')->put(config('s3.coupons') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');
Coupons::where('id', $id)->update(['coupon_image' => $filenametostore]);
return response(array("r" => true, "type" => "success", "title" => "", "m" => __('messages.updated_successfully'), "data" => null));
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_updating'), "data" => $th->getMessage()));
}
}
public function saveTerm(Request $request)
{
try {
$id = $request["id"];
$extension = $this->extension($request->file('term')->getMimeType());
if ($extension != 'pdf') {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_file_pdf')));
}
$filenametostore = $id . '_terms' . '.' . $extension;
Storage::disk('s3')->put(config('s3.coupons') . $filenametostore, fopen($request->file('term'), 'r+'), 'public');
$url = config('filesystems.disks.s3.url') . '/coupons/' . $filenametostore;
Coupons::where('id', $id)->update(['link' => $url]);
return response(array("r" => true, "type" => "success", "title" => "", "m" => __('messages.updated_successfully'), "data" => null));
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_updating'), "data" => $th->getMessage()));
}
}
public function delete(Request $request)
{
$id = $request['id'];
CouponTag::where('coupon_id', $id)->delete();
$user = Coupons::find($id);
$user->delete();
return array('r' => true, 'm' => trans('messages.screen_coupon_tag20'));
}
protected static function generateRandomString($max_length = 12)
{
return Str::random($max_length);
}
}