breadcrumbs fix with mobile reserved not to delete

This commit is contained in:
merdan 2020-04-02 12:35:45 +05:00
parent cd4d1863e8
commit c7c558b224
9 changed files with 31 additions and 205 deletions

View File

@ -95,7 +95,10 @@ class EventCheckoutController extends Controller
/*
* Remove any tickets the user has reserved
*/
ReservedTickets::where('session_id', '=', session()->getId())->delete();
ReservedTickets::where('session_id', '=', session()->getId())
->whereNull('expects_payment_at')
->orWhere('expects_payment_at','<',Carbon::now()->addMinutes(-5))
->delete();
/*
* Go though the selected tickets and check if they're available
@ -321,16 +324,6 @@ class EventCheckoutController extends Controller
//Add the request data to a session in case payment is required off-site
session()->push('ticket_order_' . $event_id . '.request_data', $request->except(['card-number', 'card-cvc']));
$orderRequiresPayment = $ticket_order['order_requires_payment'];
if ($orderRequiresPayment && $request->get('pay_offline') && $event->enable_offline_payments) {
return $this->completeOrder($event_id);
}
if (!$orderRequiresPayment) {
return $this->completeOrder($event_id);
}
try {
$orderService = new OrderService($ticket_order['order_total'], $ticket_order['total_booking_fee'], $event);
$orderService->calculateFinalCosts();
@ -504,167 +497,13 @@ class EventCheckoutController extends Controller
$data = OrderService::mobileCompleteOrder($order);
return view('mobile.Pages.ViewOrderPageApp', $data);
} else {
ReservedTickets::where('session_id', $order->session_id)
->where('event_id', $event_id)
->update(['expects_payment_at' => Carbon::now()]);
ProcessPayment::dispatch($order)->delay(now()->addMinutes(5));
return $this->render('Pages.OrderExpectingPayment',$order);
}
}
/**
* Complete an order
*
* @param $event_id
* @param bool|true $return_json
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
*/
public function completeOrder($event_id, $return_json = true)
{
DB::beginTransaction();
try {
$order = Order::with('event')
->where('event_id', $event_id)
->where('session_id', session()->getId());
$ticket_order = session()->get('ticket_order_' . $event_id);
$request_data = $ticket_order['request_data'][0];
// $event = Event::findOrFail($ticket_order['event_id']);
$attendee_increment = 1;
$ticket_questions = isset($request_data['ticket_holder_questions']) ? $request_data['ticket_holder_questions'] : [];
$order->order_status_id = isset($request_data['pay_offline']) ? config('attendize.order_awaiting_payment') : config('attendize.order_complete');
$order->is_payment_received = isset($request_data['pay_offline']) ? 0 : 1;
$order->save();
/*
* Update the event sales volume
*/
$order->event->increment('sales_volume', $order->amount);
$order->event->increment('organiser_fees_volume', $order->organiser_booking_fee);
/*
* Update the event stats
*/
$event_stats = EventStats::updateOrCreate([
'event_id' => $event_id,
'date' => DB::raw('CURRENT_DATE'),
]);
$event_stats->increment('tickets_sold', $ticket_order['total_ticket_quantity']);
if ($ticket_order['order_requires_payment']) {
$event_stats->increment('sales_volume', $order->amount);
$event_stats->increment('organiser_fees_volume', $order->organiser_booking_fee);
}
/*
* Add the attendees
*/
foreach ($ticket_order['tickets'] as $attendee_details) {
$ticket = Ticket::findOrFail($attendee_details['ticket']['id']);
/*
* Update some ticket info
*/
$ticket->increment('quantity_sold', $attendee_details['qty']);
$ticket->increment('sales_volume', ($attendee_details['ticket']['price'] * $attendee_details['qty']));
$ticket->increment('organiser_fees_volume',
($attendee_details['ticket']['organiser_booking_fee'] * $attendee_details['qty']));
/*
* Create the attendees
*/
foreach ($attendee_details['seats'] as $i) {
$attendee = new Attendee();
$attendee->first_name = strip_tags($request_data["ticket_holder_first_name"][$i][$attendee_details['ticket']['id']]);
$attendee->last_name = strip_tags($request_data["ticket_holder_last_name"][$i][$attendee_details['ticket']['id']]);
$attendee->email = $request_data["ticket_holder_email"][$i][$attendee_details['ticket']['id']];
$attendee->event_id = $event_id;
$attendee->order_id = $order->id;
$attendee->ticket_id = $attendee_details['ticket']['id'];
$attendee->account_id = $order->account_id;
$attendee->reference_index = $attendee_increment;
$attendee->seat_no = $i;
$attendee->save();
/*
* Save the attendee's questions
*/
foreach ($attendee_details['ticket']->questions as $question) {
$ticket_answer = isset($ticket_questions[$attendee_details['ticket']->id][$i][$question->id]) ? $ticket_questions[$attendee_details['ticket']->id][$i][$question->id] : null;
if (is_null($ticket_answer)) {
continue;
}
/*
* If there are multiple answers to a question then join them with a comma
* and treat them as a single answer.
*/
$ticket_answer = is_array($ticket_answer) ? implode(', ', $ticket_answer) : $ticket_answer;
if (!empty($ticket_answer)) {
QuestionAnswer::create([
'answer_text' => $ticket_answer,
'attendee_id' => $attendee->id,
'event_id' => $event_id,
'account_id' => $order->account_id,
'question_id' => $question->id
]);
}
}
/* Keep track of total number of attendees */
$attendee_increment++;
}
}
} catch (Exception $e) {
Log::error($e);
DB::rollBack();
return response()->json([
'status' => 'error',
'message' => trans('ClientSide.order_error')
]);
}
//save the order to the database
DB::commit();
//forget the order in the session
session()->forget('ticket_order_' . $event_id);
/*
* Remove any tickets the user has reserved after they have been ordered for the user
*/
ReservedTickets::where('session_id', '=', session()->getId())->delete();
// Queue up some tasks - Emails to be sent, PDFs etc.
Log::info('Firing the event');
event(new OrderCompletedEvent($order));
if ($return_json) {
return response()->json([
'status' => 'success',
'redirectUrl' => route('showOrderDetails', [
'is_embedded' => $this->is_embedded,
'order_reference' => $order->order_reference,
]),
]);
}
return response()->redirectToRoute('showOrderDetails', [
'is_embedded' => $this->is_embedded,
'order_reference' => $order->order_reference,
]);
}
/**
* Show the order details page

View File

@ -64,6 +64,7 @@ class PublicController extends Controller
->get();
dd($sub_cats);
$lastKid = $sub_cats->pop();
$data['category'] = $lastKid?:$lastKid->parent;

View File

@ -3,6 +3,7 @@
namespace App\Jobs;
use App\Models\Order;
use App\Models\ReservedTickets;
use App\Payment\CardPayment;
use App\Services\EventOrderService;
use Illuminate\Bus\Queueable;
@ -48,5 +49,10 @@ class ProcessPayment extends Job implements ShouldQueue
//todo send mail that order is unsuccessfull;
Log::info('ProcessPayment Job payment is unsuccessful for order id: '.$this->order->id);
}
ReservedTickets::where('event_id', $this->order->event_id)
->where('session_id',$this->order->session_id)
->whereNotNull('expects_payment_at')
->delete();
}
}

View File

@ -13,6 +13,7 @@ namespace App\Models;
*/
class ReservedTickets extends \Illuminate\Database\Eloquent\Model
{
protected $dates = ['expects_payment_at'];
public function ticket()
{
return $this->belongsTo(Ticket::class);

View File

@ -4,23 +4,6 @@
<link href="{{asset('vendor/gijgo/gijgo.min.css')}}" rel="stylesheet" type="text/css" />
@endsection
@section('content')
{{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('category',$category)}}
@include("Shared.Partials.FilterMenu")
@yield('inner_content')
{{-- <section id="first-add-wrapper" style="margin: 100px 0;">--}}
{{-- <div class="container">--}}
{{-- <div class="row" style="padding: 0 20px;">--}}
{{-- <a href="" style="width: 100%">--}}
{{-- <img src="{{asset('assets/images/advs/first.png')}}" style="width: 100%">--}}
{{-- </a>--}}
{{-- </div>--}}
{{-- </div>--}}
{{-- </section>--}}
@endsection
@push('after_styles')
<style type="text/css">
.red_button{

View File

@ -1,5 +1,7 @@
@extends("desktop.Layouts.EventsLayout")
@section('inner_content')
@section('content')
{{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('sub_category',$category)}}
@include("Shared.Partials.FilterMenu")
<section class="movie-items-group">
<div class="container">
<div class="row kinoteator tab-part">

View File

@ -1,5 +1,8 @@
@extends("desktop.Layouts.EventsLayout")
@section('inner_content')
@section('content')
{{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('category',$category)}}
@include("Shared.Partials.FilterMenu")
@foreach($sub_cats as $cat)
@php

View File

@ -12,18 +12,9 @@
<meta name="csrf-token" content="{{ csrf_token() }}" />
<!-- CSS Global Compulsory -->
<link rel="stylesheet" href="{{asset('vendor/bootstrap4/bootstrap.min.css')}}">
<!-- CSS Implementing Plugins -->
<link rel="stylesheet" href="{{asset('vendor/icon-awesome/css/font-awesome.min.css')}}">
@yield('after_styles')
<!-- CSS Unify Theme -->
<link rel="stylesheet" href="{{asset('assets/stylesheet/styles.e-commerce.css')}}">
<!-- KMB Custom css -->
<link rel="stylesheet" href='{{asset("assets/stylesheet/custom.css")}}'>
<link rel="stylesheet" href='{{asset("assets/stylesheet/custom_new.css")}}'>
@stack('after_styles')
</head>
@ -34,13 +25,13 @@
<section id="intro" class="container">
<div class="row">
<div class="col-md-12 text-center">
<h2 property="name" style="font-weight: bold">Töleg geçmedi. Birsalymdan gaýtadan synanşyp görüň!</h2>
<h4 property="name" style="font-weight: bold">Töleg geçmedi. Birsalymdan gaýtadan synanşyp görüň!</h4>
</div>
</div>
</section>
<section id="order_form" class="container">
<h3> {{$message}}</h3>
<h5> {{$message}}</h5>
</section>
</main>

View File

@ -12,20 +12,20 @@ Breadcrumbs::for('home', function ($trail) {
Breadcrumbs::for('category', function ($trail, $category){
$trail->parent('home');
$trail->push($category->title?? trans('ClientSide.results'), $category->url ?? '#');
});
if(!empty($category) && $category->parent_id){
$parent = $category->parent;
$trail->push($parent->title ?? '#title_transation', $parent->url?? '#');
}
$trail->push($category->title?? 'No translation', $category->url ?? '#');
Breadcrumbs::for('sub_category', function ($trail, $category){
$trail->parent('category',$category->parent);
$trail->push($category->title?? trans('ClientSide.results'), $category->url ?? '#');
});
Breadcrumbs::for('event',function($trail, $event){
if($event->subCategory)
$trail->parent('category', $event->subCategory);
$trail->parent('sub_category', $event->subCategory);
else
$trail->parent('category', $event->mainCategory);
$trail->push($event->title?? '#title_transation',$event->event_url ?? '#');
$trail->push($event->title?? trans('ClientSide.results'),$event->event_url ?? '#');
});
Breadcrumbs::for('seats',function ($trail,$event){