File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/DiscountController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use Datatables;
use App\Discount;
use App\DiscountType;
use App\Product;
use App\DiscountProduct;
use App\DiscountOrderUser;
use App\Category;
class DiscountController extends Controller
{
public function index()
{
$discountTypes = DiscountType::where('active', 1)->orderBy('id', 'ASC')->get();
return view('discounts.discounts')->with('discountTypes', $discountTypes);
}
public function indexAdd()
{
$discountTypes = DiscountType::where('active', 1)->orderBy('id', 'ASC')->get();
$discountShipments = Discount::where([['active', 1], ['discount_type_id', 1]])->first();
$products = Product::where('active', 1)->orderBy('name', 'ASC')->get();
$categories = Category::where('active', 1)->orderBy('name', 'ASC')->get();
if (isset($discountShipments->id)) {
$statusDiscountShipments = true;
} else {
$statusDiscountShipments = false;
}
return view('discounts.addDiscount')
->with('discountTypes', $discountTypes)
->with('products', $products)
->with('statusDiscountShipments', $statusDiscountShipments)
->with('categories', $categories);
}
public function create(Request $request)
{
if ($request["discount_id"] == 1) {
$discount = new Discount();
$discount->name = $request["name"];
$discount->price_discount = $request["price_discount"];
$discount->percentage_discount = $request["percentage_discount"];
$discount->days_register_discount_delivery = $request["days_register_discount_delivery"];
$discount->discount_global_shipping = $request["discount_global_shipping"];
$discount->discount_type_id = $request["discount_id"];
$discount->save();
} else {
$discount = new Discount();
$discount->name = $request["name"];
$discount->value_for_win = $request["value_for_win"];
$discount->message_to_user = $request["message_to_user"];
$discount->when_start = $request["when_start"];
$discount->when_finish = $request["when_finish"];
$discount->max_winners = $request["max_winners"];
$discount->code_coupon = $request["code_coupon"];
$discount->price_discount = $request["price_discount"];
$discount->percentage_discount = $request["percentage_discount"];
$discount->is_multiple_redeem = $request["is_multiple_redeem"];
$discount->is_cumulative_another_discounts = $request["is_cumulative_another_discounts"];
$discount->apply_value = $request["apply_value"];
$discount->category_id = $request["category_id"];
$discount->discount_type_id = $request["discount_id"];
$discount->save();
if ($request["discount_id"] == 5 || $request["discount_id"] == 6) {
foreach ($request["products"] as $key => $product) {
$discountProducts = new DiscountProduct();
$discountProducts->plu = $product['plu'];
$discountProducts->discount_id = $discount->id;
$discountProducts->product_id = $product['id'];
$discountProducts->quantity = $product['value'];
$discountProducts->save();
}
}
if ($request["discount_id"] == 5 || $request["discount_id"] == 6 || $request["discount_id"] == 7 || $request["discount_id"] == 9) {
foreach ($request["productsGift"] as $key => $product) {
$discountProducts = new DiscountProduct();
$discountProducts->is_gift = 1;
$discountProducts->plu = $product['plu'];
$discountProducts->discount_id = $discount->id;
$discountProducts->product_id = $product['id'];
$discountProducts->save();
}
}
}
if ($discount) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_discounts_tag8'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_discounts_tag9'));
}
}
public function indexInfo($id)
{
$discount = Discount::find($id);
if ($discount->discount_type_id == 1) {
$discountUsers = DiscountOrderUser::where('discount_id', $id)->whereNotNull('order_id')->with('user')->with('order')->with('discount')->get();
} else {
$discountUsers = DiscountOrderUser::where('discount_id', $id)->with('user')->with('order')->with('discount')->get();
}
return view('discounts.infoDiscount')
->with('discountUsers', $discountUsers);
}
public function indexEdit($id)
{
$discount = Discount::find($id);
$products = Product::where('active', 1)->orderBy('name', 'ASC')->get();
$productsRequirement = DiscountProduct::where('discount_id', $discount->id)->whereNull('is_gift')->with('product')->get();
$productGift = DiscountProduct::where('discount_id', $discount->id)->whereNotNull('is_gift')->with('product')->get();
if ($discount->discount_type_id == 10) {
$categories = Category::where('active', 1)->orderBy('name', 'ASC')->get();
} else {
$categories = null;
}
return view('discounts.editDiscount')
->with('discount', $discount)
->with('products', $products)
->with('productsRequirement', $productsRequirement)
->with('productGift', $productGift)
->with('categories', $categories);
}
public function update(Request $request)
{
if ($request["type_discount_id"] == 1) {
$discount = Discount::find($request["discount_id"]);
$discount->name = $request["name"];
$discount->price_discount = $request["price_discount"];
$discount->percentage_discount = $request["percentage_discount"];
$discount->days_register_discount_delivery = $request["days_register_discount_delivery"];
$discount->discount_global_shipping = $request["discount_global_shipping"];
$discount->update();
} else {
$discount = Discount::find($request["discount_id"]);
$discount->name = $request["name"];
$discount->value_for_win = $request["value_for_win"];
$discount->message_to_user = $request["message_to_user"];
$discount->when_start = $request["when_start"];
$discount->when_finish = $request["when_finish"];
$discount->max_winners = $request["max_winners"];
$discount->code_coupon = $request["code_coupon"];
$discount->price_discount = $request["price_discount"];
$discount->percentage_discount = $request["percentage_discount"];
$discount->is_multiple_redeem = $request["is_multiple_redeem"];
$discount->is_cumulative_another_discounts = $request["is_cumulative_another_discounts"];
$discount->apply_value = $request["apply_value"];
$discount->category_id = $request["category_id"];
$discount->update();
if ($request["type_discount_id"] == 5 || $request["type_discount_id"] == 6) {
$deletedRowsDiscountProducts = DiscountProduct::where('discount_id', $request["discount_id"])->whereNull('is_gift')->delete();
foreach ($request["products"] as $key => $product) {
$discountProducts = new DiscountProduct();
$discountProducts->plu = $product['plu'];
$discountProducts->discount_id = $request["discount_id"];
$discountProducts->product_id = $product['id'];
$discountProducts->quantity = $product['quantity'];
$discountProducts->save();
}
}
if ($request["type_discount_id"] == 5 || $request["type_discount_id"] == 6 || $request["type_discount_id"] == 7 || $request["type_discount_id"] == 9) {
$deletedRowDiscountProducts = DiscountProduct::where('discount_id', $request["discount_id"])->whereNotNull('is_gift')->delete();
foreach ($request["productsGift"] as $key => $product) {
$discountProducts = new DiscountProduct();
$discountProducts->is_gift = 1;
$discountProducts->plu = $product['plu'];
$discountProducts->discount_id = $request["discount_id"];
$discountProducts->product_id = $product['id'];
$discountProducts->save();
}
}
}
if ($discount) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_discounts_tag53'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_discounts_tag54'));
}
}
public function activateDiscount(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$discount = Discount::find($id);
if ($discount->discount_type_id == 1 && $state) {
Discount::where('discount_type_id', 1)
->update(['active' => 0]);
}
if ($id != $discount->discount_type_id) {
Discount::where('discount_type_id', $discount->discount_type_id)
->update(['active' => 0]);
}
$discount->active = $state;
$discount->update();
if ($discount) {
return array('r' => true, 'd' => null, 'm' => trans('messages.screen_discounts_tag31'));
} else {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_discounts_tag32'));
}
}
public function tableFilter(Request $request)
{
$obj = $obj = DB::table('discounts')
->select('discounts.id', 'discounts.name', 'discounts.active', 'discounts.current_winners', 'discounts.max_winners')->where('discount_type_id', $request["discount_type_id"]);
return Datatables::of($obj)
->addColumn('actions', function ($obj) {
return '<i class="fa fa-eye iconMini" onClick="clickInfoDiscount(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Información" style="cursor:pointer;"></i>
<i class="fa fa-pencil iconMini" onClick="clickEditDiscount(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Editar" 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="chkDiscount(' . $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="chkDiscount(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
<span></span> Si </label> </div> </label> </div>';
}
})
->editColumn('current_winners', function ($obj) {
if ($obj->current_winners == null) {
return '<span> 0 </span>';
} else {
return '<span>' . $obj->current_winners . '</span>';
}
})
->rawColumns(['active', 'actions', 'current_winners'])
->make(true);
}
}