Example #1
0
 static function getForUser($userId)
 {
     $c = new Criteria();
     $c->add(ShoppingCartPeer::IS_ACTIVE, true);
     $c->add(ShoppingCartPeer::USER_ID, $userId);
     $c->addDescendingOrderByColumn(ShoppingCartPeer::CREATED_AT);
     return ShoppingCartPeer::doSelect($c);
 }
Example #2
0
 public function executeCartCheckoutBox()
 {
     $this->user = $this->getUser()->getRaykuUser();
     $c = new Criteria();
     $c->add(ShoppingCartPeer::IS_ACTIVE, true);
     $c->add(ShoppingCartPeer::USER_ID, $this->user->getId());
     $c->addDescendingOrderByColumn(ShoppingCartPeer::CREATED_AT);
     $this->cart_items = ShoppingCartPeer::doSelect($c);
 }
Example #3
0
 /**
  * Populates the object using an array.
  *
  * This is particularly useful when populating an object from one of the
  * request arrays (e.g. $_POST).  This method goes through the column
  * names, checking to see whether a matching key exists in populated
  * array. If so the setByName() method is called for that column.
  *
  * You can specify the key type of the array by additionally passing one
  * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME,
  * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM.
  * The default key type is the column's phpname (e.g. 'AuthorId')
  *
  * @param      array  $arr     An array to populate the object from.
  * @param      string $keyType The type of keys the array uses.
  * @return     void
  */
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = ShoppingCartPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setItemId($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setUserId($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setQuantity($arr[$keys[3]]);
     }
     if (array_key_exists($keys[4], $arr)) {
         $this->setTotalPrice($arr[$keys[4]]);
     }
     if (array_key_exists($keys[5], $arr)) {
         $this->setTotalShippingCharge($arr[$keys[5]]);
     }
     if (array_key_exists($keys[6], $arr)) {
         $this->setCreatedAt($arr[$keys[6]]);
     }
     if (array_key_exists($keys[7], $arr)) {
         $this->setUpdatedAt($arr[$keys[7]]);
     }
     if (array_key_exists($keys[8], $arr)) {
         $this->setIsActive($arr[$keys[8]]);
     }
 }
