<?php use Crazy\Form; return function ($site, $pages, $page) { $event = $page->parent(); $order = new CrazyEventOrder($event); $form = new Form(['guest' => []]); if (r::is('post')) { // Add a new guest if (get('add_guest') && ($guest = get('guest'))) { if ($event->seatsAvailable(1 + count($order->guests()))) { $order->addGuest(htmlspecialchars($guest)); } else { $form->addError('guest', 'Sorry, there are no more seats available.'); } } // Remove a guest if ($removeId = get('remove_guest')) { // the field is submitted as "id-[$id]" $id = substr($removeId, 3); $order->removeGuest($id); } go($page->url()); } return ['event' => $event, 'studio' => $order->studio(), 'form' => $form, 'order' => $order]; };
$promoForm->addError('coupon_code', 'Sorry, that coupon is not available.'); } } else { if ($form->validates()) { // Accept the payment try { $stripeMode = env('STRIPE_API_MODE', 'test'); if ($stripeMode == 'test') { Stripe::setApiKey(env('STRIPE_TEST_SECRET_KEY')); } if ($stripeMode == 'live') { Stripe::setApiKey(env('STRIPE_LIVE_SECRET_KEY')); } $charge = Charge::create(['card' => ['number' => $form->data('card_number'), 'exp_month' => $form->data('exp_month'), 'exp_year' => $form->data('exp_year'), 'name' => $form->data('billing_name')], 'amount' => $order->totalCents(), 'metadata' => ['email' => $form->data('email'), 'event_url' => $order->event()->tinyurl(), 'guests' => $order->guestlist()], 'description' => "{$order->quantity()} Ticket(s) for {$order->event()->title()->html()} @ {$order->event()->studio()->title()->html()} @ {$order->event()->tinyDateTime()}", 'currency' => 'usd']); } catch (Exception $e) { $form->addError('payment', $e->getMessage()); $form->saveData(); go($page->url()); } // Save the order $orderPage = $order->store($form->data()); // Empty the order and form sessions $order->deconstruct(); // Fire event event('tickets.purchased', ['studio' => $studio, 'event' => $event, 'orderId' => $orderPage->title()->toString()]); // Redirect to a thank you page flash('messages.success', snippet('events/checkout/thanks', ['order' => $orderPage], true)); go($order->event()->url()); } flash('messages.error', 'There were errors with your submission.'); }