mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-01-26 03:04:05 +00:00
5.5 - Precomputing the Order Amount
This commit is contained in:
@@ -69,7 +69,7 @@ class Concert extends Model
|
||||
|
||||
public function createOrder($email, $tickets)
|
||||
{
|
||||
return Order::forTickets($tickets, $email);
|
||||
return Order::forTickets($tickets, $email, $tickets->sum('price'));
|
||||
}
|
||||
|
||||
public function addTickets($quantity)
|
||||
|
||||
@@ -29,15 +29,14 @@ class ConcertOrdersController extends Controller
|
||||
]);
|
||||
|
||||
try {
|
||||
|
||||
// Find some tickets
|
||||
$tickets = $concert->findTickets(request('ticket_quantity'));
|
||||
|
||||
// Charge the customer for the tickets
|
||||
$this->paymentGateway->charge(request('ticket_quantity') * $concert->ticket_price, request('payment_token'));
|
||||
$this->paymentGateway->charge($tickets->sum('price'), request('payment_token'));
|
||||
|
||||
// Create an order for those tickets
|
||||
$order = Order::forTickets($tickets, request('email'));
|
||||
$order = Order::forTickets($tickets, request('email'), $tickets->sum('price'));
|
||||
|
||||
return response()->json($order, 201);
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ class Order extends Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
|
||||
public static function forTickets($tickets, $email)
|
||||
public static function forTickets($tickets, $email, $amount)
|
||||
{
|
||||
$order = self::create([
|
||||
'email' => $email,
|
||||
'amount' => $tickets->sum('price'),
|
||||
'amount' => $amount,
|
||||
]);
|
||||
|
||||
foreach ($tickets as $ticket) {
|
||||
|
||||
@@ -11,12 +11,12 @@ class OrderTest extends TestCase
|
||||
use DatabaseMigrations;
|
||||
|
||||
/** @test */
|
||||
function creating_an_order_from_tickets_and_email()
|
||||
function creating_an_order_from_tickets_email_and_amount()
|
||||
{
|
||||
$concert = factory(Concert::class)->create(['ticket_price' => 1200])->addTickets(5);
|
||||
$concert = factory(Concert::class)->create()->addTickets(5);
|
||||
$this->assertEquals(5, $concert->ticketsRemaining());
|
||||
|
||||
$order = Order::forTickets($concert->findTickets(3), 'john@example.com');
|
||||
$order = Order::forTickets($concert->findTickets(3), 'john@example.com', 3600);
|
||||
|
||||
$this->assertEquals('john@example.com', $order->email);
|
||||
$this->assertEquals(3, $order->ticketQuantity());
|
||||
|
||||
Reference in New Issue
Block a user