public IActionResult Post([FromBody] PurchaseRequest purchaseRequest) { try { var units = configuration["Units"].Split(','); if (!units.Contains(purchaseRequest.Unit.ToLower())) { return(BadRequest()); } QuotationService call = new QuotationService(configuration); Quotation quote = call.GetCotizacion(purchaseRequest.Unit.ToLower()).Result; Purchase purchase = new Purchase(); purchase.IdUser = purchaseRequest.IdUser; purchase.Unit = purchaseRequest.Unit.ToLower(); purchase.Amount = Convert.ToDecimal(purchaseRequest.Amount); purchase.CurrencyRate = quote.Buy; purchase.AmountTo = Math.Round(purchase.Amount / quote.Buy, 3); purchase.PurchaseDate = DateTime.Now; DateTime from = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); DateTime to = new DateTime(DateTime.Now.Year, DateTime.Now.Month + 1, 1); List <Purchase> purchaseDataDB = dataContext.Purchase .Where(p => p.IdUser == purchase.IdUser && p.Unit == purchase.Unit && p.PurchaseDate >= from && p.PurchaseDate < to) .ToList(); decimal compraMensual = 0; foreach (Purchase p in purchaseDataDB) { compraMensual += p.AmountTo.Value; } if (compraMensual + purchase.AmountTo >= Convert.ToDecimal(configuration["BuyLimit:" + purchase.Unit])) { return(BadRequest("Se sobrepaso el limete maximo de compra." + Environment.NewLine + "Usted ya compro: " + compraMensual + ", el maximo mensual es: " + configuration["BuyLimit:" + purchaseRequest.Unit])); } else { dataContext.Purchase.Add(purchase); dataContext.SaveChanges(); } return(Ok(purchase)); } catch (Exception) { return(StatusCode((int)HttpStatusCode.InternalServerError)); } }
public ActionResult <string> Get(string unit) { unit = unit.ToLower(); var units = configuration["Units"].Split(','); if (unit == null || !units.Contains(unit)) { return(BadRequest("La moneda que desea cotizar no fue reconocida")); } QuotationService call = new QuotationService(configuration); Quotation quote = call.GetCotizacion(unit).Result; return(Ok(quote)); }