Файловый менеджер - Редактировать - /home/clickysoft/public_html/calvary-p2.clickysoft.net/app/Http/Controllers/Front/EventController.php
Назад
<?php namespace App\Http\Controllers\Front; use App\Http\Controllers\Controller; use App\Http\Requests\Front\CardVerificationRequest; use App\Mail\EventOrderPlacedForAdmin; use App\Mail\EventOrderPlacedForUser; use App\Models\Coupon; use App\Models\Event; use App\Models\EventOrder; use App\Models\EventOrderChild; use App\Models\EventPaymentLog; use App\Models\SiteSetting; use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Mail; class EventController extends Controller { public function index() { $events = Event::where('status', 1) ->where('date', '>=', Carbon::now()) ->orderBy('date', 'asc') ->orderBy('time_start', 'asc') ->take(6) ->get(); $search = request()->search; $loadMoreCounter = request()->load_more_counter; if (!empty($search)) { if ($search === 'All') { $events = Event::where('status', 1) ->where('date', '>=', Carbon::now()) ->orderBy('date', 'asc') ->orderBy('time_start', 'asc') ->take(6) ->get(); } else { $events = Event::where('status', 1) ->where('date', '>=', Carbon::now()) ->where('title', 'LIKE', "%{$search}%") ->orderBy('date', 'asc') ->orderBy('time_start', 'asc') ->get(); } $view = view('front.event.partials.event-cards', compact('events'))->render(); return response()->json(['data_count' => count($events), 'html' => $view]); } elseif (!empty($loadMoreCounter)) { $events = Event::where('status', 1) ->where('date', '>=', Carbon::now()) ->orderBy('date', 'asc')->skip((int)$loadMoreCounter)->take(6)->get(); $totalCount = ($loadMoreCounter + count($events)); $view = view('front.event.partials.event-cards', compact('events'))->render(); return response()->json(['data_count' => count($events), 'total_count' => $totalCount, 'html' => $view]); } return view('front.event.index', compact('events')); } public function eventDetail($eventId) { $event = Event::where('id', $eventId) ->where('status', 1) ->where('date', '>=', Carbon::now()) ->first(); $relatedEvents = Event::where('id', '!=', $eventId) ->where('status', 1) ->where('date', '>=', Carbon::now()) ->take(3) ->get(); if (empty($event)) { abort(404); } return view('front.event.detail', compact('event', 'relatedEvents')); } public function addTickets($eventId) { $event = Event::where('id', $eventId) ->where('status', 1) ->where('date', '>=', Carbon::now()) ->first(); $user = Auth::user(); if (empty($user)) { return response()->json(['msg' => 'Please login first.'], 400); } if (!empty($event)) { $remainingTickets = ($event->total_tickets - $event->eventOrderChilds->count()); $requestedTickets = count(request()->data); if ($event->has_unlimited_tickets == 0 && $remainingTickets < $requestedTickets) { $remainingTickets = $remainingTickets < 0 ? 0 : $remainingTickets; return response()->json(['msg' => "We have only {$remainingTickets} ticket(s) remaining."], 400); } $dataSet = [ 'user_id' => $user->id, 'event_id' => $event->id, 'event_title' => $event->title, 'event_reg_date' => $event->date, 'event_time_start' => $event->time_start, 'event_time_end' => $event->time_end, 'siblings' => [] ]; $adult = $child = $adultTotalPrice = $childTotalPrice = $total = 0; foreach (request()->data as $val) { if (!in_array($val['category'], ['Adult', 'Child'])) { return response()->json(['msg' => 'Invalid category.'], 400); } elseif (strlen($val['first_name']) > 255) { return response()->json(['msg' => 'Child first name must not be greater than 255 characters.'], 400); } elseif (strlen($val['last_name']) > 255) { return response()->json(['msg' => 'Child last name must not be greater than 255 characters.'], 400); } else { $data = [ 'user_id' => $user->id, 'event_id' => $event->id, 'first_name' => $val['first_name'], 'last_name' => $val['last_name'], 'category' => $val['category'] ]; if ($val['category'] === "Adult") { $adultTotalPrice += $event->adult_price; $total += $event->adult_price; $data['price'] = $event->adult_price; $adult++; } else { $childTotalPrice += $event->child_price; $total += $event->child_price; $data['price'] = $event->child_price; $child++; } array_push($dataSet['siblings'], $data); } } $dataSet['adult_count'] = $adult; $dataSet['adult_total_price'] = $adultTotalPrice; $dataSet['child_count'] = $child; $dataSet['child_total_price'] = $childTotalPrice; $dataSet['total_price'] = $total; $dataSet['final_price'] = $total; Session::put('user_event_cart', $dataSet); return response()->json(['msg' => 'cart added.']); } return response()->json(['msg' => 'Event not found.'], 400); } public function checkout($eventId) { $proceed = $this->checkCartSession(); if (empty($proceed)) { return redirect()->route('front.event.index'); } $event = Event::where('id', $eventId) ->where('status', 1) ->where('date', '>=', Carbon::now()) ->first(); $userEventCart = Session::get('user_event_cart'); if (!empty($event)) { $remainingTickets = ($event->total_tickets - $event->eventOrderChilds->count()); $requestedTickets = count($userEventCart['siblings']); if ($event->has_unlimited_tickets == 0 && $remainingTickets < $requestedTickets) { $remainingTickets = $remainingTickets < 0 ? 0 : $remainingTickets; return redirect()->route('front.event.detail', $eventId)->with('error_msg', "We have only {$remainingTickets} ticket(s) remaining."); } $coupon = Coupon::where('status', 1)->where('applicable_to', 'Event')->first(); if (!empty($coupon->expiry_date) && $coupon->expiry_date < Carbon::now()->format('Y-m-d')) { $coupon = null; } return view('front.event.checkout', compact('event', 'userEventCart', 'coupon')); } return redirect()->route('front.event.index'); } public function validateCoupon() { $userCart = Session::get('user_event_cart'); if (!empty(request()->coupon)) { $coupon = Coupon::where('status', 1)->where('applicable_to', 'Event')->first(); if (!empty($coupon->expiry_date) && $coupon->expiry_date < Carbon::now()->format('Y-m-d')) { return response()->json(['msg' => 'Coupon is invalid.'], 422); } else { if ($coupon->discount_type === "Fixed") { $discountAmount = $coupon->discount_value; $finalAmount = ($userCart['final_price'] - $discountAmount); } else { $discountAmount = ((($coupon->discount_value / 100) * $userCart['order']['final_price'])); $finalAmount = ($userCart['final_price'] - $discountAmount); } $userCart['old_coupon_discount'] = number_format($discountAmount, 2); $userCart['old_coupon_discount_price'] = number_format($finalAmount, 2); Session::put('user_event_cart', $userCart); return response()->json(['msg' => 'valid.', 'discount_amount' => $userCart['old_coupon_discount'], 'final_price' => $userCart['old_coupon_discount_price']]); } } return response()->json(['msg' => 'Coupon is invalid.'], 422); } public function checkoutData($eventId, CardVerificationRequest $request) { $proceed = $this->checkCartSession(); if (empty($proceed)) { return redirect()->route('front.event.index'); } $event = Event::where('id', $eventId) ->where('status', 1) ->where('date', '>=', Carbon::now()) ->first(); $userEventCart = Session::get('user_event_cart'); if (!empty($event)) { $remainingTickets = ($event->total_tickets - $event->eventOrderChilds->count()); $requestedTickets = count($userEventCart['siblings']); if ($event->has_unlimited_tickets == 0 && $remainingTickets < $requestedTickets) { $remainingTickets = $remainingTickets < 0 ? 0 : $remainingTickets; return redirect()->route('front.event.detail', $eventId)->with('error_msg', "We have only {$remainingTickets} ticket(s) remaining."); } if (!empty($request->coupon)) { $coupon = Coupon::where('status', 1)->where('applicable_to', 'Event')->first(); if (!empty($coupon->expiry_date) && $coupon->expiry_date < Carbon::now()->format('Y-m-d')) { return redirect()->back()->with('error_msg', 'Coupon is invalid.'); } else { $userEventCart['coupon_id'] = $coupon->id; if ($coupon->discount_type === "Fixed") { $discountAmount = $coupon->discount_value; $userEventCart['discount'] = $discountAmount; $userEventCart['final_price'] = ($userEventCart['final_price'] - $discountAmount); } else { $discountAmount = ((($coupon->discount_value / 100) * $userEventCart['final_price'])); $userEventCart['discount'] = $discountAmount; $userEventCart['final_price'] = ($userEventCart['final_price'] - $discountAmount); } } } $input = $request->input(); $input['amount'] = number_format($userEventCart['final_price'], 2, '.', ''); $input['first_name'] = auth()->user()->first_name; if (auth()->user()->last_name) { $input['last_name'] = auth()->user()->last_name; } $response = processAuthorizeDotNetPayment($input); $message_text = "Transaction failed. Please try again later."; $msg_type = "error_msg"; if ($response != null) { // Check to see if the API request was successfully received and acted upon if ($response->getMessages()->getResultCode() == "Ok") { $t_response = $response->getTransactionResponse(); if ($t_response != null && $t_response->getMessages() != null) { $order = EventOrder::create([ 'user_id' => Auth::id(), 'event_id' => $eventId, 'coupon_id' => isset($userEventCart['coupon_id']) ? $userEventCart['coupon_id'] : 0, 'event_title' => $userEventCart['event_title'], 'event_reg_date' => $userEventCart['event_reg_date'], 'event_time_start' => $userEventCart['event_time_start'], 'event_time_end' => $userEventCart['event_time_end'], 'discount' => isset($userEventCart['discount']) ? $userEventCart['discount'] : 0, 'adult_count' => $userEventCart['adult_count'], 'adult_total_price' => $userEventCart['adult_total_price'], 'child_count' => $userEventCart['child_count'], 'child_total_price' => $userEventCart['child_total_price'], 'total_price' => $userEventCart['total_price'], 'final_price' => $userEventCart['final_price'], ]); foreach ($userEventCart['siblings'] as $sibling) { EventOrderChild::create([ 'user_id' => Auth::id(), 'order_id' => $order->id, 'event_id' => $eventId, 'first_name' => $sibling['first_name'], 'last_name' => $sibling['last_name'], 'category' => $sibling['category'], 'price' => $sibling['price'] ]); } EventPaymentLog::create([ 'user_id' => Auth::id(), 'order_id' => $order->id, 'name_on_card' => Auth::user()->full_name, 'response_code' => $t_response->getResponseCode(), 'transaction_id' => $t_response->getTransId(), 'auth_id' => $t_response->getAuthCode(), 'message_code' => $t_response->getMessages()[0]->getCode() ]); $site_setting = SiteSetting::first(); Mail::to(Auth::user()->email)->later(now()->addSeconds(5), (new EventOrderPlacedForUser($order))); Mail::to($site_setting->admin_email)->later(now()->addSeconds(5), (new EventOrderPlacedForAdmin($order))); Session::put('user_event_cart', []); return redirect()->route('orders.event')->with('success_msg', 'Your order has been placed successfully.'); } else { $message_text = 'There were some issue with the payment. Please try again later.'; $msg_type = "error_msg"; if ($t_response->getErrors() != null) { $message_text = $t_response->getErrors()[0]->getErrorText(); } } } } else { $message_text = 'Unable to process payment. Please try again.'; } return redirect()->back()->withInput()->with($msg_type, $message_text); } return redirect()->route('front.event.index'); } public function checkCartSession(): bool { $userEventCart = Session::get('user_event_cart'); if (empty($userEventCart)) { return false; } elseif (!isset($userEventCart['siblings'])) { return false; } return true; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка