diff --git a/app/Concert.php b/app/Concert.php
index aeb5e49..8dac06b 100644
--- a/app/Concert.php
+++ b/app/Concert.php
@@ -99,4 +99,9 @@ class Concert extends Model
{
return $this->tickets()->available()->count();
}
+
+ public function ticketsSold()
+ {
+ return $this->tickets()->sold()->count();
+ }
}
diff --git a/app/Ticket.php b/app/Ticket.php
index 31ffc85..38aa0a9 100644
--- a/app/Ticket.php
+++ b/app/Ticket.php
@@ -15,6 +15,11 @@ class Ticket extends Model
return $query->whereNull('order_id')->whereNull('reserved_at');
}
+ public function scopeSold($query)
+ {
+ return $query->whereNotNull('order_id');
+ }
+
public function reserve()
{
$this->update(['reserved_at' => Carbon::now()]);
diff --git a/resources/views/backstage/published-concert-orders/index.blade.php b/resources/views/backstage/published-concert-orders/index.blade.php
index 1df283c..01b2bcf 100644
--- a/resources/views/backstage/published-concert-orders/index.blade.php
+++ b/resources/views/backstage/published-concert-orders/index.blade.php
@@ -33,7 +33,7 @@
Total Tickets Remaining
- 243
+ {{ $concert->ticketsRemaining() }}
@@ -41,7 +41,7 @@
Total Tickets Sold
- 357
+ {{ $concert->ticketsSold() }}
diff --git a/tests/Unit/ConcertTest.php b/tests/Unit/ConcertTest.php
index c19d422..cf2d2b6 100644
--- a/tests/Unit/ConcertTest.php
+++ b/tests/Unit/ConcertTest.php
@@ -78,10 +78,21 @@ class ConcertTest extends TestCase
function tickets_remaining_does_not_include_tickets_associated_with_an_order()
{
$concert = factory(Concert::class)->create();
- $concert->tickets()->saveMany(factory(Ticket::class, 30)->create(['order_id' => 1]));
- $concert->tickets()->saveMany(factory(Ticket::class, 20)->create(['order_id' => null]));
+ $concert->tickets()->saveMany(factory(Ticket::class, 3)->create(['order_id' => 1]));
+ $concert->tickets()->saveMany(factory(Ticket::class, 2)->create(['order_id' => null]));
- $this->assertEquals(20, $concert->ticketsRemaining());
+ $this->assertEquals(2, $concert->ticketsRemaining());
+ }
+
+ /** @test */
+ function tickets_sold_only_includes_tickets_associated_with_an_order()
+ {
+ $concert = factory(Concert::class)->create();
+ $concert->tickets()->saveMany(factory(Ticket::class, 3)->create(['order_id' => 1]));
+ $concert->tickets()->saveMany(factory(Ticket::class, 2)->create(['order_id' => null]));
+
+ $this->assertEquals(3, $concert->ticketsSold());
+ }
}
/** @test */