Viewing file: FrontendController.php (26.96 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Front;
use App\Http\Controllers\SyncController; use App\Models\Review; use Illuminate\{ Http\Request, Support\Facades\Session };
use App\{ Models\Item, Models\Setting, Models\Subscriber, Helpers\EmailHelper, Http\Controllers\Controller, Http\Requests\ReviewRequest, Http\Requests\SubscribeRequest, Repositories\Front\FrontRepository }; use App\Helpers\SmsHelper; use App\Models\Brand; use App\Models\CampaignItem; use App\Models\Category; use App\Models\ChieldCategory; use App\Models\Fcategory; use App\Models\HomeCutomize; use App\Models\Order; use App\Models\Transaction; use App\Models\Post; use App\Models\Service; use App\Models\Slider; use App\Models\Subcategory; use App\Models\TrackOrder; use App\Models\Currency; use Carbon\Carbon; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Cache; use function GuzzleHttp\json_decode;
class FrontendController extends Controller {
/** * Constructor Method. * * @param \App\Repositories\Front\FrontRepository $repository * */ public function __construct(FrontRepository $repository) { $this->repository = $repository; $setting = Setting::first(); if (isset($setting) && $setting->recaptcha == 1) { Config::set('captcha.sitekey', $setting->google_recaptcha_site_key); Config::set('captcha.secret', $setting->google_recaptcha_secret_key); }
$this->middleware('localize'); }
public function details($slug){ if(!$slug){ return redirect()->back(); } $data['post'] = Post::where('slug',$slug)->first();
return view('front.details',$data); } public function event(){ return view('front.event'); } public function news(){ $homeCutomize = HomeCutomize::first(); $data['news_reports'] = json_decode($homeCutomize->news); return view('front.news',$data); } public function getAllEvent(Request $request){
$games = Post::orderBy('created_at', 'desc'); if($request->type){ $games = $games->where('type',$request->type); } $games = $games->get(); return response()->json(['data' => $games, 'status' => 'ok']);
} public function games(){ return view('front.games'); } public function store_games(){ return view('front.store_games'); } public function conditions(){ $homeCutomize = HomeCutomize::first(); $conditions = ""; if(isset($homeCutomize) && isset($homeCutomize->conditions) && $homeCutomize->conditions){ $conditions = json_decode($homeCutomize->conditions); } $data['conditions'] = $conditions; return view('front.conditions',$data); } public function policy(){ $homeCutomize = HomeCutomize::first(); $policy = ''; if(isset($homeCutomize) && isset($homeCutomize->policy) && $homeCutomize->policy){ $policy = json_decode($homeCutomize->policy); } $data['policy'] = $policy; return view('front.policy',$data); } public function careers(){ $homeCutomize = HomeCutomize::first(); $data['policy'] = json_decode($homeCutomize->policy); return view('front.careers',$data); } public function payment_channels(){ $homeCutomize = HomeCutomize::first(); $data['policy'] = json_decode($homeCutomize->policy); return view('front.payment_channels',$data); } public function top_up($code){ $game = Category::where('code',$code)->firstOrFail(); if(!$game){ return redirect()->back()->withErrors('Game not Found'); } $items = Item::where('category_code',$code)->where('status','available')->get(); $data['items'] = $items; $data['game'] = $game; return view('front.top_up',$data); } public function top_up_process(Request $request){
try { $user = Auth::user(); if (!$user) { return redirect()->route('user.login')->withErrors('Top up Failed , Try again later'); } $items = Item::where('code', $request->code)->firstOrFail();
if (!$items) { return redirect()->back()->withErrors('Top up Failed , Try again later'); }
$category = new SyncController(); $respons = $category->createOrder($request->user_id, $request->additional_id ?? null, $request->additional_information ?? null, $request->orderdetail ?? null, 1, $items->code, $items->code, $items->price, null, null);
$order = new SyncController(); $order_respons = $order->orderStatus($respons->tid);
$newOrder = new Order(); $newOrder->user_id = $user->id; $newOrder->txn_id = $respons->tid; $newOrder->total_price = $respons->total_price; $newOrder->currency_sign = '$'; $newOrder->currency_value = 1; $newOrder->order_status = $order_respons->status; $newOrder->payment_method = $request->wallet_name; $newOrder->payment_status = 'paid'; $newOrder->item_id = $items->id; $newOrder->save();
$transactionsData = [];
foreach ($order_respons->transactions as $transaction) { $transactionsData[] = [ 'order_id' => $items->id, 'user_id' => $user->id, 'txn_id' => $transaction->id, 'user_email' => $request->user_id, 'currency_sign' => '$', 'currency_value' => 1, 'product_name' => $transaction->product_name, 'status' => $transaction->status, ]; }
Transaction::insert($transactionsData);
return redirect()->route('front.games')->with('success', 'Congratulations! Order Successfully Placed');
}catch(\Exception $e){ return redirect()->route('front.games')->withErrors(['errors'=>'Something went wrong']); }
} public function getAllGame(Request $request){ $limit = $request->get('limit', 10);
$games = Category::limit($limit)->whereNot('variant','voucher')->where('added_by', 'user')->get(); $totalGames = Category::whereNot('variant','voucher')->where('added_by', 'user')->count();
return response()->json(['data' => $games, 'status' => 'ok','totalGames' => $totalGames,]);
}
public function getAllStoreGame(Request $request){ $limit = $request->get('limit', 10);
$games = Category::limit($limit)->whereNot('variant','voucher')->where('added_by', 'store')->get(); $totalGames = Category::whereNot('variant','voucher')->where('added_by', 'store')->count();
return response()->json(['data' => $games, 'status' => 'ok','totalGames' => $totalGames,]);
}
public function getAllVoucher(Request $request){ $limit = $request->get('limit', 10);
$games = Category::limit($limit)->where('variant','voucher')->get(); $totalGames = Category::where('variant','voucher')->count();
return response()->json(['data' => $games, 'status' => 'ok','totalGames' => $totalGames,]);
} public function getAllGames(Request $request){
if($request->alphabetical){ $games = Category::orderBy('name', $request->alphabetical);
}else{ $games = Category::orderBy('name', 'asc'); }
$totalGames = Category::count();
if($request->game_name){ $games = $games->where('name', 'like', '%' . $request->game_name . '%'); }
if($request->variant){ $games = $games->where('variant', $request->variant); }
$games = $games->get();
return response()->json(['data' => $games, 'status' => 'ok','totalGames' => $totalGames,]); } public function get_country_name(Request $request){ $country_name = Currency::where('country', $request->country)->first(); // Cache::forget('currency_name'); if ($country_name) { Cache::forever('currency_name', [ "name" => $country_name->name, "img" => $country_name->photo, ]); } return response()->json(['data' => $country_name, 'status' => 'ok']); } public function index(){ $homeCutomize = HomeCutomize::first(); $data['popular_category'] = json_decode($homeCutomize->popular_category); $data['posts'] = Post::all(); return view('front.index',$data);
$cartKey = auth()->check() ? 'cart_' . auth()->id() : 'cart_' . Session::getId(); // $cartItems = Session::get($cartKey); // dd($cartItems); $homeCustomize = HomeCutomize::first(); $elements_style = json_decode($homeCustomize->elements_style,true); $elements_style_category = Category::where('id',$elements_style['elements_now_Product_id'])->whereStatus(1)->firstOrFail(); $elements_style_pro_id = Item::with('category')->where('category_id',$elements_style_category->id)->whereStatus(1)->get(); return view('front.index', [ 'campaign_items' => CampaignItem::with('item')->whereStatus(1)->whereIsFeature(1)->orderby('id', 'desc')->get(), 'services' => Service::orderby('id', 'desc')->get(), 'posts' => Post::with('category')->orderby('id', 'desc')->take(8)->get(), 'brands' => Brand::whereStatus(1)->get(), 'brands' => Brand::whereStatus(1)->whereIsPopular(1)->get(), 'products' => Item::with('category','attributes','reviews')->whereStatus(1), 'elements_style_title'=>$elements_style['now_title'], 'elements_style_pro_id'=>$elements_style_pro_id, 'elements_style_category'=>$elements_style_category, 'join_us' => json_decode($homeCustomize->join_us,true), ]); } public function allCategory(Request $request , $id) { $categories = Category::where('id',$id)->whereStatus(1)->firstOrFail(); $chield_categories = Subcategory::where('category_id',$categories->id)->whereStatus(1)->get(); $products = Item::with('category','galleries','attributes')->where('category_id',$categories->id)->whereStatus(1); if ($request->sort) { if($request->sort == 'featured'){ $products = $products->orderBy('is_type', 'desc'); }else if($request->sort == 'alphabetically'){ $products = $products->orderBy('name', 'asc'); } } // if($request->size){ // $products=$products->where('sizes', 'like', '%"'.$request->size.'"%'); // } // if($request->color){ // $products=$products->where('colors', 'like', '%"'.$request->color.'"%'); // } if($request->brands){ $products=$products->where('brand_id',$request->brands); } if($request->min && $request->max){ $products=$products->whereBetween('discount_price',[$request->min , $request->max]); }elseif($request->min){ $products=$products->where('discount_price','>=',$request->min); }elseif($request->max){ $products=$products->where('discount_price','<=',$request->max); } if($request->sub_category_id){ $products=$products->where('subcategory_id',$request->sub_category_id); } $allproducts = $products->paginate(20); $getproduct = $products->get();
$data['categories'] = $categories; $data['chield_categories'] = $chield_categories; $data['products'] = $allproducts;
if ($request->ajax()) { return response()->json(['status' => 'success', 'data' => $getproduct ]); } return view('front.category.allCategory',$data); } public function search_brand(Request $request){
$brands = Brand::with('items')->where('name', 'like', '%' . $request->name . '%')->whereStatus(1)->get(); $brand_id = $brands->pluck('id'); $category = Category::where('id',$request->category_id)->whereStatus(1)->firstOrFail(); $products = Item::with('category','galleries')->whereStatus(1)->get(); $brands->transform(function($brand) use ($products, $request) { $brand->product_count = $products->where('brand_id', $brand->id) ->where('category_id', $request->category_id) ->count(); return $brand; }); return response()->json(['status' => 'success', 'data' => $brands]); } public function search_product(Request $request) { if (!$request->name) { return response()->json(['status' => 'success', 'data' => []]); } $items = Item::with('category') ->where('name', 'like', '%' . $request->name . '%') ->get(); return response()->json(['status' => 'success', 'data' => $items]); } public function get_sub_categories(Request $request){ $sub_category = Subcategory::where('category_id',$request->id)->get(); return response()->json(['status' => 'success', 'data' => $sub_category]); } public function get_categories(Request $request) {
$categories = Category::with('subcategory')->get(); $navTabsHtml = ''; $tabContentHtml = ''; foreach ($categories as $index => $category) {
$isActive = $index == 0 ? 'active' : ''; $isSelected = $index == 0 ? 'true' : 'false'; $navTabsHtml .= '<li class="nav-item position-relative" role="presentation">'; $navTabsHtml .= '<a href="#v-pills_' . $category->id . '" data-id"'.$category->id.'" class="nav-link-rline category-nav-link ' . $isActive . '"'; $navTabsHtml .= ' id="v-pills_' . $category->id . '-tab" data-toggle="pill" role="tab"'; $navTabsHtml .= ' aria-controls="v-pills_' . $category->id . '" aria-selected="' . $isSelected . '">'; $navTabsHtml .= '<span class="rline-content">' . $category->name . '</span></a></li>'; $tabActive = $index == 0 ? 'show active' : ''; $tabContentHtml .= '<div class="tab-pane fade category-tab-link ' . $tabActive . '" id="v-pills_' . $category->id . '" role="tabpanel" aria-labelledby="v-pills_' . $category->id . '-tab">'; $tabContentHtml .= '<ul style="list-style: none">'; foreach ($category->subcategory as $subcat) { $tabContentHtml .= '<li><a href="#" class="sub-menu-link">' . $subcat->name . '</a></li>'; } $tabContentHtml .= '</ul></div>'; } return response()->json([ 'status' => 'success', 'navTabsHtml' => $navTabsHtml, 'tabContentHtml' => $tabContentHtml, ]); } public function solo_product($slug) { $product = Item::with('category','reviews')->where('slug',$slug)->whereStatus(1)->firstOrFail(); $productRatings = $product->reviews; $totalRatings = 0; $numberOfRatings = count($productRatings); if ($numberOfRatings > 0) { foreach ($productRatings as $productRating) { $totalRatings += $productRating->rating; } $averageRating = $totalRatings / $numberOfRatings; $averageRating = round($averageRating, 2); } else { $averageRating = 0; } $previousProduct = Item::where('id', '<', $product->id)->whereStatus(1)->orderBy('id', 'desc')->first(); $nextProduct = Item::where('id', '>', $product->id)->whereStatus(1)->orderBy('id')->first(); $data['product'] = $product; $data['averageRating'] = $averageRating; $data['previousProduct'] = $previousProduct; $data['nextProduct'] = $nextProduct; $data['attributes'] = $product->attributes; $product_video = ''; if (isset($product->video)) { $product_video = $product->video; } $data['product_video'] = $product_video; // $data['product_attributes'] = $product->join('attributes','attributes.item_id','=','items.id') // ->join('attribute_options','attribute_options.attribute_id','=','attributes.id') // ->select('attribute_options.id','attribute_options.attribute_id','attribute_options.name','attribute_options.keyword','attribute_options.stock','attribute_options.price',\DB::raw('attributes.name as attribute')) // ->where('items.id','=',$product->id) // ->latest('id') // ->get(); // dd( $data['product_attributes']);
$product_attributes = $product->join('attributes', 'attributes.item_id', '=', 'items.id') ->join('attribute_options', 'attribute_options.attribute_id', '=', 'attributes.id') ->select('attribute_options.id', 'attribute_options.attribute_id', 'attribute_options.name', 'attribute_options.keyword', 'attribute_options.stock', 'attribute_options.price', \DB::raw('attributes.name as attribute')) ->where('items.id', '=', $product->id) ->latest('attribute_options.id') ->get();
$data['product_attributes_grouped'] = $product_attributes->groupBy('attribute');
return view('front.solo_product.index',$data); } public function review_submit() { return view('back.overlay.index'); }
public function slider_o_update(Request $request) { $setting = Setting::find(1); $setting->overlay = $request->slider_overlay; $setting->save(); return redirect()->back(); }
public function product($slug) {
$item = Item::with('category')->whereStatus(1)->whereSlug($slug)->firstOrFail(); $video = explode('=', $item->video); return view('front.catalog.product', [ 'item' => $item, 'reviews' => $item->reviews()->where('status', 1)->paginate(3), 'galleries' => $item->galleries, 'video' => $item->video ? end($video) : '', 'sec_name' => isset($item->specification_name) ? json_decode($item->specification_name, true) : [], 'sec_details' => isset($item->specification_description) ? json_decode($item->specification_description, true) : [], 'attributes' => $item->attributes, 'related_items' => $item->category->items()->whereStatus(1)->where('id', '!=', $item->id)->take(8)->get() ]); }
public function brands() { if (Setting::first()->is_brands == 0) { return back(); } return view('front.brand', [ 'brands' => Brand::whereStatus(1)->get() ]); }
public function blog(Request $request) {
$tagz = ''; $tags = null; $name = Post::pluck('tags')->toArray(); foreach ($name as $nm) { $tagz .= $nm . ','; } $tags = array_unique(explode(',', $tagz));
if (Setting::first()->is_blog == 0) return back();
if ($request->ajax()) return view('front.blog.list', ['posts' => $this->repository->displayPosts($request)]);
return view('front.blog.index', [ 'posts' => $this->repository->displayPosts($request), 'recent_posts' => Post::orderby('id', 'desc')->take(4)->get(), 'categories' => \App\Models\Bcategory::withCount('posts')->whereStatus(1)->get(), 'tags' => array_filter($tags) ]); }
public function blogDetails($id) { $items = $this->repository->displayPost($id);
return view('front.blog.show', [ 'post' => $items['post'], 'categories' => $items['categories'], 'tags' => $items['tags'], 'posts' => $items['posts'],
]); }
// -------------------------------- FAQ ----------------------------------------
public function faq() { if (Setting::first()->is_faq == 0) { return back(); } $fcategories = Fcategory::whereStatus(1)->withCount('faqs')->latest('id')->get(); return view('front.faq.index', ['fcategories' => $fcategories]); }
public function show($slug) { if (Setting::first()->is_faq == 0) { return back(); } $category = Fcategory::whereSlug($slug)->first(); return view('front.faq.show', ['category' => $category]); }
// -------------------------------- FAQ ----------------------------------------
// -------------------------------- CAMPAIGN ----------------------------------------
public function compaignProduct() { if (Setting::first()->is_campaign == 0) { return back(); } $compaign_items = CampaignItem::whereStatus(1)->orderby('id', 'desc')->get(); return view('front.campaign', ['campaign_items' => $compaign_items]); }
// -------------------------------- CAMPAIGN ----------------------------------------
// -------------------------------- CURRENCY ---------------------------------------- public function currency($id) { Session::put('currency', $id); return back(); } // -------------------------------- CURRENCY ----------------------------------------
// -------------------------------- LANGUAGE ---------------------------------------- public function language($id) { Session::put('language', $id); return back(); } // -------------------------------- LANGUAGE ----------------------------------------
// -------------------------------- FAQ ----------------------------------------
public function page($slug) { return view('front.page', [ 'page' => $this->repository->displayPage($slug) ]); }
// -------------------------------- CONTACT ----------------------------------------
public function contact() { if (Setting::first()->is_contact == 0) { return back(); } return view('front.contact'); }
public function contactEmail(Request $request) { $request->validate([ 'first_name' => 'required|max:50', 'last_name' => 'required|max:50', 'email' => 'required|email|max:50', 'phone' => 'required|max:50', 'message' => 'required|max:250', ]); $input = $request->all();
$setting = Setting::first(); $name = $input['first_name'] . ' ' . $input['last_name']; $subject = "Email From " . $name; $to = $setting->contact_email; $phone = $request->phone; $from = $request->email; $msg = "Name: " . $name . "<br/>Email: " . $from . "<br/>Phone: " . $phone . "<br/>Message: " . $request->message;
$emailData = [ 'to' => $to, 'subject' => $subject, 'body' => $msg, ];
$email = new EmailHelper(); $email->sendCustomMail($emailData); Session::flash('success', __('Thank you for contacting with us, we will get back to you shortly.')); return redirect()->back(); }
// -------------------------------- REVIEW ----------------------------------------
public function review($slug) { $user = Auth::user(); if(!$user){ return abort(404); } $data['product'] = $product = Item::with('category','reviews')->where('slug',$slug)->whereStatus(1)->firstOrFail(); $data['user_review'] = $user->reviews->where('item_id',$product->id)->first(); $data['total_review'] = Review::where('item_id',$product->id)->count();
$productRatings = $product->reviews; $totalRatings = 0; $numberOfRatings = count($productRatings); if ($numberOfRatings > 0) { foreach ($productRatings as $productRating) { $totalRatings += $productRating->rating; } $averageRating = $totalRatings / $numberOfRatings; $averageRating = round($averageRating, 2); } else { $averageRating = 0; } $data['averageRating'] = $averageRating; $data['attributes'] = $product->attributes; $user_has_ordered = $user->orders() ->whereRaw('cart LIKE ?', ['%"item_id":'.$product->id.'%']) ->exists(); if($user_has_ordered){ return view('front.review',$data); }else{ return abort(404); } }
public function topReviews() { return view('front.top-reviews'); }
public function reviewSubmit(ReviewRequest $request) { return response()->json($this->repository->reviewSubmit($request)); }
// -------------------------------- SUBSCRIBE ----------------------------------------
public function subscribeSubmit(SubscribeRequest $request) { $subscribed_email = Subscriber::where('email',$request->input('email'))->first(); if($subscribed_email){ return [ 'status' => 'failed', 'message' => 'This Email Already Used' ];
} $subscribe = new Subscriber(); $subscribe->email = $request->input('email'); $subscribe->save(); // Subscriber::create($request->all()); // return response()->json(__('You Have Subscribed Successfully.')); return [ 'status' => 'success', 'message' => 'You Have Subscribed Successfully.' ]; }
// ---------------------------- TRACK ORDER ----------------------------------------// public function trackOrder() { return view('front.track_order'); }
public function track(Request $request) { $order = Order::where('transaction_number', $request->order_number)->first();
if ($order) { return view('user.order.track', [ 'numbers' => 3, 'track_orders' => TrackOrder::whereOrderId($order->id)->get()->toArray() ]); } else { return view('user.order.track', [ 'numbers' => 3, 'error' => 1, ]); } }
public function maintainance() { $setting = Setting::first(); if ($setting->is_maintainance == 0) { return redirect(route('front.index')); } return view('front.maintainance'); }
public function finalize() { //Artisan::call('migrate', ['--seed' => true]); copy(str_replace('core', '', base_path() . "updater/composer.json"), base_path('composer.json')); copy(str_replace('core', '', base_path() . "updater/composer.lock"), base_path('composer.lock')); return redirect(route('front.index')); } }
|