Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Service/ExchangeService/
?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src/Service
<?php
namespace Application\Service\ExchangeService;
use Payward\KrakenAPI;
/**
* Description of KrakenAPIService
*
* @author jimmy
*/
class KrakenAPIService extends BaseService
{
const ERROR_TITLE_CSV_COL_REQUIRED = 'Le csv ne comporte pas les entêtes requis : [REQUIRED_COLUMN]';
const ERROR_MESSAGE_CSV_COL_REQUIRED = 'Vérifiez que vous êtes sur la bonne page d\'importation. Changez d\'onglet s\'il s\'agit d\'un fichier provenant d\'une autre platteforme que Kraken.';
public $arrayTransactions;
protected $file;
protected $requiredColumn = array(
'time',
'type',
'pair',
'cost',
'vol',
'txid'
);
protected $mapperCurrency = array(
'XDAO' => 'DAO',
'XETC' => 'ETC',
'XETH' => 'ETH',
'XLTC' => 'LTC',
'XMLN' => 'MLN',
'XNMC' => 'NMC',
'XREP' => 'REP',
'XXVN' => 'XVN',
'XICN' => 'ICN',
'XXBT' => 'BTC',
'XXDG' => 'XDG',
'XXLM' => 'XLM',
'XXMR' => 'XMR',
'XXTZ' => 'XTZ',
'XXRP' => 'XRP',
'XZEC' => 'ZEC',
'ZCAD' => 'CAD',
'ZEUR' => 'EUR',
'ZGBP' => 'GBP',
'ZJPY' => 'JPY',
'ZKRW' => 'KRW',
'ZUSD' => 'USD');
protected $columnCsv;
protected $errorMessage;
protected $contentFile;
protected $linesArray;
protected $ledgioMapper;
protected function getTimeIndex()
{
return $this->columnCsvMapper['time'];
}
protected function getTypeIndex()
{
return $this->columnCsvMapper['type'];
}
protected function getPairIndex()
{
return $this->columnCsvMapper['pair'];
}
protected function getCostIndex()
{
return $this->columnCsvMapper['cost'];
}
protected function getFeeIndex()
{
return $this->columnCsvMapper['fee'];
}
protected function getVolIndex()
{
return $this->columnCsvMapper['vol'];
}
protected function getTxidIndex()
{
return $this->columnCsvMapper['txid'];
}
protected function getrarrayCurrencyFromStrKraken($pairStrKraken)
{
$arrayCurrencyKraken = array_keys($this->mapperCurrency);
// liste code history https://support.kraken.com/hc/en-us/articles/360001185506-How-to-interpret-asset-codes
// $arrayCurrencyKraken = array('ADA',
// 'ATOM',
// 'BCH',
// 'BSV',
// 'DASH',
// 'DSH',
// 'EOS',
// 'GNO',
// 'QTUM',
// 'USDT',
// 'XDAO',
// 'XETC',
// 'ETC',
// 'XETH',
// 'ETH',
// 'XLTC',
// 'LTC',
// 'XMLN',
// 'MLN',
// 'XNMC',
// 'XREP',
// 'XXVN',
// 'XICN',
// 'XXBT',
// 'XBT',
// 'XXDG',
// 'XDG',
// 'XXLM',
// 'XLM',
// 'XXMR',
// 'XMR',
// 'XXTZ',
// 'XTZ',
// 'XXRP',
// 'XRP',
// 'XZEC',
// 'ZEC',
// 'ZCAD',
// 'ZEUR',
// 'EUR',
// 'ZGBP',
// 'ZJPY',
// 'ZKRW',
// 'ZUSD',
// 'KFEE');
//This array will hold the indexes of every
//element that contains our substring.
if (isset($pairStrKraken) && preg_match_all('(' . implode('|', $arrayCurrencyKraken) . ')', $pairStrKraken, $matches)) {
// if (isset($pairStrKraken)) {
//var_dump($matches[0]); exit;
if (count($matches[0]) != 2) {
// //var_dump($arrayCurrencyKraken);
//// var_dump($pairStrKraken);
//// var_dump($matches);
throw new \Exception('Asset not found' . $pairStrKraken);
}
$newStr = implode('', $matches[0]);
if ($newStr === $pairStrKraken) {
$returnArray = $matches[0];
} else {
$returnArray = array_reverse($matches[0]);
}
// foreach ($returnArray as $i => $val) {
// if (!empty($this->mapperCurrency[$val])) {
// $returnArray[$i] = $this->mapperCurrency[$val];
// }
//
// }
return $returnArray;
} else {
// preg_match_all('(' . implode('|', $arrayCurrencyKraken) . ')', $pairStrKraken, $matches);
// preg_match_all('(' . implode('|', $arrayCurrencyKraken) . ')', 'ZUSDKFEE', $matches2);
// var_dump($arrayCurrencyKraken);
// var_dump(is_null($pairStrKraken));
// var_dump($matches);
// var_dump($matches2);
throw new Exception('Asset not found : ' . $pairStrKraken);
}
}
protected function getTimestamp($arrayLine)
{
$dateStr = $arrayLine[$this->getTimeIndex()];
$dateTime = new \DateTime($dateStr);
return $dateTime->getTimestamp();
}
protected function getDatetime($arrayLine)
{
$dateStr = $arrayLine[$this->getTimeIndex()];
$dateTime = new \DateTime($dateStr);
return $dateTime;
}
protected function getFee($arrayLine)
{
return $arrayLine[$this->getFeeIndex()];
}
protected function getPair($arrayLine)
{
$pairStrKraken = $arrayLine[$this->getPairIndex()];
$arrayAsset = $this->getrarrayCurrencyFromStrKraken($pairStrKraken);
//var_dump($arrayAsset); exit;
return $arrayAsset;
}
protected function getType($arrayLine)
{
$type = $arrayLine[$this->getTypeIndex()];
return $type;
}
protected function getTradedAmount($arrayLine, $type)
{
if (strtolower($type) == 'buy') {
$tradedAmount = $arrayLine[$this->getCostIndex()];
} else {
$tradedAmount = $arrayLine[$this->getVolIndex()];
}
return $tradedAmount;
}
protected function getTradedCurrency($pair, $type)
{
if (strtolower($type) == 'buy') {
return $pair[1];
} else {
return $pair[0];
}
}
protected function getReceivedAmount($arrayLine, $type)
{
if (strtolower($type) == 'buy') {
$receivedAmount = $arrayLine[$this->getVolIndex()];
} else {
$receivedAmount = $arrayLine[$this->getCostIndex()];
}
return $receivedAmount;
}
protected function getReceivedCurrency($pair, $type)
{
if (strtolower($type) == 'buy') {
return $pair[0];
} else {
return $pair[1];
}
}
protected function getTxid($arrayLine)
{
$txId = $arrayLine[$this->getTxidIndex()];
return $txId;
}
public function getEntityManager()
{
return $this->entityManager;
}
public function getUser()
{
return $this->user;
}
public function getExchange()
{
return $this->exchange;
}
public function getLedgerKraken($dateEnd)
{
$res = $this->kraken->QueryPrivate('Ledgers', ['end' => $dateEnd, 'type' => 'trade']);
if (empty($res['error'])) {
$arrayLedgerRows = $res['result']['ledger'];
} else {
throw new \Exception($res['error']);
}
//$arrayTransactions = [];
foreach ($arrayLedgerRows as $id => $arrayInfosLedger) {
// debug ledger entry double
$insertLedgerEntry = true;
// LLXO3T-HQZXN-OOQTDA
if ($id == 'LLXO3T-HQZXN-OOQTDA') {
}
// echo 'tutu';
if (!empty($this->arrayTransactions[$arrayInfosLedger['refid']]) && count($this->arrayTransactions[$arrayInfosLedger['refid']]) >= 2) {
foreach ($this->arrayTransactions[$arrayInfosLedger['refid']] as $key => $infos) {
if ($infos['ledgerId'] == $id) {
$insertLedgerEntry = false;
}
}
}
if ($insertLedgerEntry == true) {
$this->arrayTransactions[$arrayInfosLedger['refid']][] = ['ledgerId' => $id, 'data' => $arrayInfosLedger];
}
}
if (count($arrayLedgerRows) < 50) {
return false;
} else {
return $arrayInfosLedger['time'];
}
}
public function __construct($data, $user, $exchange, \Doctrine\ORM\EntityManager $entityManager)
{
// require __DIR__ . '/vendor/ccxt/ccxt/ccxt.php';
//$this->file = $file;
//var_dump($user->getId()); exit;
$this->user = $user;
$this->exchange = $exchange;
$this->entityManager = $entityManager;
$exchange_id = strtolower($this->getExchange()->getName());
// $exchange_class = "\\ccxt\\$exchange_id";
$key = $data['public'];
$secret = $data['private'];
// set which platform to use (currently only beta is operational, live available soon)
$beta = false;
$url = $beta ? 'https://api.beta.kraken.com' : 'https://api.kraken.com';
$sslverify = $beta ? false : true;
$version = 0;
$this->kraken = new KrakenAPI($key, $secret, $url, $version, $sslverify);
$mapperDeviseKraken = new \Application\Mapper\DeviseKrakenMapper($this->entityManager);
$this->mapperDeviseKraken = $mapperDeviseKraken;
$this->arrayMapperKraken = $mapperDeviseKraken->getArrayMapper();
// Query a public list of active assets and their properties:
$dateEnd = time();
$i = 0;
while($dateEnd !== false){
// while ($dateEnd >= 1586353842.0904) {
$dateEnd = $this->getLedgerKraken($dateEnd);
// var_dump($dateEnd);
// echo '<pre>';
// print_r($this->arrayTransactions);
// echo '<pre>';
sleep(7);
}
// echo '<pre>';
// print_r($this->arrayTransactions);
// echo '<pre>';
//exit;
// $exchange = new $exchange_class (array (
// 'apiKey' => $data['public'],
// 'secret' => $data['private'],
// 'timeout' => 30000,
// 'enableRateLimit' => true,
// ));
//// var_dump($exchange); exit;
//$this->api = $exchange;
// $code = null, $since = null, $limit = null, $params = array ()
// $ledgers = $exchange->fetch_ledger (null, '1514764800000', null, array ());
//var_dump($ledgers);
//exit;
//// get ledger ids
// $ids = array_keys ($ledgers['result']['ledger']);
//
// var_dump($ids);
//$tradeArray = [];
// foreach($ids as $idLedger) {
// $ledger_entries = $exchange->privatePostQueryLedgers (array (
// 'id' => $idLedger,
// 'ofs' => 1000
// ));
// foreach($ledger_entries['result'] as $id => $arrayInfosLedger) {
// if ($arrayInfosLedger['type'] == 'trade') {
// $tradeArray[$arrayInfosLedger['refid']][$id] = $arrayInfosLedger;
// }
// }
// }
// echo '<pre>';
//
// var_dump ($tradeArray);
// echo '</pre>';
// on ajoute chaque entrée du tableau dans ledgio table
$mapperImport = new \Application\Mapper\ImportMapper($this->getEntityManager());
$importEntity = new \Application\Entity\Import(
array(
'user' => $user,
'exchange' => $exchange,
'sourceType' => 'api',
'name' => 'API v1',
'nombreTrade' => 0,
'datetimeImport' => new \DateTime()
));
$mapperImport->insert($importEntity);
$mapperDevise = new \Application\Mapper\DeviseMapper($this->getEntityManager());
// var_dump($exchange); exit;
foreach ($this->arrayTransactions as $tradeId => $arrayLedgers) {
// [ledgerId] => LN37HE-3FYPD-NRTQJJ
// [data] => Array
// (
// [refid] => TPWTHU-ZWXP5-3ZTJV5
// [time] => 1589414967.0939
// [type] => trade
// [aclass] => currency
// [asset] => ZEUR
// [amount] => 1849.3800
// [fee] => 4.8084
// [balance] => 16156.4997
// )
if (count($arrayLedgers) == 2) {
foreach ($arrayLedgers as $index => $legerInfosArray) {
//echo 'titi';
$legerInfos = $legerInfosArray['data'];
$pair = '';
//foreach ($arrayTransaction as $idLedger => $tradeInfos){
$datetimeTransaction = new \DateTime();
$datetimeTransaction->setTimestamp($legerInfos['time']);
// $commissionAsset = $tradeInfos['commissionAsset'];
// $commision = $tradeInfos['commission'];
if ($legerInfos['amount'] < 0) {
$tradedAmount = abs($legerInfos['amount']);
$tradedCurrency = $legerInfos['asset'];
//$pair .= $legerInfos['asset'];
if ($legerInfos['fee'] > 0) {
$fee = $legerInfos['fee'];
$feesCurrency = $legerInfos['asset'];
if (!empty($this->arrayMapperKraken[$feesCurrency])) {
$feesDevise = $this->arrayMapperKraken[$feesCurrency];
} else {
$feesDevise = $mapperDevise->findByCode($feesCurrency);
}
}
if (!empty($this->arrayMapperKraken[$tradedCurrency])) {
$tradedDevise = $this->arrayMapperKraken[$tradedCurrency];
} else {
$tradedDevise = $mapperDevise->findByCode($tradedCurrency);
}
} else {
$receivedAmount = $legerInfos['amount'];
$receivedCurrency = $legerInfos['asset'];
//$pair .= $legerInfos['asset'];
if (!empty($this->arrayMapperKraken[$receivedCurrency])) {
$receivedDevise = $this->arrayMapperKraken[$receivedCurrency];
} else {
$receivedDevise = $mapperDevise->findByCode($receivedCurrency);
}
}
if (!empty($tradedDevise)) {
if ($tradedDevise instanceof \Application\Entity\Devise) {
$ledgioTradedDevise = $tradedDevise;
} else {
$ledgioTradedDevise = $tradedDevise->getDevise();
}
}
if (!empty($receivedDevise)) {
if ($receivedDevise instanceof \Application\Entity\Devise) {
$ledgioReceivedDevise = $receivedDevise;
} else {
$ledgioReceivedDevise = $receivedDevise->getDevise();
}
}
if (!empty($feesDevise)) {
if ($feesDevise instanceof \Application\Entity\Devise) {
$ledgioFeesDevise = $feesDevise;
} else {
$ledgioFeesDevise = $feesDevise->getDevise();
}
}
if ($index == 1) {
$ledgio = new \Application\Entity\Ledgio(array(
'datetimeTransaction' => $datetimeTransaction,
'user' => $user,
'exchange' => $exchange,
'type' => 'BUY',
'pair' => $tradedCurrency . '-' . $receivedCurrency,
// 'fees' => $this->getFee($arrayLine),
'fees' => !empty($fee) ? $fee : '',
'feesDevise' => !empty($ledgioFeesDevise) ? $ledgioFeesDevise : '',
'feesEUR' => '',
'tradedAmount' => $tradedAmount,
'tradedCurrency' => $tradedCurrency,
'tradedDevise' => $ledgioTradedDevise,
'receivedAmount' => $receivedAmount,
'receivedCurrency' => $receivedCurrency,
'receivedDevise' => $ledgioReceivedDevise,
'transactionId' => $legerInfos['refid'],
'import' => $importEntity
));
$ledgio->setUser($this->getUser());
$this->getEntityManager()->persist($ledgio);
$this->getEntityManager()->flush();
$this->countLineRecorded++;
}
}
} else {
echo 'erreur';
}
//var_dump($arrayLedgers);
}
$importEntity->setNombreTrade($this->countLineRecorded);
$mapperImport->update($importEntity);
}
public function importTradesHistory()
{
// delete all trade
$ledgioMapper = new \Application\Mapper\LedgioMapper($this->getEntityManager());
$query = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Ledgio l WHERE l.user = " . $this->getUser()->getId() . ' AND l.exchange = ' . $this->getExchange()->getId());
$query->execute();
$query2 = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Import l WHERE l.user = " . $this->getUser()->getId() . ' AND l.exchange = ' . $this->getExchange()->getId());
$query2->execute();
$listOfPair = $this->api->QueryPublic('Assets');
//$listOfPair = $exchangeInfos['symbols'];
//echo '<pre>';
// Kraken interprete ledger
// https://support.kraken.com/hc/en-us/articles/360001169383-How-to-interpret-Ledger-history-fields
//https://github.com/ccxt/ccxt
$trades = $this->api->fetchMyTrades();
// get ledger entry
// $ledgers = $exchange->privatePostLedgers ();
//
//// get ledger ids
// $ids = array_keys ($ledgers['result']['ledger']);
//
//// get ledger entries for ledger id
// $ledger_entries = $exchange->privatePostQueryLedgers (array (
// 'id' => $ids[0],
// ));
var_dump($trades);
exit;
var_dump($listOfPair);
exit;
$i = 0;
$index = 0;
$batchSize = 50;
$mapperExchange = new \Application\Mapper\ExchangeMapper($this->getEntityManager());
$exchange = $mapperExchange->findByName(strtolower($this->exchangeName));
$importEntity = new \Application\Entity\Import(
array(
'user' => $this->getUser(),
'exchange' => $exchange,
'sourceType' => 'api',
'name' => 'API ' . $exchange->getName(),
'nombreTrade' => 0,
'datetimeImport' => new \DateTime()
));
$mapperImport = new \Application\Mapper\ImportMapper($this->getEntityManager());
$mapperImport->insert($importEntity);
foreach ($listOfPair as $pairInfo) {
// var_dump($this->api->history($pairInfo['symbol']));
// var_dump($pairInfo);
// exit;
file_put_contents('/Users/jimmy/Sites/ledgio2/data/logjob.txt', date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents('/Users/jimmy/Sites/ledgio2/data/logjob.txt', $pairInfo['symbol'] . PHP_EOL, FILE_APPEND | LOCK_EX);
$arrayTrades = $this->api->history($pairInfo['symbol']);
file_put_contents('/Users/jimmy/Sites/ledgio2/data/logjob.txt', print_r($arrayTrades) . PHP_EOL, FILE_APPEND | LOCK_EX);
//file_put_contents('/Users/jimmy/Sites/ledgio2/data/logjob.txt', print_r($arrayTrades) . PHP_EOL, FILE_APPEND | LOCK_EX);
if (!empty($arrayTrades)) {
foreach ($arrayTrades as $tradeInfos) {
file_put_contents('/Users/jimmy/Sites/ledgio2/data/logjob.txt', 'trades:' . print_r($arrayTrades) . PHP_EOL, FILE_APPEND | LOCK_EX);
//$datetimeTransaction = \DateTime::createFromFormat('U', $tradeInfos['time']);
//var_dump($tradeInfos['time']); exit;
$datetimeTransaction = new \DateTime();
$datetimeTransaction->setTimestamp($tradeInfos['time'] / 1000);
$commissionAsset = $tradeInfos['commissionAsset'];
$commision = $tradeInfos['commission'];
$pair = $pairInfo['symbol'];
$tradedAmountNet = $tradeInfos['qty'];
$tradedCurrency = str_replace($commissionAsset, '', $pair);
$receivedAmountNet = $tradeInfos['quoteQty'] - $tradeInfos['commission'];
$receivedCurrency = $commissionAsset;
$txId = $tradeInfos['id'];
$ledgio = new \Application\Entity\Ledgio(array(
'datetimeTransaction' => $datetimeTransaction,
//'user' => $user,
'exchange' => $exchange,
'type' => 'test',
'pair' => 'test2',
'tradedAmount' => $tradedAmountNet ? $tradedAmountNet : 0,
'tradedCurrency' => $tradedCurrency,
'fees' => $commision,
'receivedAmount' => $receivedAmountNet,
'receivedCurrency' => $receivedCurrency,
'txId' => $txId,
'import' => $importEntity
));
file_put_contents('/Users/jimmy/Sites/ledgio2/data/logjob.txt', print_r($tradeInfos) . PHP_EOL, FILE_APPEND | LOCK_EX);
//var_dump($ledgio);
$ledgio->setUser($this->getUser());
// var_dump($ledgio);
// exit;
$this->getEntityManager()->persist($ledgio);
$this->countLineRecorded++;
//$this->getEntityManager()->merge($this->getUser());
if (($index % $batchSize) == 0) {
$this->getEntityManager()->flush();
//$em->clear('\Application\Entity\Ledgio');
}
}
} else {
echo 'pas de transaction' . $pairInfo['symbol'];
}
// "symbol": "BNBBTC",
// "id": 28457,
// "orderId": 100234,
// "price": "4.00000100",
// "qty": "12.00000000",
// "quoteQty": "48.000012",
// "commission": "10.10000000",
// "commissionAsset": "BNB",
// "time": 1499865549590,
// "isBuyer": true,
// "isMaker": false,
// "isBestMatch": true
// if ($i++ == 3) {
// exit;
// }
}
$this->getEntityManager()->flush();
$importEntity->setNombreTrade($this->countLineRecorded);
$mapperImport->update($importEntity);
//$em->clear();
//$em->clear('\Application\Entity\Ledgio');
//$time_elapsed_secs = microtime(true) - $start;
}
// public function __construct($file, $user, \Doctrine\ORM\EntityManager $em) {
//
// // your api credentials
//$key = 'YOUR API KEY';
//$secret = 'YOUR API SECRET';
//// set which platform to use (currently only beta is operational, live available soon)
//$beta = true;
//$url = $beta ? 'https://api.beta.kraken.com' : 'https://api.kraken.com';
//$sslverify = $beta ? false : true;
//$version = 0;
//$kraken = new KrakenAPI($key, $secret, $url, $version, $sslverify);
//// Query a public list of active assets and their properties:
//$res = $kraken->QueryPublic('Assets');
//print_r($res);
//
//
// $this->file = $file;
// $this->user = $user;
// $this->entityManager = $em;
//
// // Mapper Devise
// $mapperDeviseKraken = new \Application\Mapper\DeviseKrakenMapper($this->entityManager);
// $this->arrayMapper = $mapperDeviseKraken->getArrayMapper();
//
//// \Doctrine\Common\Util\Debug::dump($this->arrayMapper); exit;
// $this->initColFromCsv();
//
// $mapperExchange = new \Application\Mapper\ExchangeMapper($em);
// $exchange = $mapperExchange->findByName('kraken');
//
//
//
//
// //var_dump($exchange);
// if ($this->isValid()) {
// $mapperImport = new \Application\Mapper\ImportMapper($this->getEntityManager());
// $mapperDevise = new \Application\Mapper\DeviseMapper($this->getEntityManager());
//
// $importEntity = new \Application\Entity\Import(
// array(
// 'user' => $user,
// 'exchange' => $exchange,
// 'sourceType' => 'csv',
// 'name' => basename($file),
// 'nombreTrade' => 0,
// 'datetimeImport' => new \DateTime()
// ));
// $mapperImport->insert($importEntity);
// $this->ledgioMapper = new \Application\Mapper\LedgioMapper($em);
// /* save */
// $start = microtime(true);
// $batchSize = 200;
// //$user = $em->merge($user);
// foreach ($this->linesArray as $index => $row) {
// $row = trim($row);
// if (empty($row)) {
// continue;
// }
// //var_dump($row);
// if ($index != 0) {
//
// /* date */
//
//
// $arrayLine = str_getcsv($row);
// if (is_null($row)) {
// continue;
// }
// $datetimeTransaction = $this->getDatetime($arrayLine);
//
// $type = $this->getType($arrayLine);
// $pair = $this->getPair($arrayLine);
// $tradedAmount = $this->getTradedAmount($arrayLine, $type);
// $tradedCurrency = $this->getTradedCurrency($pair, $type);
// //var_dump($tradedCurrency); exit;
//// $tradedDevise = $mapperDevise->findByCode($tradedCurrency);
// if (!empty($this->arrayMapper[$tradedCurrency])) {
// $tradedDevise = $this->arrayMapper[$tradedCurrency];
// } else {
// mail('jimmykurc@gmail.com', 'Devise Kraken non reconnue', 'Devise Kraken non reconnue : ' . $tradedCurrency);
// }
//
// //var_dump($tradedDevise); exit;
// //var_dump($tradedCurrency, $tradedDevise); exit;
// $receivedAmount = $this->getReceivedAmount($arrayLine, $type);
// $receivedCurrency = $this->getReceivedCurrency($pair, $type);
//
// if (!empty($this->arrayMapper[$receivedCurrency])) {
// $receivedDevise = $this->arrayMapper[$receivedCurrency];
// } else {
// mail('jimmykurc@gmail.com', 'Devise Kraken non reconnue', 'Devise Kraken non reconnue : ' . $tradedCurrency);
// }
//
// // fee dans la monnaie echangée cf taker or maker fee
// $fees = $this->getFee($arrayLine);
//
//
//
// if ($tradedAmount == $arrayLine[$this->getCostIndex()]) {
//
// if ($fees * 100 / $arrayLine[$this->getCostIndex()] > 0.26) {
// mail('jimmykurc@gmail.com', 'Fee Kraken trop élevée', 'Fee Kraken trop élevée : ' . $fees);
//
// } else {
// //if ($tradedDevise->getCode() == 'ZEUR') {
// $fees = $this->getFee($arrayLine);
// $feesDevise = $tradedDevise;
// //var_dump($fees, $feesDevise->getCode());
//
// }
//
//
// } else {
// if ($fees * 100 / $receivedAmount > 0.26) {
// mail('jimmykurc@gmail.com', 'Fee Kraken trop élevée', 'Fee Kraken trop élevée : ' . $fees);
//
// } else {
// //if ($receivedDevise->getCode() == 'ZEUR') {
// $fees = $this->getFee($arrayLine);
// $feesDevise = $receivedDevise;
// // var_dump($fees, $feesDevise->getCode());
// //exit;
// //}
// }
//
//
// }
//
//
//// $receivedDevise = $mapperDevise->findByCode($receivedCurrency);
//
//
//// var_dump($receivedCurrency);
////
//// foreach($this->arrayMapper as $key => $obj){
//// var_dump($key);
//// }
// if (!empty($this->arrayMapper[$receivedCurrency])) {
// $receivedDevise = $this->arrayMapper[$receivedCurrency];
// } else {
//
// mail('jimmykurc@gmail.com', 'Devise Kraken non reconnue', 'Devise Kraken non reconnue : ' . $receivedCurrency);
// }
// //var_dump($receivedDevise); exit;
//
// $txId = $this->getTxid($arrayLine);
//
//
//
//
//
// $ledgio = new \Application\Entity\Ledgio(array(
// 'datetimeTransaction' => $datetimeTransaction,
// //'user' => $user,
// 'exchange' => $exchange,
// 'type' => $type,
// 'pair' => implode('-', $pair),
// 'fees' => $this->getFee($arrayLine),
// 'feesDevise' => $feesDevise->getDevise(),
// //'tradedAmount' => $tradedAmount,
// 'tradedCurrency' => $tradedCurrency,
// 'tradedDevise' => $tradedDevise->getDevise(),
// //'receivedAmount' => $receivedAmount,
// 'receivedCurrency' => $receivedCurrency,
// 'receivedDevise' => $receivedDevise->getDevise(),
// 'txId' => $txId,
// 'import' => $importEntity
// ));
//
// $ledgio->setUser($user);
//
// $ledgio->setTradedAmount($tradedAmount);
// $ledgio->setReceivedAmount($receivedAmount);
//
////
//// var_dump('user',$em->contains($ledgio->user));
//// var_dump('ledgio',$em->contains($ledgio));
// $em->persist($ledgio);
// $this->countLineRecorded++;
//
////
//// var_dump('user', $em->contains($ledgio->user));
//// var_dump('ledgio',$em->contains($ledgio));
// // exit;
// if (($index % $batchSize) == 0) {
// $em->flush();
// //$em->clear('\Application\Entity\Ledgio');
// }
//
//
//
//// flush the remaining objects
//// trop long !!!!!!!!
// //$this->ledgioMapper->insert($entity);
// // $newDate = new \DateTime();
//// $newDate->setTimestamp($timestampTransaction);
// //$newDate = \DateTime::createFromFormat('U', $timestampTransaction);
//// echo $newDate->format('Y-m-d H:i:s');
//// var_dump($timestampTransaction); exit;
//// $dateTime = new \DateTime($dateStr);
// //$ledgioEntity = new \Application\Entity\Ledgio();
// }
// }
// $em->flush();
// //$em->clear();
// //$em->clear('\Application\Entity\Ledgio');
// //$time_elapsed_secs = microtime(true) - $start;
//// echo $time_elapsed_secs;
//// exit;
// $importEntity->setNombreTrade($this->countLineRecorded);
// $mapperImport->update($importEntity);
// }
// }
protected function initColFromCsv()
{
$this->contentFile = file_get_contents($this->file);
//var_dump($content);
$this->linesArray = explode("\n", $this->contentFile);
//var_dump($lines);
//$this->columnCsv = explode(',', $lines[0]);
$this->columnCsv = str_getcsv($this->linesArray[0]);
$this->columnCsvMapper = array_flip($this->columnCsv);
// var_dump($lines[0]);
// exit;
//echo $exchange;
// foreach ($lines as $nbLine => $line) {
// $csv_row = str_getcsv($line);
//
// if ($nbLine == 0) {
//
//
//
// foreach ($csv_row as $index => $nameCol) {
//
// //var_dump($nameCol);
// //var_dump($mapperFileExchange);
// if (in_array($nameCol, array_values($mapperFileExchange))) {
// $mapperFile[$nameCol] = $index;
// }
// }
// } else {
// //if (empty($csv_row[$mapperFile['asset']])) continue;
// if (!isset($mapperFile[$mapperFileExchange['time']])) {
//// @todo
// //echo $nbLine;
// //echo $exchange;
// //var_dump($csv_row);
// // exit;
// }
// //var_dump($mapperFile);
// //exit;
// if (empty($csv_row[$mapperFile[$mapperFileExchange['time']]]))
// continue;
//
//
// if (!array_key_exists($csv_row[$mapperFile[$mapperFileExchange['time']]], $ledgio))
// $ledgio[$csv_row[$mapperFile[$mapperFileExchange['time']]]] = [];
//
//
// $ledgio[$csv_row[$mapperFile[$mapperFileExchange['time']]]][] = array('data' => $csv_row, 'exchange' => $exchange, 'mapperFile' => $mapperFile);
// // exit;
// }
// //var_dump($mapperFile); exit;
// //save data into database
// //----
// }
}
protected function setErrorMessage($errorMessage)
{
$this->errorMessage = $errorMessage;
}
public function getErrorMessage()
{
return $this->errorMessage;
}
public function isValid()
{
//var_dump($this->requiredColumn);
//var_dump($this->columnCsv);
$arrayDiff = array_diff($this->requiredColumn, $this->columnCsv);
$colIsValid = !$arrayDiff;
if ($colIsValid === false) {
$this->setErrorMessage(array(
'header' => str_replace('[REQUIRED_COLUMN]', implode(', ', $arrayDiff), SELF::ERROR_TITLE_CSV_COL_REQUIRED),
'body' => SELF::ERROR_MESSAGE_CSV_COL_REQUIRED,
'footer' => '')
);
}
return $colIsValid;
}
}