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"; } } }
public function getItems() { return $this->hasMany(CartItems::className(), ['cart_id' => 'id']); }
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'); }
<?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();
public function getItems($entity) { return CartItems::find('all', array('conditions' => array('carts' => $entity->_id))); }