diff --git a/app/Http/Controllers/EventTicketsController.php b/app/Http/Controllers/EventTicketsController.php index cb58ac47..00bbe2d7 100644 --- a/app/Http/Controllers/EventTicketsController.php +++ b/app/Http/Controllers/EventTicketsController.php @@ -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'); diff --git a/app/Http/Controllers/MyBaseController.php b/app/Http/Controllers/MyBaseController.php index 1af9f87d..64e5a29d 100644 --- a/app/Http/Controllers/MyBaseController.php +++ b/app/Http/Controllers/MyBaseController.php @@ -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"), ]); /* diff --git a/app/Models/Event.php b/app/Models/Event.php index 24d32cff..7357097c 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -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. * diff --git a/app/Models/MyBaseModel.php b/app/Models/MyBaseModel.php index c9abbcb4..090e3c16 100644 --- a/app/Models/MyBaseModel.php +++ b/app/Models/MyBaseModel.php @@ -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); } /** diff --git a/app/Models/Ticket.php b/app/Models/Ticket.php index 6343aa47..7e4e2dbb 100644 --- a/app/Models/Ticket.php +++ b/app/Models/Ticket.php @@ -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'); } diff --git a/config/attendize.php b/config/attendize.php index 5b2f1bb6..c1b83c23 100644 --- a/config/attendize.php +++ b/config/attendize.php @@ -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 diff --git a/database/seeds/TimezoneSeeder.php b/database/seeds/TimezoneSeeder.php index d2c815f7..b5d0e2e8 100644 --- a/database/seeds/TimezoneSeeder.php +++ b/database/seeds/TimezoneSeeder.php @@ -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 = [ diff --git a/resources/views/Public/ViewEvent/Partials/EventHeaderSection.blade.php b/resources/views/Public/ViewEvent/Partials/EventHeaderSection.blade.php index b9403b53..ae282e08 100644 --- a/resources/views/Public/ViewEvent/Partials/EventHeaderSection.blade.php +++ b/resources/views/Public/ViewEvent/Partials/EventHeaderSection.blade.php @@ -1,13 +1,13 @@ @if(!$event->is_live)
- @if(!$event->is_live) + @if(!$event->is_live) {{ @trans("ManageEvent.event_not_live") }} {{ @trans("ManageEvent.publish_it") }} - @endif + @endif
@endif @@ -28,14 +28,14 @@

{{$event->title}}

- {{ $event->start_date->format('d.m H:i') }} + {{ $event->startDateFormatted() }} - @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 @lang("Public_ViewEvent.at") diff --git a/resources/views/Public/ViewEvent/Partials/PDFTicket.blade.php b/resources/views/Public/ViewEvent/Partials/PDFTicket.blade.php index ea1cfc71..5ea9ab27 100644 --- a/resources/views/Public/ViewEvent/Partials/PDFTicket.blade.php +++ b/resources/views/Public/ViewEvent/Partials/PDFTicket.blade.php @@ -58,36 +58,36 @@
-
+

@lang("Ticket.event")

- {{$event->title}} + {{$event->title}}

@lang("Ticket.organiser")

- {{$event->organiser->name}} + {{$event->organiser->name}}

@lang("Ticket.venue")

- {{$event->venue_name}} + {{$event->venue_name}}

@lang("Ticket.start_date_time")

- {{$event->start_date->format('Y-m-d H:i')}} + {{$event->startDateFormatted()}}

@lang("Ticket.end_date_time")

- {{$event->end_date->format('Y-m-d H:i')}} -
+ {{$event->endDateFormatted()}} +
-
+

@lang("Ticket.name")

- {{$attendee->first_name.' '.$attendee->last_name}} + {{$attendee->first_name.' '.$attendee->last_name}}

@lang("Ticket.ticket_type")

- {{$attendee->ticket->title}} + {{$attendee->ticket->title}}

@lang("Ticket.order_ref")

- {{$order->order_reference}} + {{$order->order_reference}}

@lang("Ticket.attendee_ref")

- {{$attendee->reference}} + {{$attendee->reference}}

@lang("Ticket.price")

@php // Calculating grand total including tax @@ -99,7 +99,7 @@

{{$event->organiser->tax_name}} ID: {{ $event->organiser->tax_id }} @endif
-
+
{!! DNS2D::getBarcodeSVG($attendee->private_reference_number, "QRCODE", 6, 6) !!}