Allow configurable date formats

This commit is contained in:
Sebastian Schmidt 2018-10-04 13:42:11 +10:00
parent 181ed66405
commit 7d1c1a1e6a
No known key found for this signature in database
GPG Key ID: 80B9687901B6587C
9 changed files with 145 additions and 105 deletions

View File

@ -101,10 +101,8 @@ class EventTicketsController extends MyBaseController
$ticket->event_id = $event_id;
$ticket->title = strip_tags($request->get('title'));
$ticket->quantity_available = !$request->get('quantity_available') ? null : $request->get('quantity_available');
$ticket->start_sale_date = $request->get('start_sale_date') ? Carbon::createFromFormat('d-m-Y H:i',
$request->get('start_sale_date')) : null;
$ticket->end_sale_date = $request->get('end_sale_date') ? Carbon::createFromFormat('d-m-Y H:i',
$request->get('end_sale_date')) : null;
$ticket->start_sale_date = $request->get('start_sale_date');
$ticket->end_sale_date = $request->get('end_sale_date');
$ticket->price = $request->get('price');
$ticket->min_per_person = $request->get('min_per_person');
$ticket->max_per_person = $request->get('max_per_person');
@ -234,10 +232,8 @@ class EventTicketsController extends MyBaseController
$ticket->title = $request->get('title');
$ticket->quantity_available = !$request->get('quantity_available') ? null : $request->get('quantity_available');
$ticket->price = $request->get('price');
$ticket->start_sale_date = $request->get('start_sale_date') ? Carbon::createFromFormat('d-m-Y H:i',
$request->get('start_sale_date')) : null;
$ticket->end_sale_date = $request->get('end_sale_date') ? Carbon::createFromFormat('d-m-Y H:i',
$request->get('end_sale_date')) : null;
$ticket->start_sale_date = $request->get('start_sale_date');
$ticket->end_sale_date = $request->get('end_sale_date');
$ticket->description = $request->get('description');
$ticket->min_per_person = $request->get('min_per_person');
$ticket->max_per_person = $request->get('max_per_person');

View File

