diff --git a/app/Http/Controllers/ConcertOrdersController.php b/app/Http/Controllers/ConcertOrdersController.php index 8309212..baa3452 100644 --- a/app/Http/Controllers/ConcertOrdersController.php +++ b/app/Http/Controllers/ConcertOrdersController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Order; use App\Concert; +use App\Reservation; use Illuminate\Http\Request; use App\Billing\PaymentGateway; use App\Billing\PaymentFailedException; @@ -31,12 +32,13 @@ class ConcertOrdersController extends Controller try { // Find some tickets $tickets = $concert->findTickets(request('ticket_quantity')); + $reservation = new Reservation($tickets); // Charge the customer for the tickets - $this->paymentGateway->charge($tickets->sum('price'), request('payment_token')); + $this->paymentGateway->charge($reservation->totalCost(), request('payment_token')); // Create an order for those tickets - $order = Order::forTickets($tickets, request('email'), $tickets->sum('price')); + $order = Order::forTickets($tickets, request('email'), $reservation->totalCost()); return response()->json($order, 201); diff --git a/app/Reservation.php b/app/Reservation.php new file mode 100644 index 0000000..2993db9 --- /dev/null +++ b/app/Reservation.php @@ -0,0 +1,18 @@ +tickets = $tickets; + } + + public function totalCost() + { + return $this->tickets->sum('price'); + } +} diff --git a/tests/unit/ReservationTest.php b/tests/unit/ReservationTest.php new file mode 100644 index 0000000..34ab327 --- /dev/null +++ b/tests/unit/ReservationTest.php @@ -0,0 +1,23 @@ +create(['ticket_price' => 1200])->addTickets(3); + $tickets = $concert->findTickets(3); + + $reservation = new Reservation($tickets); + + $this->assertEquals(3600, $reservation->totalCost()); + } +}