public IHttpActionResult Post(HoldingTransactionCreate model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userId = Guid.Parse(User.Identity.GetUserId()); var holdingservice = new HoldingService(userId); var walletService = new WalletService(userId); var service = CreateHoldingTransactionService(); var usdValue = model.CryptoTransactionAmount * model.MarketValue; if (walletService.GetWallet().WalletBalance - usdValue < 0) { return(BadRequest()); } if (!service.CreateHoldingTransaction(model)) { return(InternalServerError()); } walletService.UpdateWalletBalance(-usdValue); holdingservice.UpdateHoldingBalance(model.HoldingId, model.CryptoTransactionAmount); return(Ok()); }
public bool CreateHoldingTransaction(HoldingTransactionCreate model) { var entity = new HoldingTransaction() { HoldingId = model.HoldingId, CryptoTransactionAmount = model.CryptoTransactionAmount, MarketValue = model.MarketValue, TransactionDate = DateTimeOffset.UtcNow }; using (var ctx = new ApplicationDbContext()) { ctx.HoldingTransactions.Add(entity); return(ctx.SaveChanges() == 1); } }