Example #4
0
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      PropelPDO $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(ShoppingCartPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria(ShoppingCartPeer::DATABASE_NAME);
         $criteria->add(ShoppingCartPeer::ID, $pks, Criteria::IN);
         $objs = ShoppingCartPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
Example #5
0
 public function executeCheckout()
 {
     $this->user = $this->getUser()->getRaykuUser();
     $voucher_id = $this->getUser()->getAttribute('voucher_id');
     $offer = OfferVoucherPeer::retrieveByPK($voucher_id);
     //$_SESSION['offerid'] = $offer->getId();
     if ($this->getRequest()->getMethod() == sfRequest::POST) {
         $c = new Criteria();
         $c->add(ShoppingCartPeer::IS_ACTIVE, true);
         $c->add(ShoppingCartPeer::USER_ID, $this->user->getId());
         $c->addDescendingOrderByColumn(ShoppingCartPeer::CREATED_AT);
         $this->cart_items = ShoppingCartPeer::doSelect($c);
         $purchase_detail = $this->getRequestParameter('purchase');
         foreach ($purchase_detail as $index => $value) {
             $purchaseDetail[$index] = trim($value);
         }
         if ($purchaseDetail['name'] == '' || $purchaseDetail['email'] == '' || $purchaseDetail['address_1'] == '' || $purchaseDetail['city'] == '' || $purchaseDetail['state'] == '' || $purchaseDetail['zip'] == '' || $purchaseDetail['country'] == '' || $purchaseDetail['tel'] == '') {
             sfProjectConfiguration::getActive()->loadHelpers(array('Url', 'Tag'));
             $this->msg = "<p>Please fill in all additional information on the <b>Purchase Cart</b> page.</p>";
             $this->msg .= "<p>" . link_to('Go back to the <b>Purchase Cart</b> page.', 'shop/checkoutPage') . "</p>";
         } else {
             if (count($this->cart_items) > 0) {
                 $count = 0;
                 $tot_price = 0;
                 $tot_item_price = 0;
                 $tot_shipping_price = 0;
                 $tot_quantity = 0;
                 foreach ($this->cart_items as $cart_item) {
                     $tot_price = $tot_price + $cart_item->getTotalPrice() + $cart_item->getTotalShippingCharge();
                     if ($tot_price > $this->user->getPoints()) {
                         break;
                     }
                     $sales_detail = new SalesDetail();
                     $sales_detail->setItemId($cart_item->getItemId());
                     $sales_detail->setTotalPrice($cart_item->getTotalPrice());
                     $sales_detail->setTotalShippingCharge($cart_item->getTotalShippingCharge());
                     $sales_detail->setQuantity($cart_item->getQuantity());
                     $sales_detail->save();
                     $count++;
                     $tot_item_price = $tot_item_price + $cart_item->getTotalPrice();
                     $tot_shipping_price = $tot_shipping_price + $cart_item->getTotalShippingCharge();
                     $tot_quantity = $tot_quantity + $cart_item->getQuantity();
                     $itemPurchased = ItemPeer::retrieveByPK($cart_item->getItemId());
                     if (empty($purchasedItems)) {
                         $purchasedItems = $itemPurchased->getTitle();
                     } else {
                         $purchasedItems = $purchasedItems . "," . $itemPurchased->getTitle();
                     }
                     $cart_item->delete();
                 }
                 $sales = new Sales();
                 if ($offer instanceof OfferVoucher) {
                     $tot_price = $tot_price - $offer->getPrice();
                     //$sales->setOfferVoucherId($offer->getId());
                     $offer->setIsUsed(true);
                     $offer->save();
                 }
                 $sales->setTotalSalePrice($tot_price);
                 $sales->setTotalItemPrice($tot_item_price);
                 $sales->setTotalShippingCharge($tot_shipping_price);
                 $sales->setQuantity($tot_quantity);
                 $sales->setStatusId(1);
                 $sales->save();
                 $this->user->setPoints($this->user->getPoints() - $tot_price);
                 $this->user->save();
                 $full_name = htmlentities($purchase_detail['name']);
                 $email = htmlentities($purchase_detail['email']);
                 $address_1 = htmlentities($purchase_detail['address_1']);
                 $address_2 = htmlentities($purchase_detail['address_2']);
                 $city = htmlentities($purchase_detail['city']);
                 $state = htmlentities($purchase_detail['state']);
                 $zip = htmlentities($purchase_detail['zip']);
                 $country = htmlentities($purchase_detail['country']);
                 $tel = htmlentities($purchase_detail['tel']);
                 $purchase_detail = new PurchaseDetail();
                 $purchase_detail->setFullName($full_name);
                 $purchase_detail->setUserId($this->user->getId());
                 $purchase_detail->setEmail($email);
                 $purchase_detail->setAddress1($address_1);
                 $purchase_detail->setAddress2($address_2);
                 $purchase_detail->setCity($city);
                 $purchase_detail->setZip($zip);
                 $purchase_detail->setState($state);
                 $purchase_detail->setCountry($country);
                 $purchase_detail->setSalesId($sales->getId());
                 $purchase_detail->save();
                 $user = $this->getUser()->getRaykuUser();
                 $this->mail = Mailman::createCleanMailer();
                 $this->mail->setSubject('Rayku.com Shoping Item Purchase Details');
                 $this->mail->setFrom($user->getName() . ' <' . $user->getEmail() . '>');
                 $to = "*****@*****.**";
                 $items = "<b>" . $purchasedItems . "</b>";
                 sfProjectConfiguration::getActive()->loadHelpers(array('Partial'));
                 $this->mail->setBody(get_partial('purchaseitem', array('name' => $user->getName(), 'user' => $user, 'items' => $items)));
                 $this->mail->setContentType('text/html');
                 $this->mail->addAddress($to);
                 $this->mail->send();
                 $this->msg = "<p style='font-size:14px;color:#444444'>You have just spent " . $tot_price . "RP to purchase " . $count . " item(s).<br /><br />A Rayku administrator has been notified, and will deliver your purchase as soon as possible. Once your order has been processed, you will be notified by private message here on Rayku.<br /><br />Thanks!<br />Rayku.com Staff</p>";
                 $this->getUser()->setAttribute('voucher_id', null);
             } else {
                 $this->msg = "<p style='font-size:14px;color:#444444'>No items in cart</p>";
             }
         }
     } else {
         $this->msg = "<p style='font-size:14px;color:#444444'>Unauthorized access.</p>";
     }
 }
Example #6
0
 /**
  * If this collection has already been initialized with
  * an identical criteria, it returns the collection.
  * Otherwise if this User is new, it will return
  * an empty collection; or if this User has previously
  * been saved, it will retrieve related ShoppingCarts from storage.
  *
  * This method is protected by default in order to keep the public
  * api reasonable.  You can provide public methods for those you
  * actually need in User.
  */
 public function getShoppingCartsJoinItem($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     if ($criteria === null) {
         $criteria = new Criteria(UserPeer::DATABASE_NAME);
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collShoppingCarts === null) {
         if ($this->isNew()) {
             $this->collShoppingCarts = array();
         } else {
             $criteria->add(ShoppingCartPeer::USER_ID, $this->id);
             $this->collShoppingCarts = ShoppingCartPeer::doSelectJoinItem($criteria, $con, $join_behavior);
         }
     } else {
         // the following code is to determine if a new query is
         // called for.  If the criteria is the same as the last
         // one, just return the collection.
         $criteria->add(ShoppingCartPeer::USER_ID, $this->id);
         if (!isset($this->lastShoppingCartCriteria) || !$this->lastShoppingCartCriteria->equals($criteria)) {
             $this->collShoppingCarts = ShoppingCartPeer::doSelectJoinItem($criteria, $con, $join_behavior);
         }
     }
     $this->lastShoppingCartCriteria = $criteria;
     return $this->collShoppingCarts;
 }
Example #7
0
 /**
  * Method perform a DELETE on the database, given a User or Criteria object OR a primary key value.
  *
  * @param      mixed $values Criteria or User object or primary key or array of primary keys
  *              which is used to create the DELETE statement
  * @param      PropelPDO $con the connection to use
  * @return     int 	The number of affected rows (if supported by underlying database driver).  This includes CASCADE-related rows
  *				if supported by native driver or if emulated using Propel.
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function doDelete($values, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(UserPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
     }
     if ($values instanceof Criteria) {
         // invalidate the cache for all objects of this type, since we have no
         // way of knowing (without running a query) what objects should be invalidated
         // from the cache based on this Criteria.
         UserPeer::clearInstancePool();
         // rename for clarity
         $criteria = clone $values;
     } elseif ($values instanceof User) {
         // invalidate the cache for this single object
         UserPeer::removeInstanceFromPool($values);
         // create criteria based on pk values
         $criteria = $values->buildPkeyCriteria();
     } else {
         // it must be the primary key
         $criteria = new Criteria(self::DATABASE_NAME);
         $criteria->add(UserPeer::ID, (array) $values, Criteria::IN);
         foreach ((array) $values as $singleval) {
             // we can invalidate the cache for this single object
             UserPeer::removeInstanceFromPool($singleval);
         }
     }
     // Set the correct dbName
     $criteria->setDbName(self::DATABASE_NAME);
     $affectedRows = 0;
     // initialize var to track total num of affected rows
     try {
         // use transaction because $criteria could contain info
         // for more than one table or we could emulating ON DELETE CASCADE, etc.
         $con->beginTransaction();
         $affectedRows += BasePeer::doDelete($criteria, $con);
         // invalidate objects in ExpertPeer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         ExpertPeer::clearInstancePool();
         // invalidate objects in HistoryPeer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         HistoryPeer::clearInstancePool();
         // invalidate objects in ItemRatingPeer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         ItemRatingPeer::clearInstancePool();
         // invalidate objects in OfferVoucher1Peer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         OfferVoucher1Peer::clearInstancePool();
         // invalidate objects in PurchaseDetailPeer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         PurchaseDetailPeer::clearInstancePool();
         // invalidate objects in ShoppingCartPeer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         ShoppingCartPeer::clearInstancePool();
         // invalidate objects in UserAwardsPeer instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule.
         UserAwardsPeer::clearInstancePool();
         $con->commit();
         return $affectedRows;
     } catch (PropelException $e) {
         $con->rollBack();
         throw $e;
     }
 }