public ActionResult <Purchase> PostPurchase([FromBody] PurchaseCreationDTO purchaseCreationDTO, [FromHeader] string key) { try { //just autorized users can access if (!auth.AuthorizeUser(key)) { return(StatusCode(StatusCodes.Status401Unauthorized, "Authorization failed!")); } Purchase purchase = mapper.Map <Purchase>(purchaseCreationDTO); purchaseRepository.CreatePurchase(purchase); purchaseRepository.SaveChanges(); logger.Log(LogLevel.Information, contextAccessor.HttpContext.TraceIdentifier, "", "Create new purchase", null); string location = linkGenerator.GetPathByAction("GetPurchaseById", "Purchase", new { purchaseId = purchase.PurchaseId }); return(Created(location, purchase)); } catch (Exception ex) { logger.Log(LogLevel.Error, contextAccessor.HttpContext.TraceIdentifier, "", "Error while creating purchase", null); return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }
public async Task <ActionResult> Post([FromBody] PurchaseCreationDTO purchaseCreation) { var purchases = await context.Purchases.Where(x => x.UserId == purchaseCreation.UserId && x.Date.Month == DateTime.Today.Month && x.IsoCurrency == purchaseCreation.IsoCurrency.ToUpper()) .ToListAsync(); var selectedCurrency = currencys.SingleOrDefault(x => x.CurrencyIso == purchaseCreation.IsoCurrency.ToUpper()); var purchaseData = await selectedCurrency.GetPurchaseData(purchases, purchaseCreation.Amount); if (!purchaseData.EnabledPurchase) { logger.LogWarning($"purchase denaid, User ID {purchaseCreation.UserId}"); return(BadRequest()); } var purchase = mapper.Map <Purchase>(purchaseCreation); purchase.Date = DateTime.Now; purchase.AmountCurrencyPurchased = purchaseData.AmountCurrencyPurchased; purchase.ExchangeRate = purchaseData.ExchangeRate; purchase.SellRate = purchaseData.Sell; purchase.BuyRate = purchaseData.Buy; context.Purchases.Add(purchase); await context.SaveChangesAsync(); var purchaseDTO = mapper.Map <PurchaseDTO>(purchase); purchaseDTO.Date = purchase.Date; purchaseDTO.AmountCurrencyPurchased = purchase.AmountCurrencyPurchased; logger.LogInformation($"Purchase Succes, User ID {purchaseCreation.UserId}"); return(new CreatedAtRouteResult("GetPurchase", new { id = purchase.Id }, purchaseDTO)); }