mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-01-26 11:14:06 +00:00
66 lines
1.3 KiB
PHP
66 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class Concert extends Model
|
|
{
|
|
protected $guarded = [];
|
|
protected $dates = ['date'];
|
|
|
|
public function scopePublished($query)
|
|
{
|
|
return $query->whereNotNull('published_at');
|
|
}
|
|
|
|
public function getFormattedDateAttribute()
|
|
{
|
|
return $this->date->format('F j, Y');
|
|
}
|
|
|
|
public function getFormattedStartTimeAttribute()
|
|
{
|
|
return $this->date->format('g:ia');
|
|
}
|
|
|
|
public function getTicketPriceInDollarsAttribute()
|
|
{
|
|
return number_format($this->ticket_price / 100, 2);
|
|
}
|
|
|
|
public function orders()
|
|
{
|
|
return $this->hasMany(Order::class);
|
|
}
|
|
|
|
public function tickets()
|
|
{
|
|
return $this->hasMany(Ticket::class);
|
|
}
|
|
|
|
public function orderTickets($email, $ticketQuantity)
|
|
{
|
|
$order = $this->orders()->create(['email' => $email]);
|
|
$tickets = $this->tickets()->take($ticketQuantity)->get();
|
|
|
|
foreach ($tickets as $ticket) {
|
|
$order->tickets()->save($ticket);
|
|
}
|
|
|
|
return $order;
|
|
}
|
|
|
|
public function addTickets($quantity)
|
|
{
|
|
foreach (range(1, $quantity) as $i) {
|
|
$this->tickets()->create([]);
|
|
}
|
|
}
|
|
|
|
public function ticketsRemaining()
|
|
{
|
|
return $this->tickets()->whereNull('order_id')->count();
|
|
}
|
|
}
|