public static function tradeHistory($firstCurrencyName = null, $secondCurrencyName = null, $count = null) { $user = usr::getCurrentUser(1); $isAjax = 0; if ($count == null) { $count = Core::validate(self::getVar('count')); } $from_id = Core::validate(self::getVar('from_id')); $end_id = Core::validate(self::getVar('end_id')); $order = Core::validate(self::getVar('order')); $since = Core::validate(self::getVar('since')); $end = Core::validate(self::getVar('end')); if ($firstCurrencyName == null) { $firstCurrencyName = Core::validate(self::getVar('firstCurrency')); $isAjax = 1; } if ($secondCurrencyName == null) { $secondCurrencyName = Core::validate(self::getVar('secondCurrency')); $isAjax = 1; } $rate = self::getRate($firstCurrencyName, $secondCurrencyName); if ($rate != null) { $params['RateId'] = $rate->getId(); } $params['count'] = $count; $params['from_id'] = $from_id; $params['end_id'] = $end_id; $params['order'] = $order; $params['since'] = $since != null ? date("Y-m-d H:i:s", $since) : null; $params['end'] = $end != null ? date("Y-m-d H:i:s", $end) : null; $deals = Deal::getHistory($params); $return = array(); $rate = new Rate(); $currency = new Currency(); foreach ($deals as $value) { $rate->findById($value['RateId']); $currency->findById($rate->getFirstCurrencyId()); $deal['pair'] = $currency->getName(); $currency->findById($rate->getSecondCurrencyId()); $deal['pair'] .= " - " . $currency->getName(); $deal['type'] = $value['Type'] == 0 ? "buy" : "sell"; $deal['amount'] = $value['Volume']; $deal['rate'] = $value['Price']; $deal['order_id'] = $value['OrderId']; $deal['is_your_order'] = $user != null && $user->getId() == $value['UID'] ? 1 : 0; $deal['timestamp'] = strtotime($value['Date']); array_push($return, $deal); } $result['success'] = 1; $result['return'] = $return; if ($isAjax == 0) { return $result; } print json_encode($result); }
public static function getPages() { $usr = usr::getCurrentUser(1); if (!isset($usr)) { return; } $widget = new Widget(); $widget->setUID($usr->getId()); $pages = $widget->getAllPages(); foreach ($pages as $key => $value) { $id = $value['rate']; $rt = new Rate(); $rt->setId($id); $rt->findById($id); $fcId = $rt->getFirstCurrencyId(); $scId = $rt->getSecondCurrencyId(); $cur = new Currency(); $cur->findById($fcId); $firstCurr = $cur->getName(); $cur->findById($scId); $secondCurr = $cur->getName(); $arr = array(); $arr['firstCurrency'] = $firstCurr; $arr['secondCurrency'] = $secondCurr; $pages[$key]['rate'] = $arr; } return $pages; }
private static function transferMoney(Deal $deal1, Deal $deal2) { if ($deal1->getType() == 1 && $deal2->getType() == 0) { $sellDeal = $deal1; $buyDeal = $deal2; } else { if ($deal1->getType() == 0 && $deal2->getType() == 1) { $sellDeal = $deal2; $buyDeal = $deal1; } else { return false; } } $rate = new Rate(); $rate->findById($sellDeal->getRateId()); $sellOrder = new Order(); $sellOrder->findById($sellDeal->getOrderId()); $buyOrder = new Order(); $buyOrder->findById($buyDeal->getOrderId()); $sellerSecondCurrencyPurse = self::getPurseOrMakeNew($sellOrder->getUserId(), $rate->getSecondCurrencyId()); $buyerFirstCurrencyPurse = self::getPurseOrMakeNew($buyOrder->getUserId(), $rate->getFirstCurrencyId()); $buyerSecondCurrencyPurse = self::getPurseOrMakeNew($buyOrder->getUserId(), $rate->getSecondCurrencyId()); $firstCurVolume = $sellDeal->getVolume(); $buyerFirstCurrencyPurse->addValue($firstCurVolume); $buyerFirstCurrencyPurse->save(); $secondCurVolume = $firstCurVolume * $sellDeal->getPrice(); $sellerSecondCurrencyPurse->addValue($secondCurVolume * (1.0 - $rate->getFee())); $refund = ($firstCurVolume * $buyOrder->getPrice() - $secondCurVolume) * (1.0 + $rate->getFee()); if ($buyOrder->getUserId() != $sellOrder->getUserId()) { $sellerSecondCurrencyPurse->save(); $buyerSecondCurrencyPurse->addValue($refund); $buyerSecondCurrencyPurse->save(); } else { $sellerSecondCurrencyPurse->addValue($refund); $sellerSecondCurrencyPurse->save(); } return true; }
public static function history() { $usr = self::getCurrentUser(1); if (!isset($usr)) { header("Location: /"); return; } $orders = Order::findBy(array('UID' => $usr->getId()), ' ORDER BY Date DESC'); $rate = new Rate(); $currency = new Currency(); foreach ($orders as $key => $order) { $rate->findById($order['RateId']); $currency->findById($rate->getFirstCurrencyId()); $orders[$key]['FirstCurrency'] = $currency->getName(); $currency->findById($rate->getSecondCurrencyId()); $orders[$key]['SecondCurrency'] = $currency->getName(); $orders[$key]['Type'] = $order['Type'] == OrderType::BUY ? 'Buy' : 'Sell'; $status = ''; switch ($order['Status']) { case OrderStatus::ACTIVE: $status = 'Active'; break; case OrderStatus::DONE: $status = 'Done'; break; case OrderStatus::PARTIALLY_DONE: $status = 'Partially done'; break; case OrderStatus::CANCELLED: $status = 'Cancelled'; break; } $orders[$key]['Status'] = $status; $orderDeals = Deal::findByAndOrderByDate(array('OrderId' => $order['id'])); $deals = array(); foreach ($orderDeals as $dealKey => $deal) { $deals[$dealKey]['id'] = $deal['id']; $deals[$dealKey]['Price'] = $deal['Price']; $deals[$dealKey]['Volume'] = $deal['Volume']; $deals[$dealKey]['Date'] = $deal['Date']; $deals[$dealKey]['Status'] = $deal['Done'] == 0 ? 'Active' : 'Done'; } $orders[$key]['deals'] = $deals; } Core::runView('ViewTemplate/account', array('pageName' => 'Deals history', 'activeMenu' => 'Deals history', 'pagePath' => 'AccountProfile/usr_dealshistory', 'user' => $usr, 'dealsHistory' => $orders)); }