[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: CampaignController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Validator; use Illuminate\Http\Request; use App\Models\Campaign; use App\Models\ItemCampaign; use App\Models\Restaurant; use Brian2694\Toastr\Facades\Toastr; use Carbon\Carbon; use Illuminate\Support\Facades\Storage; use App\CentralLogics\Helpers; class CampaignController extends Controller { function index($type) { return view('admin-views.campaign.'.$type.'.index'); } function list($type) { if($type=='basic') { $campaigns=Campaign::latest()->paginate(config('default_pagination')); } else{ $campaigns=ItemCampaign::latest()->paginate(config('default_pagination')); } return view('admin-views.campaign.'.$type.'.list', compact('campaigns')); } public function storeBasic(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:campaigns', 'image' => 'required', ], [ 'title.required' => 'Title is required!', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $campaign = new Campaign; $campaign->title = $request->title; $campaign->description = $request->description; $campaign->image = Helpers::upload('campaign/', 'png', $request->file('image')); $campaign->start_date = $request->start_date; $campaign->end_date = $request->end_date; $campaign->start_time = $request->start_time; $campaign->end_time = $request->end_time; $campaign->save(); return response()->json([], 200); } public function update(Request $request, Campaign $campaign) { $request->validate([ 'title' => 'required', ], [ 'title.required' => 'Title is required!', ]); $campaign->title = $request->title; $campaign->description = $request->description; $campaign->image = $request->has('image') ? Helpers::update('campaign/', $campaign->image, 'png', $request->file('image')) : $campaign->image;; $campaign->start_date = $request->start_date; $campaign->end_date = $request->end_date; $campaign->start_time = $request->start_time; $campaign->end_time = $request->end_time; $campaign->save(); return response()->json([], 200); } public function storeItem(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:item_campaigns', 'image' => 'required', 'category_id' => 'required', 'price' => 'required|numeric|min:1', 'restaurant_id' => 'required', 'start_time' => 'required', 'end_time' => 'required', 'start_date' => 'required', 'start_date' => 'required', ], [ 'title.required' => 'Title is required!', 'category_id.required' => 'category is required!', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)]); } if ($request['discount_type'] == 'percent') { $dis = ($request['price'] / 100) * $request['discount']; } else { $dis = $request['discount']; } if ($request['price'] <= $dis) { $validator->getMessageBag()->add('unit_price', 'Discount can not be more or equal to the price!'); } if ($request['price'] <= $dis || $validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $campaign = new ItemCampaign; $category = []; if ($request->category_id != null) { array_push($category, [ 'id' => $request->category_id, 'position' => 1, ]); } if ($request->sub_category_id != null) { array_push($category, [ 'id' => $request->sub_category_id, 'position' => 2, ]); } if ($request->sub_sub_category_id != null) { array_push($category, [ 'id' => $request->sub_sub_category_id, 'position' => 3, ]); } $campaign->category_ids = json_encode($category); $choice_options = []; if ($request->has('choice')) { foreach ($request->choice_no as $key => $no) { $str = 'choice_options_' . $no; if ($request[$str][0] == null) { $validator->getMessageBag()->add('name', 'Attribute choice option values can not be null!'); return response()->json(['errors' => Helpers::error_processor($validator)]); } $item['name'] = 'choice_' . $no; $item['title'] = $request->choice[$key]; $item['options'] = explode(',', implode('|', preg_replace('/\s+/', ' ', $request[$str]))); array_push($choice_options, $item); } } $campaign->choice_options = json_encode($choice_options); $variations = []; $options = []; if ($request->has('choice_no')) { foreach ($request->choice_no as $key => $no) { $name = 'choice_options_' . $no; $my_str = implode('|', $request[$name]); array_push($options, explode(',', $my_str)); } } //Generates the combinations of customer choice options $combinations = Helpers::combinations($options); if (count($combinations[0]) > 0) { foreach ($combinations as $key => $combination) { $str = ''; foreach ($combination as $k => $item) { if ($k > 0) { $str .= '-' . str_replace(' ', '', $item); } else { $str .= str_replace(' ', '', $item); } } $item = []; $item['type'] = $str; $item['price'] = abs($request['price_' . str_replace('.', '_', $str)]); array_push($variations, $item); } } $campaign->admin_id = auth('admin')->id(); $campaign->title = $request->title; $campaign->description = $request->description; $campaign->image = Helpers::upload('campaign/', 'png', $request->file('image')); $campaign->start_date = $request->start_date; $campaign->end_date = $request->end_date; $campaign->start_time = $request->start_time; $campaign->end_time = $request->end_time; $campaign->variations = json_encode($variations); $campaign->price = $request->price; $campaign->discount = $request->discount_type == 'amount' ? $request->discount : $request->discount; $campaign->discount_type = $request->discount_type; $campaign->attributes = $request->has('attribute_id') ? json_encode($request->attribute_id) : json_encode([]); $campaign->add_ons = $request->has('addon_ids') ? json_encode($request->addon_ids) : json_encode([]); $campaign->restaurant_id = $request->restaurant_id; $campaign->save(); return response()->json([], 200); } public function updateItem(ItemCampaign $campaign, Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:item_campaigns,title,'.$campaign->id, 'category_id' => 'required', 'price' => 'required|numeric|min:1', 'restaurant_id' => 'required', ], [ 'title.required' => 'Title is required!', 'category_id.required' => 'category is required!', ]); if ($validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)]); } if ($request['discount_type'] == 'percent') { $dis = ($request['price'] / 100) * $request['discount']; } else { $dis = $request['discount']; } if ($request['price'] <= $dis) { $validator->getMessageBag()->add('unit_price', 'Discount can not be more or equal to the price!'); } if ($request['price'] <= $dis || $validator->fails()) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $category = []; if ($request->category_id != null) { array_push($category, [ 'id' => $request->category_id, 'position' => 1, ]); } if ($request->sub_category_id != null) { array_push($category, [ 'id' => $request->sub_category_id, 'position' => 2, ]); } if ($request->sub_sub_category_id != null) { array_push($category, [ 'id' => $request->sub_sub_category_id, 'position' => 3, ]); } $campaign->category_ids = json_encode($category); $choice_options = []; if ($request->has('choice')) { foreach ($request->choice_no as $key => $no) { $str = 'choice_options_' . $no; if ($request[$str][0] == null) { $validator->getMessageBag()->add('name', 'Attribute choice option values can not be null!'); return response()->json(['errors' => Helpers::error_processor($validator)]); } $item['name'] = 'choice_' . $no; $item['title'] = $request->choice[$key]; $item['options'] = explode(',', implode('|', preg_replace('/\s+/', ' ', $request[$str]))); array_push($choice_options, $item); } } $campaign->choice_options = json_encode($choice_options); $variations = []; $options = []; if ($request->has('choice_no')) { foreach ($request->choice_no as $key => $no) { $name = 'choice_options_' . $no; $my_str = implode('|', $request[$name]); array_push($options, explode(',', $my_str)); } } //Generates the combinations of customer choice options $combinations = Helpers::combinations($options); if (count($combinations[0]) > 0) { foreach ($combinations as $key => $combination) { $str = ''; foreach ($combination as $k => $item) { if ($k > 0) { $str .= '-' . str_replace(' ', '', $item); } else { $str .= str_replace(' ', '', $item); } } $item = []; $item['type'] = $str; $item['price'] = abs($request['price_' . str_replace('.', '_', $str)]); array_push($variations, $item); } } $campaign->title = $request->title; $campaign->description = $request->description; $campaign->image = $request->has('image') ? Helpers::update('campaign/', $campaign->image, 'png', $request->file('image')) : $campaign->image; $campaign->start_date = $request->start_date; $campaign->end_date = $request->end_date; $campaign->start_time = $request->start_time; $campaign->end_time = $request->end_time; $campaign->restaurant_id = $request->restaurant_id; $campaign->variations = json_encode($variations); $campaign->price = $request->price; $campaign->discount = $request->discount_type == 'amount' ? $request->discount : $request->discount; $campaign->discount_type = $request->discount_type; $campaign->attributes = $request->has('attribute_id') ? json_encode($request->attribute_id) : json_encode([]); $campaign->add_ons = $request->has('addon_ids') ? json_encode($request->addon_ids) : json_encode([]); $campaign->save(); return response()->json([], 200); } public function edit($type, $campaign) { if($type=='basic') { $campaign = Campaign::findOrFail($campaign); } else { $campaign = ItemCampaign::findOrFail($campaign); } return view('admin-views.campaign.'.$type.'.edit', compact('campaign')); } public function view($type, $campaign) { if($type=='basic') { $campaign = Campaign::findOrFail($campaign); $restaurants = $campaign->restaurants()->paginate(config('default_pagination')); $restaurant_ids = []; foreach($campaign->restaurants as $restaurant) { $restaurant_ids[] = $restaurant->id; } return view('admin-views.campaign.basic.view', compact('campaign', 'restaurants', 'restaurant_ids')); } else { $campaign = ItemCampaign::findOrFail($campaign); } return view('admin-views.campaign.item.view', compact('campaign')); } public function status($type, $id, $status) { if($type=='item') { $campaign = ItemCampaign::find($id); } else{ $campaign = Campaign::find($id); } $campaign->status = $status; $campaign->save(); Toastr::success(trans('messages.campaign_status_updated')); return back(); } public function delete(Campaign $campaign) { if (Storage::disk('public')->exists('campaign/' . $campaign->image)) { Storage::disk('public')->delete('campaign/' . $campaign->image); } $campaign->delete(); Toastr::success(trans('messages.campaign_deleted_successfully')); return back(); } public function delete_item(ItemCampaign $campaign) { if (Storage::disk('public')->exists('campaign/' . $campaign->image)) { Storage::disk('public')->delete('campaign/' . $campaign->image); } $campaign->delete(); Toastr::success(trans('messages.campaign_deleted_successfully')); return back(); } public function remove_restaurant(Campaign $campaign, $restaurant) { $campaign->restaurants()->detach($restaurant); $campaign->save(); Toastr::success(trans('messages.restaurant_remove_from_campaign')); return back(); } public function addrestaurant(Request $request, Campaign $campaign) { $campaign->restaurants()->attach($request->restaurant_id); $campaign->save(); Toastr::success(trans('messages.restaurant_added_to_campaign')); return back(); } public function searchBasic(Request $request){ $key = explode(' ', $request['search']); $campaigns=Campaign::where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('title', 'like', "%{$value}%"); } })->limit(50)->get(); return response()->json([ 'view'=>view('admin-views.campaign.basic.partials._table',compact('campaigns'))->render(), 'count'=>$campaigns->count() ]); } public function searchItem(Request $request){ $key = explode(' ', $request['search']); $campaigns=ItemCampaign::where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('title', 'like', "%{$value}%"); } })->limit(50)->get(); return response()->json([ 'view'=>view('admin-views.campaign.item.partials._table',compact('campaigns'))->render() ]); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium166.web-hosting.com
Server IP: 162.0.209.40
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium166.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 75.11 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kataubyb
User ID (UID): 624
Group ID (GID): 625
Script Owner UID: 624
Current Dir Owner: 624