Exemple #1
0
<?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];
};
Exemple #2
0
         $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.');
 }