OwlCyberSecurity - MANAGER
Edit File: CouponsController.php
<?php namespace App\Http\Controllers; use App\Http\Requests\CouponAddRequest; use App\Http\Requests\CouponUpdateRequest; use App\Models\Coupon; use App\Models\Store; use DateTime; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Throwable; class CouponsController extends Controller { //Returns coupons view public function index(Request $request){ $StoreID = 0; if($request->has('store_id')) { $StoreID = (int) $request->get('store_id'); } $stores = Store::get(); return view('Coupons.index' , ['title' => 'Coupons Listing', 'stores' => $stores, 'StoreID' => $StoreID]); } //Returns coupons listing public function coupons_listing(Request $request){ if ($request->has('NewOrders') && !empty($request->NewOrders)) { $CouponsArr = explode(',', $request->NewOrders); foreach ($CouponsArr as $coupon) { $CouponIDAndOrder = explode('-', $coupon); $CouponID = $CouponIDAndOrder[0]; $CouponOrder = $CouponIDAndOrder[1]; Coupon::where('id', $CouponID)->update(['order_number' => $CouponOrder, 'updated_at' => new \DateTime(), 'updated_by' => auth()->user()->id]); } } $StoreID = 0; if($request->has('store_id')) { $StoreID = (int) $request->get('store_id'); } // Get required data $draw = $request->get('draw'); $start = $request->get('start'); $length = $request->get('length'); $orderArray = $request->get('order'); $orderBy = $orderArray[0]['column']; $orderDir = $orderArray[0]['dir']; $searchArray = $request->get('search'); $searchValue = $searchArray['value']; // preparing select query $q = Coupon::selectRaw(' coupons.id, store_id, coupons.coupon_name, stores.title as store, addedUser.name as addedByName, addedUser.last_name as addedByLastName, updatedUser.name as updatedByName, updatedUser.last_name as updatedByLastName, coupons.code, IF(coupons.status = 1 , "Active" , "Inactive") as status_fomated, DATE_FORMAT(coupons.created_at,"%d/%m/%Y<br>%h:%i:%s %p") as created_date, DATE_FORMAT(coupons.updated_at,"%d/%m/%Y<br>%h:%i:%s %p") as updated_date') ->leftjoin('stores', 'stores.id', '=', 'coupons.store_id') ->leftjoin('users as addedUser', 'addedUser.id', '=', 'coupons.added_by') ->leftjoin('users as updatedUser', 'updatedUser.id', '=', 'coupons.updated_by'); $total = $q->count(); if($StoreID > 0) { $q->where('store_id', $StoreID); } // search functionality if(isset($searchValue) && !empty($searchValue)){ $formated_search = preg_replace('/[^\sA-Za-z0-9@.\/\-]/', '', strtolower($searchValue)); $q->whereRaw('( coupons.coupon_name LIKE "%'.$formated_search.'%" OR coupons.code LIKE "%'.$formated_search.'%" OR stores.title LIKE "%'.$formated_search.'%" OR IF(coupons.status = 1 , "Active" , "Inactive") LIKE "%'.$formated_search.'%" OR DATE_FORMAT(coupons.created_at,"%d/%m/%Y<br>%h:%i:%s %p") LIKE "%'.$formated_search.'%" OR DATE_FORMAT(coupons.updated_at,"%d/%m/%Y<br>%h:%i:%s %p") LIKE "%' . $formated_search . '%" )'); } // column ordering // if(isset($orderBy) && isset($orderDir)){ // $columns = [ // 1 => 'coupons.id', // 2 => 'coupons.coupon_name', // 3 => 'coupons.code', // 4 => 'store', // 5 => 'status_fomated', // 6 => 'created_date', // 7 => 'updated_date' // ]; // if(array_key_exists($orderBy , $columns)){ // $q->orderBy($columns[$orderBy] , $orderDir); // } // } // filtered cound $filtered = $q->orderby('order_number', 'asc')->count(); // requested data size $records = $q->skip($start)->take($length)->get(); // formating data $data = []; foreach($records as $r){ $data[] = [ 'checkbox' => '<input type="checkbox" name="checkbox'.$r->id.'" id="checkbox'.$r->id.'" class="checkboxes" value="'.$r->id.'">', 'id' => $r->id, 'name' => $r->coupon_name, 'code' => $r->code, 'store' => $r->store, 'status' => $r->status_fomated, 'created_at' => $r->created_date . '<br>' . $r->addedByName . ' ' . $r->addedByLastName, 'updated_at' => $r->updated_date . '<br>' . $r->updatedByName . ' ' . $r->updatedByLastName, 'action' => '<a href="'.route('get_coupons_edit.edit_coupons' , ['id' => $r->id ]).'"><button class="custom-blue-btn w-100">Edit</button></a>', ]; } // returning response return response()->json([ "draw" => intval($draw), "iTotalRecords" => $total, "iTotalDisplayRecords" => $filtered, "aaData" => $data ] ,200); } // Return coupons add view public function add(){ $stores = Store::where('status' , 1)->get(); return view('Coupons.add', ['title' => 'Add Coupon' , 'stores' => $stores]); } // Stores coupon public function store(CouponAddRequest $request){ try { // new coupon object $coupon = new Coupon(); // add data $coupon->coupon_name = $request->get('name'); $coupon->description = $request->get('description'); $coupon->long_description = $request->get('long_description'); $coupon->code = $request->get('code'); $coupon->destination_url = $request->get('destination_url'); $coupon->ending_date = !empty($request->get('ending_date')) ? (DateTime::createFromFormat('m/d/Y',$request->get('ending_date')) ? DateTime::createFromFormat('m/d/Y',$request->get('ending_date'))->format('Y-m-d') : null) : null; $coupon->store_id = $request->get('store'); $coupon->status = $request->get('status'); $coupon->never_expire = !empty($request->get('never_expire')) ? 1 : 0; $coupon->featured = !empty($request->get('featured')) ? 1 : 0; $coupon->free_shipping = !empty($request->get('free_shipping')) ? 1 : 0; $coupon->coupon_code = !empty($request->get('coupon_code')) ? 1 : 0; $coupon->deal = !empty($request->get('deal')) ? 1 : 0; $coupon->valentine = !empty($request->get('valentine')) ? 1 : 0; $coupon->created_at = new \DateTime(); $coupon->updated_at = new \DateTime(); $coupon->added_by = auth()->user()->id; // creating new coupon $coupon->save(); Store::where('id', $request->get('store'))->update(['updated_at' => new \DateTime()]); return redirect('admin/coupons/add')->with('success' , 'Coupon added.'); } catch (Throwable $th){ return redirect()->back()->with('message' , $th->getMessage())->withInput($request->except('image')); } } // Return coupon edit view public function edit($id){ // requested coupon data if($id > 0){ $coupon = Coupon::where('id' , $id)->first(); $stores = Store::where('status' , 1)->get(); if(!empty($coupon)){ return view('Coupons.edit', ['title' => 'Edit Coupon' , 'coupon' => $coupon , 'stores' => $stores]); } else{ return redirect('admin/coupons')->with('message' , 'Coupon not found'); } } return redirect('login'); } public function update(CouponUpdateRequest $request , $id){ if($id > 0){ $coupon = Coupon::where('id' , $id)->first(); if(!empty($coupon)){ DB::beginTransaction(); try { // add data $coupon->coupon_name = $request->get('name'); $coupon->description = $request->get('description'); $coupon->long_description = $request->get('long_description'); $coupon->code = $request->get('code'); $coupon->destination_url = $request->get('destination_url'); $coupon->ending_date = !empty($request->get('ending_date')) ? (DateTime::createFromFormat('m/d/Y',$request->get('ending_date')) ? DateTime::createFromFormat('m/d/Y',$request->get('ending_date'))->format('Y-m-d') : null) : null; $coupon->store_id = $request->get('store'); $coupon->status = $request->get('status'); $coupon->never_expire = !empty($request->get('never_expire')) ? 1 : 0; $coupon->featured = !empty($request->get('featured')) ? 1 : 0; $coupon->free_shipping = !empty($request->get('free_shipping')) ? 1 : 0; $coupon->coupon_code = !empty($request->get('coupon_code')) ? 1 : 0; $coupon->deal = !empty($request->get('deal')) ? 1 : 0; $coupon->valentine = !empty($request->get('valentine')) ? 1 : 0; $coupon->updated_at = new \DateTime(); $coupon->updated_by = auth()->user()->id; // update coupon $coupon->update(); Store::where('id', $request->get('store'))->update(['updated_at' => new \DateTime()]); DB::commit(); return redirect('admin/coupons/edit/'.$id)->with('success' , 'Coupon updated.'); } catch (Throwable $th){ DB::rollBack(); return redirect()->back()->with('message' , $th->getMessage())->withInput($request->except('image')); } } } return route('login'); } // delete selected coupon ajax function public function delete(Request $request){ DB::beginTransaction(); try { $ids = is_array($request->get('ids')) ? $request->get('ids') : []; if(count($ids)){ Coupon::whereIn('id' , $ids)->delete(); DB::commit(); return response()->json(['success' => true , 'message' => 'Coupon'.(count($ids) > 1 ? "s" : "").' deleted successfully.'] , 200); } return response()->json(['message' => 'No Coupon selected'] , 422); } catch (Throwable $th){ DB::rollBack(); return response()->json(['message' => $th->getMessage()] , 422); } } }