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() {