public async Task <SkuDetails> GetTransactionsOf(string sku) { SkuDetails detalles = await CalculateTransactions(MoneyConverter.GetMissingRates(await GetRatesList()), sku); if (detalles != null) { return(detalles); } else { return(null); } }
public async Task <SkuDetails> GetTransactionsOf(string sku) { SkuDetails contenido = await app.GetTransactionsOf(sku); return(contenido); }
public async Task <string> GetTransactionsOf(string sku) { SkuDetails pd = await app.GetTransactionsOf(sku); return(JsonConvert.SerializeObject(pd)); }
private async Task <SkuDetails> CalculateTransactions(List <Rate> ratios, string sku) { try { List <Transaction> trans = JsonConvert.DeserializeObject <List <Transaction> >(await GetTransactions()); SkuDetails detalles = new SkuDetails(); if (trans.Count > 0) { var querySkuTrans = from product in trans where product.sku == sku select product; decimal suma = 0; if (querySkuTrans.Count() > 0) { foreach (var item in querySkuTrans) { if (item.currency == Constants.currentCurrency) { detalles.transactions.Add(item); decimal.TryParse(item.currency, out decimal sumaAux); suma += sumaAux; } else { foreach (var r in ratios) { if (r.from == item.currency && r.to == Constants.currentCurrency) { Transaction auxTrans = new Transaction(); string auxR = r.rate.Replace(Constants.sepDecimalEntrada, Constants.sepDecimalTrabajo); string auxA = item.amount.Replace(Constants.sepDecimalEntrada, Constants.sepDecimalTrabajo); decimal.TryParse(auxR, out decimal auxRate); decimal.TryParse(auxA, out decimal auxAmount); auxTrans.sku = item.sku; auxTrans.currency = Constants.currentCurrency; auxTrans.amount = Math.Round(auxRate * auxAmount, Constants.toRound, MidpointRounding.ToEven).ToString().Replace(Constants.sepDecimalTrabajo, Constants.sepDecimalEntrada); suma += auxRate * auxAmount; detalles.transactions.Add(auxTrans); } } } } detalles.total = Math.Round(suma, Constants.toRound, MidpointRounding.ToEven).ToString().Replace(Constants.sepDecimalTrabajo, Constants.sepDecimalEntrada); return(detalles); } else { log.AlertMsg("No se ha encontrado el sku " + sku + ", se busca en el fichero de pruebas..."); try { // Se obtienen los rates del fichero de pruebas StreamReader fileRates = new StreamReader(Constants.ratesPathPruebas); string lineRates = fileRates.ReadLine(); fileRates.Close(); var ratesJson = JsonConvert.DeserializeObject <List <Rate> >(lineRates); ratesJson = MoneyConverter.GetMissingRates(ratesJson); // Se busca el sku en el fichero de pruebas StreamReader fileTrans = new StreamReader(Constants.transPathPruebas); string lineTrans = fileTrans.ReadLine(); fileTrans.Close(); var transJson = JsonConvert.DeserializeObject <List <Transaction> >(lineTrans); if (transJson.Count > 0) { var querySkuTest = from item in transJson where item.sku == sku select item; foreach (var item in querySkuTest) { if (item.currency == Constants.currentCurrency) { detalles.transactions.Add(item); decimal.TryParse(item.currency, out decimal sumaAux); suma += sumaAux; } else { foreach (var r in ratesJson) { if (r.from == item.currency && r.to == Constants.currentCurrency) { Transaction auxTrans = new Transaction(); string auxR = r.rate.Replace(Constants.sepDecimalEntrada, Constants.sepDecimalTrabajo); string auxA = item.amount.Replace(Constants.sepDecimalEntrada, Constants.sepDecimalTrabajo); decimal.TryParse(auxR, out decimal auxRate); decimal.TryParse(auxA, out decimal auxAmount); auxTrans.sku = item.sku; auxTrans.currency = Constants.currentCurrency; auxTrans.amount = Math.Round(auxRate * auxAmount, Constants.toRound, MidpointRounding.ToEven).ToString().Replace(Constants.sepDecimalTrabajo, Constants.sepDecimalEntrada); suma += auxRate * auxAmount; detalles.transactions.Add(auxTrans); } } detalles.total = Math.Round(suma, Constants.toRound, MidpointRounding.ToEven).ToString().Replace(Constants.sepDecimalTrabajo, Constants.sepDecimalEntrada); return(detalles); } } } } catch (ArgumentNullException ex) { log.ErrorMsg("EXCEPTION ERROR"); log.ErrorMsg(ex.ToString()); return(null); } catch (FileNotFoundException ex) { log.ErrorMsg("EXCEPTION ERROR"); log.ErrorMsg(ex.ToString()); return(null); } catch (IOException ex) { log.ErrorMsg("EXCEPTION ERROR"); log.ErrorMsg(ex.ToString()); return(null); } } } } catch (ArgumentNullException ex) { log.ErrorMsg("EXCEPTION ERROR - El argumento pasado al método es nulo."); log.ErrorMsg(ex.ToString()); return(null); } return(null); }