Files
ticketbeast/app/Order.php
2017-03-31 16:35:42 -04:00

58 lines
1.3 KiB
PHP

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Facades\OrderConfirmationNumber;
class Order extends Model
{
protected $guarded = [];
public static function forTickets($tickets, $email, $charge)
{
$order = self::create([
'confirmation_number' => OrderConfirmationNumber::generate(),
'email' => $email,
'amount' => $charge->amount(),
'card_last_four' => $charge->cardLastFour(),
]);
$tickets->each->claimFor($order);
return $order;
}
public static function findByConfirmationNumber($confirmationNumber)
{
return self::where('confirmation_number', $confirmationNumber)->firstOrFail();
}
public function concert()
{
return $this->belongsTo(Concert::class);
}
public function tickets()
{
return $this->hasMany(Ticket::class);
}
public function ticketQuantity()
{
return $this->tickets()->count();
}
public function toArray()
{
return [
'confirmation_number' => $this->confirmation_number,
'email' => $this->email,
'amount' => $this->amount,
'tickets' => $this->tickets->map(function ($ticket) {
return ['code' => $ticket->code];
})->all(),
];
}
}