diff --git a/app/Concert.php b/app/Concert.php
index d1ddb66..0dad499 100644
--- a/app/Concert.php
+++ b/app/Concert.php
@@ -48,7 +48,7 @@ class Concert extends Model
public function orders()
{
- return $this->belongsToMany(Order::class, 'tickets');
+ return Order::whereIn('id', $this->tickets()->pluck('order_id'));
}
public function hasOrderFor($customerEmail)
@@ -114,4 +114,9 @@ class Concert extends Model
{
return number_format(($this->ticketsSold() / $this->totalTickets()) * 100, 2);
}
+
+ public function revenueInDollars()
+ {
+ return $this->orders()->sum('amount') / 100;
+ }
}
diff --git a/resources/views/backstage/published-concert-orders/index.blade.php b/resources/views/backstage/published-concert-orders/index.blade.php
index afafc82..fb6777f 100644
--- a/resources/views/backstage/published-concert-orders/index.blade.php
+++ b/resources/views/backstage/published-concert-orders/index.blade.php
@@ -49,7 +49,7 @@
Total Revenue
- $10,353
+ ${{ $concert->revenueInDollars() }}
diff --git a/tests/Unit/ConcertTest.php b/tests/Unit/ConcertTest.php
index a9d62e6..d694059 100644
--- a/tests/Unit/ConcertTest.php
+++ b/tests/Unit/ConcertTest.php
@@ -111,10 +111,21 @@ class ConcertTest extends TestCase
$concert->tickets()->saveMany(factory(Ticket::class, 2)->create(['order_id' => 1]));
$concert->tickets()->saveMany(factory(Ticket::class, 5)->create(['order_id' => null]));
- // $this->assertEquals(0.285714286, $concert->percentSoldOut(), '', 0.00001);
$this->assertEquals(28.57, $concert->percentSoldOut());
}
+ /** @test */
+ function calculating_the_revenue_in_dollars()
+ {
+ $concert = factory(Concert::class)->create();
+ $orderA = factory(Order::class)->create(['amount' => 3850]);
+ $orderB = factory(Order::class)->create(['amount' => 9625]);
+ $concert->tickets()->saveMany(factory(Ticket::class, 2)->create(['order_id' => $orderA->id]));
+ $concert->tickets()->saveMany(factory(Ticket::class, 5)->create(['order_id' => $orderB->id]));
+
+ $this->assertEquals(134.75, $concert->revenueInDollars());
+ }
+
/** @test */
function trying_to_reserve_more_tickets_than_remain_throws_an_exception()
{