Beispiel #1
0
 public function run()
 {
     $expiredItems = CartItems::all(array('conditions' => array('status' => array('$in' => array('open', 'authorized')))));
     foreach ($expiredItems as $item) {
         $reg = $item->getReference();
         $league = $reg->getLeague();
         if (!$league->registrationOpen()) {
             $item->status = CartItems::STATUS_EXPR;
             $item->save();
             ###TODO: Cancel payment with paypal
             foreach ($item->carts as $c) {
                 $cart = ShoppingCarts::find("{$c}");
                 $cart->status = 'expired';
                 $cart->save();
             }
         } else {
             echo "Skipping {$item->_id} for {$league->name}\n";
         }
     }
 }
Beispiel #2
0
 public function getItems()
 {
     return $this->hasMany(CartItems::className(), ['cart_id' => 'id']);
 }
Beispiel #3
0
 public function register()
 {
     if (!$this->league) {
         $redirectUrl = $this->request->env('HTTP_REFERER') ?: '/';
         $this->flashMessage('League not found.', array('alertType' => 'error'));
         return $this->redirect($redirectUrl);
     }
     return $this->redirect('/leagues/' . $this->league->_id . '/register/');
     # ALL OTHER CODE IN THIS METHOD DEPRECATED:
     $league = $this->league;
     $user = $this->CURRENT_USER;
     if (!$league->registrationOpen()) {
         throw new \Exception('Registration is not open for that league.');
     }
     if (!isset($user)) {
         throw new \Exception('You must be logged in to register for a league.');
     }
     if (!$user->can('leagues.register')) {
         throw new \Exception('You do not have permission to register for leagues.');
     }
     $registration = $league->getUserRegistration($user);
     $newRegistration = false;
     if (!isset($registration)) {
         $newRegistration = true;
         $registration = Registrations::create();
         $registration->user_id = $user->_id;
         $registration->league_id = $league->_id;
         $registration->signup_timestamp = time();
         $registration->gender = $user->gender;
         // Copy User Metadata to reduce queries for things like team rosters
         $user_metadata = array();
         foreach (Registrations::$userMetadataFields as $f) {
             if (isset($user->{$f})) {
                 $user_metadata[$f] = $user->{$f};
             }
             $registration->user_data = $user_metadata;
         }
     }
     // Waiver Check:
     if ($this->request->data) {
         if (isset($registration->waiver_acceptance_date) and is_object($registration->waiver_acceptance_date)) {
             #User has already accepted the waiver, is probably just editing the registration
         } else {
             if ($this->request->data['accepted_waiver'] == 1) {
                 #User has clicked the checkbox and has accepted the waiver
                 unset($this->request->data['accepted_waiver']);
                 $this->request->data['waiver_acceptance_date'] = time();
             } else {
                 // User didn't click the waiver checkbox. Let's populate the form fields, run validation, and send it back with an extra error
                 $registration->set($this->request->data);
                 $registration->validates();
                 $registration->errors('accepted_waiver', 'You must accept the waiver to register.');
                 return compact('registration');
             }
         }
     }
     if ($this->request->data and $registration->save($this->request->data)) {
         $cartItem = CartItems::first(array('conditions' => array('reference_class' => 'registrations', 'reference_id' => $registration->_id)));
         // Free registrations
         if ($this->CURRENT_USER->can('register.free')) {
             if ($cartItem and $cartItem->isValid()) {
                 // User has been added to this group after registering
                 $cartItem->status = CartItems::STATUS_DONE;
                 $cartItem->save();
             }
             if ($registration->isValid()) {
                 $registration->status = 'active';
                 $registration->save();
                 $this->flashMessage('Your registration has been comped by the AFDC, you are now registered.', array('alertType' => 'success'));
                 return $this->redirect('Leagues::index');
             } else {
                 $this->flashMessage('Your registration has been comped by the AFDC, but the league is currently full.', array('alertType' => 'error'));
                 return $this->redirect('Leagues::index');
             }
         }
         if (!isset($cartItem)) {
             $cartItem = CartItems::create();
             $cartItem->name = $league->name . ' registration for ' . $user->firstname . ' ' . $user->lastname;
             $cartItem->price = $league->price;
             $cartItem->reference_class = 'registrations';
             $cartItem->reference_id = $registration->_id;
         }
         $cart = $user->getShoppingCart(true);
         $cartItem->carts = array($cart->_id);
         $cartItem->save();
         // Notify the user
         $regMessage = 'Registration ' . ($newRegistration ? 'saved' : 'updated') . ' for <strong>' . $league->name . '</strong>. ';
         if ($registration->paid == false) {
             $regMessage .= ' Please pay via the checkout page to complete your registration.';
         }
         $this->flashMessage($regMessage, array('alertType' => 'success'));
         if (!$registration->paid) {
             return $this->redirect('Carts::index');
         }
         return $this->redirect('Leagues::index');
     } else {
         if ($this->request->data) {
             $this->flashMessage('There was an error.', array('alertType' => 'error'));
             // If we get here, the user definitely checked the box at one time or another, make sure it stays checked.
             $registration->set(array('accepted_waiver' => true));
         }
     }
     return compact('registration');
 }
Beispiel #4
0
<?php

/* @var $this yii\web\View */
/* @var $cart app\models\Cart */
use app\models\CartItems;
use app\models\Session;
use yii\helpers\Url;
use yii\helpers\Html;
$this->title = Yii::t('app', 'Your cart');
$cartItems = CartItems::find()->where(['cart_id' => $cart->id]);
$cart->processCart();
$dataProvider = new yii\data\ActiveDataProvider(['query' => $cartItems]);
$formatter = \Yii::$app->formatter;
?>
<h1><?php 
echo Html::encode($this->title);
?>
</h1>
<?php 
$session = new Session();
$errors = $session->getErrors();
$session->clearErrors();
foreach ($errors as $e) {
    ?>
<div class="alert alert-danger"><h2><?php 
    echo $e;
    ?>
</h2></div><?php 
}
$successes = $session->getSuccesses();
$session->clearSuccesses();
Beispiel #5
0
 public function getItems($entity)
 {
     return CartItems::find('all', array('conditions' => array('carts' => $entity->_id)));
 }