/**
  * Updates the orders totalPaid and datePaid date and completes order
  *
  * @param Market_OrderModel $order
  */
 public function updateOrderPaidTotal(Market_OrderModel $order)
 {
     $totalPaid = craft()->market_payment->getTotalPaidForOrder($order);
     $order->totalPaid = $totalPaid;
     if ($order->isPaid()) {
         if ($order->datePaid == null) {
             $order->datePaid = DateTimeHelper::currentTimeForDb();
         }
     }
     $this->save($order);
     if (!$order->dateOrdered) {
         if ($order->isPaid()) {
             craft()->market_order->complete($order);
         } else {
             // maybe not paid in full, but authorized enough to complete order.
             $totalAuthorized = craft()->market_payment->getTotalAuthorizedForOrder($order);
             if ($totalAuthorized >= $order->totalPrice) {
                 craft()->market_order->complete($order);
             }
         }
     }
 }
 protected function defineAttributes()
 {
     return array('success' => array(AttributeType::Bool, 'default' => true), 'code' => array(AttributeType::Number, 'default' => 200), 'errors' => array(AttributeType::Mixed, 'default' => array()), 'service' => AttributeType::String, 'model' => AttributeType::Mixed, 'dateCreated' => array(AttributeType::Mixed, 'default' => DateTimeHelper::formatTimeForDb()));
 }
 /**
  * @return null|string
  */
 public function getStatus()
 {
     $status = parent::getStatus();
     if ($status == static::ENABLED && $this->availableOn) {
         $currentTime = DateTimeHelper::currentTimeStamp();
         $availableOn = $this->availableOn->getTimestamp();
         $expiresOn = $this->expiresOn ? $this->expiresOn->getTimestamp() : null;
         if ($availableOn <= $currentTime && (!$expiresOn || $expiresOn > $currentTime)) {
             return static::LIVE;
         } else {
             if ($availableOn > $currentTime) {
                 return static::PENDING;
             } else {
                 return static::EXPIRED;
             }
         }
     }
     return $status;
 }