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)