@ -27,11 +27,7 @@ class MyBaseController extends Controller
'email' => Auth::user()->email,
'is_confirmed' => Auth::user()->is_confirmed,
],
/*
* @todo These should be user selectable
*/
'DateFormat' => 'dd-MM-yyyy',
'DateTimeFormat' => 'dd-MM-yyyy hh:mm',
'DateTimeFormat' => config('attendize.default_date_picker_format'),
'GenericErrorMessage' => trans("Controllers.whoops"),
]);
/*

View File

@ -23,8 +23,8 @@ class Event extends MyBaseModel
'description' => ['required'],
'location_venue_name' => ['required_without:venue_name_full'],
'venue_name_full' => ['required_without:location_venue_name'],
'start_date' => ['required'],
'end_date' => ['required'],
'start_date' => ['required|date'],
'end_date' => ['required|date'],
'organiser_name' => ['required_without:organiser_id'],
'event_image' => ['mimes:jpeg,jpg,png', 'max:3000'],
];
@ -203,6 +203,15 @@ class Event extends MyBaseModel
$this->attributes['start_date'] = Carbon::parse($date);
}
/**
* Format start date from user preferences
* @return String Formatted date
*/
public function startDateFormatted()
{
return $this->start_date->format(config('attendize.default_datetime_format'));
}
/**
* Parse end_date to a Carbon instance
*
@ -213,6 +222,15 @@ class Event extends MyBaseModel
$this->attributes['end_date'] = Carbon::parse($date);
}
/**
* Format end date from user preferences
* @return String Formatted date
*/
public function endDateFormatted()
{
return $this->end_date->format(config('attendize.default_datetime_format'));
}
/**
* Indicates whether the event is currently happening.
*

View File

@ -118,9 +118,13 @@ class MyBaseModel extends \Illuminate\Database\Eloquent\Model
*
* @return bool|null|string
*/
public function getFormattedDate($field, $format = 'd-m-Y H:i')
public function getFormattedDate($field, $format = false)
{
return $this->$field === null ? null : date($format, strtotime($this->$field));
if (!$format) {
$format = config('attendize.default_datetime_format');
}
return $this->$field === null ? null : $this->$field->format($format);
}
/**

View File

@ -2,12 +2,16 @@
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\SoftDeletes;
class Ticket extends MyBaseModel
{
use SoftDeletes;
protected $dates = ['start_sale_date', 'end_sale_date'];
/**
* The rules to validate the model.
*
@ -70,6 +74,34 @@ class Ticket extends MyBaseModel
{
}
/**
* Parse start_sale_date to a Carbon instance
*
* @param string $date DateTime
*/
public function setStartSaleDateAttribute($date)
{
if (!$date) {
$this->attributes['start_sale_date'] = Carbon::now();
} else {
$this->attributes['start_sale_date'] = Carbon::parse($date);
}
}
/**
* Parse end_sale_date to a Carbon instance
*
* @param string|null $date DateTime
*/
public function setEndSaleDateAttribute($date)
{
if (!$date) {
$this->attributes['end_sale_date'] = null;
} else {
$this->attributes['end_sale_date'] = Carbon::parse($date);
}
}
/**
* Scope a query to only include tickets that are sold out.
*
@ -80,16 +112,6 @@ class Ticket extends MyBaseModel
$query->where('remaining_tickets', '=', 0);
}
/**
* The attributes that should be mutated to dates.
*
* @return array $dates
*/
public function getDates()
{
return ['created_at', 'updated_at', 'start_sale_date', 'end_sale_date'];
}
/**
* Get the number of tickets remaining.
*
@ -111,9 +133,9 @@ class Ticket extends MyBaseModel
*/
public function getQuantityReservedAttribute()
{
$reserved_total = \DB::table('reserved_tickets')
$reserved_total = DB::table('reserved_tickets')
->where('ticket_id', $this->id)
->where('expires', '>', \Carbon::now())
->where('expires', '>', Carbon::now())
->sum('quantity_reserved');
return $reserved_total;
@ -146,8 +168,10 @@ class Ticket extends MyBaseModel
*/
public function getBookingFeeAttribute()
{
return (int)ceil($this->price) === 0 ? 0 : round(($this->price * (config('attendize.ticket_booking_fee_percentage') / 100)) + (config('attendize.ticket_booking_fee_fixed')),
2);
return (int)ceil($this->price) === 0 ? 0 : round(
($this->price * (config('attendize.ticket_booking_fee_percentage') / 100)) + (config('attendize.ticket_booking_fee_fixed')),
2
);
}
/**
@ -157,8 +181,10 @@ class Ticket extends MyBaseModel
*/
public function getOrganiserBookingFeeAttribute()
{
return (int)ceil($this->price) === 0 ? 0 : round(($this->price * ($this->event->organiser_fee_percentage / 100)) + ($this->event->organiser_fee_fixed),
2);
return (int)ceil($this->price) === 0 ? 0 : round(
($this->price * ($this->event->organiser_fee_percentage / 100)) + ($this->event->organiser_fee_fixed),
2
);
}
/**
@ -206,7 +232,7 @@ class Ticket extends MyBaseModel
return config('attendize.ticket_status_sold_out');
}
if ($this->event->start_date->lte(\Carbon::now())) {
if ($this->event->start_date->lte(Carbon::now())) {
return config('attendize.ticket_status_off_sale');
}

View File

@ -61,9 +61,9 @@ return [
'default_timezone' => 30, #Europe/Dublin
'default_currency' => 2, #Euro
'default_date_format' => 'Y-m-d',
'default_date_picker_format' => 'Y-m-d',
'default_datetime_format' => 'Y-m-d, H:i',
'default_date_picker_format' => env('DEFAULT_DATEPICKER_FORMAT', 'yyyy-MM-dd HH:mm'),
'default_date_picker_seperator' => env('DEFAULT_DATEPICKER_SEPERATOR', '-'),
'default_datetime_format' => env('DEFAULT_DATETIME_FORMAT', 'Y-m-d H:i'),
'default_query_cache' => 120, #Minutes
'default_locale' => 'en',
'default_payment_gateway' => 1, #Stripe=1 Paypal=2 BitPay=3 MIGS=4

View File

@ -11,56 +11,56 @@ class TimezoneSeeder extends Seeder
*/
public function run()
{
\App\Models\DateTimeFormat::create([
'format' => 'd/M/Y g:i a',
'picker_format' => '',
'label' => '10/Mar/2016'
]);
\App\Models\DateTimeFormat::create([
'format' => 'd-M-Y g:i a',
'picker_format' => '',
'label' => '10-Mar-2016'
]);
\App\Models\DateTimeFormat::create([
'format' => 'd/F/Y g:i a',
'picker_format' => '',
'label' => '10/March/2016'
]);
\App\Models\DateTimeFormat::create([
'format' => 'd-F-Y g:i a',
'picker_format' => '',
'label' => '10-March-2016'
]);
\App\Models\DateTimeFormat::create([
'format' => 'M j, Y g:i a',
'picker_format' => '',
'label' => 'Mar 10, 2016 6:15 pm'
]);
\App\Models\DateTimeFormat::create([
'format' => 'F j, Y g:i a',
'picker_format' => '',
'label' => 'March 10, 2016 6:15 pm'
]);
\App\Models\DateTimeFormat::create([
'format' => 'D M jS, Y g:ia',
'picker_format' => '',
'label' => 'Mon March 10th, 2016 6:15 pm'
]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'd/M/Y g:i a',
// 'picker_format' => '',
// 'label' => '10/Mar/2016'
// ]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'd-M-Y g:i a',
// 'picker_format' => '',
// 'label' => '10-Mar-2016'
// ]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'd/F/Y g:i a',
// 'picker_format' => '',
// 'label' => '10/March/2016'
// ]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'd-F-Y g:i a',
// 'picker_format' => '',
// 'label' => '10-March-2016'
// ]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'M j, Y g:i a',
// 'picker_format' => '',
// 'label' => 'Mar 10, 2016 6:15 pm'
// ]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'F j, Y g:i a',
// 'picker_format' => '',
// 'label' => 'March 10, 2016 6:15 pm'
// ]);
// \App\Models\DateTimeFormat::create([
// 'format' => 'D M jS, Y g:ia',
// 'picker_format' => '',
// 'label' => 'Mon March 10th, 2016 6:15 pm'
// ]);
\App\Models\DateFormat::create([
'format' => 'd/M/Y', 'picker_format' => 'dd/M/yyyy', 'label' => '10/Mar/2013']);
\App\Models\DateFormat::create([
'format' => 'd-M-Y', 'picker_format' => 'dd-M-yyyy', 'label' => '10-Mar-2013']);
\App\Models\DateFormat::create([
'format' => 'd/F/Y', 'picker_format' => 'dd/MM/yyyy', 'label' => '10/March/2013']);
\App\Models\DateFormat::create([
'format' => 'd-F-Y', 'picker_format' => 'dd-MM-yyyy', 'label' => '10-March-2013']);
\App\Models\DateFormat::create([
'format' => 'M j, Y', 'picker_format' => 'M d, yyyy', 'label' => 'Mar 10, 2013']);
\App\Models\DateFormat::create([
'format' => 'F j, Y', 'picker_format' => 'MM d, yyyy', 'label' => 'March 10, 2013']);
\App\Models\DateFormat::create([
'format' => 'D M j, Y', 'picker_format' => 'D MM d, yyyy', 'label' => 'Mon March 10, 2013']);
// \App\Models\DateFormat::create([
// 'format' => 'd/M/Y', 'picker_format' => 'dd/M/yyyy', 'label' => '10/Mar/2013']);
// \App\Models\DateFormat::create([
// 'format' => 'd-M-Y', 'picker_format' => 'dd-M-yyyy', 'label' => '10-Mar-2013']);
// \App\Models\DateFormat::create([
// 'format' => 'd/F/Y', 'picker_format' => 'dd/MM/yyyy', 'label' => '10/March/2013']);
// \App\Models\DateFormat::create([
// 'format' => 'd-F-Y', 'picker_format' => 'dd-MM-yyyy', 'label' => '10-March-2013']);
// \App\Models\DateFormat::create([
// 'format' => 'M j, Y', 'picker_format' => 'M d, yyyy', 'label' => 'Mar 10, 2013']);
// \App\Models\DateFormat::create([
// 'format' => 'F j, Y', 'picker_format' => 'MM d, yyyy', 'label' => 'March 10, 2013']);
// \App\Models\DateFormat::create([
// 'format' => 'D M j, Y', 'picker_format' => 'D MM d, yyyy', 'label' => 'Mon March 10, 2013']);
$timezones = [

View File

@ -1,13 +1,13 @@
@if(!$event->is_live)
<section id="goLiveBar">
<div class="container">
@if(!$event->is_live)
@if(!$event->is_live)
{{ @trans("ManageEvent.event_not_live") }}
<a href="{{ route('MakeEventLive' , ['event_id' => $event->id]) }}"
style="background-color: green; border-color: green;"
class="btn btn-success btn-xs">{{ @trans("ManageEvent.publish_it") }}</a>
@endif
@endif
</div>
</section>
@endif
@ -28,14 +28,14 @@
<h1 property="name">{{$event->title}}</h1>
<div class="event_venue">
<span property="startDate" content="{{ $event->start_date->toIso8601String() }}">
{{ $event->start_date->format('d.m H:i') }}
{{ $event->startDateFormatted() }}
</span>
-
<span property="endDate" content="{{ $event->end_date->toIso8601String() }}">
@if($event->start_date->diffInHours($event->end_date) <= 12)
{{ $event->end_date->format('H:i') }}
@else
{{ $event->end_date->format('d.m H:i') }}
{{ $event->endDateFormatted() }}
@endif
</span>
@lang("Public_ViewEvent.at")

View File

@ -58,36 +58,36 @@
<div class="ticket">
<div class='logo'>
<img alt="{{$event->organiser->full_logo_path}}" src="data:image/png;base64, {{$image}}" />
@if(count($images)>0)
<img alt="{{$event->organiser->full_logo_path}}" src="data:image/png;base64, {{$image}}" />
@if(isset($images) && count($images) > 0)
@foreach($images as $img)
<BR><img src="data:image/png;base64, {{$img}}" />
@endforeach
@endif
</div>
<div class="layout_even">
<div class="event_details">
<div class="event_details">
<h4>@lang("Ticket.event")</h4>
{{$event->title}}
{{$event->title}}
<h4>@lang("Ticket.organiser")</h4>
{{$event->organiser->name}}
{{$event->organiser->name}}
<h4>@lang("Ticket.venue")</h4>
{{$event->venue_name}}
{{$event->venue_name}}
<h4>@lang("Ticket.start_date_time")</h4>
{{$event->start_date->format('Y-m-d H:i')}}
{{$event->startDateFormatted()}}
<h4>@lang("Ticket.end_date_time")</h4>
{{$event->end_date->format('Y-m-d H:i')}}
</div>
{{$event->endDateFormatted()}}
</div>
<div class="attendee_details">
<div class="attendee_details">
<h4>@lang("Ticket.name")</h4>
{{$attendee->first_name.' '.$attendee->last_name}}
{{$attendee->first_name.' '.$attendee->last_name}}
<h4>@lang("Ticket.ticket_type")</h4>
{{$attendee->ticket->title}}
{{$attendee->ticket->title}}
<h4>@lang("Ticket.order_ref")</h4>
{{$order->order_reference}}
{{$order->order_reference}}
<h4>@lang("Ticket.attendee_ref")</h4>
{{$attendee->reference}}
{{$attendee->reference}}
<h4>@lang("Ticket.price")</h4>
@php
// Calculating grand total including tax
@ -99,7 +99,7 @@
<br><br>{{$event->organiser->tax_name}} ID: {{ $event->organiser->tax_id }}
@endif
</div>
</div>
</div>
<div class="barcode">
{!! DNS2D::getBarcodeSVG($attendee->private_reference_number, "QRCODE", 6, 6) !!}
</div>