3.3 - Refusing Orders When There Are No More Tickets

This commit is contained in:
Adam Wathan
2016-11-14 17:24:32 -05:00
parent 53a69777ea
commit 2ccc635f5f
4 changed files with 56 additions and 3 deletions

View File

@@ -3,6 +3,7 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Exceptions\NotEnoughTicketsException;
class Concert extends Model
{
@@ -41,8 +42,13 @@ class Concert extends Model
public function orderTickets($email, $ticketQuantity)
{
$tickets = $this->tickets()->available()->take($ticketQuantity)->get();
if ($tickets->count() < $ticketQuantity) {
throw new NotEnoughTicketsException;
}
$order = $this->orders()->create(['email' => $email]);
$tickets = $this->tickets()->take($ticketQuantity)->get();
foreach ($tickets as $ticket) {
$order->tickets()->save($ticket);
@@ -60,6 +66,6 @@ class Concert extends Model
public function ticketsRemaining()
{
return $this->tickets()->whereNull('order_id')->count();
return $this->tickets()->available()->count();
}
}