public static function EGOP_transaction_o_complete()
 {
     $id = Core::validate($_GET['id']);
     $hash = Core::validate($_GET['hash']);
     $at = new AtEgop();
     if (!$at->findById($id)) {
         header('Location: ' . URL_WRONG_DATA_INPUT);
         exit;
     }
     if ($hash != self::hash_for_money_output_link($at->getId(), $at->getUID())) {
         header('Location: ' . URL_WRONG_DATA_INPUT);
         exit;
     }
     $currency = new Currency();
     $currency->findById($at->getCurrencyId());
     $wallets = self::EGOP_MinAndMaxWallets($currency);
     $amount = $at->getAmount();
     if ($wallets['max'] == null || $wallets['max']['current_balance'] < $amount) {
         Core::write_log(EGOPAY_LOG_PATH, __FUNCTION__ . ' : Not enough money on this wallet (id) : ' . $wallets['max']['id'] . '(at_egop id=' . $at->getId() . ')');
         header('Location: ' . URL_SERVER_ERROR);
         exit;
     }
     $wallet = new WalletsEgop();
     $wallet->findById($wallets['max']['id']);
     $oAuth = new EgoPayAuth($wallet->getEmail(), $wallet->getApiId(), $wallet->getApiPassword());
     $oEgoPayJsonAgent = new EgoPayJsonApiAgent($oAuth);
     $oEgoPayJsonAgent->setVerifyPeer(false);
     try {
         $oResponse = $oEgoPayJsonAgent->getTransfer($at->getClientAccount(), $at->getAmount(), $currency->getName(), 'Transfer from Bitmonex');
         // for debug
         Core::write_log(EGOPAY_LOG_PATH, __FUNCTION__ . ' : getTransfer response: ' . print_r($oResponse, true));
         reset($oResponse);
         //
     } catch (EgoPayApiException $e) {
         // error codes from here: https://www.egopay.com/developers/api/payments/send-payment
         if ($e->getCode() == 11 || $e->getCode() == 12) {
             header('Location: ' . URL_WRONG_DATA_INPUT);
             exit;
         }
         Core::write_log(EGOPAY_LOG_PATH, __FUNCTION__ . ' : getTransfer Error: ' . $e->getCode() . " : " . $e->getMessage());
         header('Location: ' . URL_SERVER_ERROR);
         exit;
     }
     $limits = self::transactionLimits($currency->getId(), 'EGOP', 1);
     $feeVolume = $amount * $limits['fee'];
     $feeVolume = Core::round_up($feeVolume, 2);
     $purses = Purse::findBy(array('UID' => $at->getUID(), 'CurId' => $currency->getId()));
     $purse = new Purse();
     $purse->findById($purses[0]['id']);
     $purse->addValue(-($amount + $feeVolume));
     $purse->save();
     $systemFeeVolume = $amount * $limits['system_fee'];
     $systemFeeVolume = Core::round_up($systemFeeVolume, 2);
     $profit = ($feeVolume - $systemFeeVolume) * $wallet->getShare();
     $wallet->setProfit($wallet->getProfit() + $profit);
     $wallet->save();
     $at->setStatus(1);
     $at->setOurWalletId($wallet->getId());
     $at->setTransactionId($oResponse->transaction->sId);
     $at->setTimestamp(Core::timestamp_gmp());
     $at->save();
     header('Location: ' . URL_SUCCESS_PAYMENT);
 }
 public static function internal_fees()
 {
     $currency = new Currency();
     $rates = Rate::getAll();
     foreach ($rates as $key => $value) {
         $currency->findById($value['FirstId']);
         $rates[$key]['firstCurrency'] = $currency->getName();
         $currency->findById($value['SecondId']);
         $rates[$key]['secondCurrency'] = $currency->getName();
     }
     Core::runView('ViewTemplate/account', array('pageName' => 'Internal fees', 'activeMenu' => 'Internal fees', 'pagePath' => 'Administration/admin_internal_fees', 'user' => self::$user, 'rates' => $rates));
 }
 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;
 }
 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 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));
 }