public HttpResponseMessage PutWithdraw(TransactionModel transactionModel, [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var context = new BankContext(); using (context) { var user = context.Users.FirstOrDefault(u => u.SessionKey == sessionKey); var entityAccount = context.Accounts.FirstOrDefault(a => a.User.Id == user.Id); if (entityAccount.Balance > transactionModel.Sum) { entityAccount.Balance = entityAccount.Balance - transactionModel.Sum; } else { throw new InvalidOperationException("There isn`t enough money!"); } var newTransaction = new Transaction() { Date = DateTime.Now, Sum = transactionModel.Sum, User = entityAccount.User, Account = entityAccount, Id = entityAccount.Id, TransactionType = transactionModel.TransactionType }; context.Transactions.Add(newTransaction); context.SaveChanges(); return this.Request.CreateResponse(HttpStatusCode.OK); } }
public HttpResponseMessage PutDeposit(TransactionModel transactionModel, [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var context = new BankContext(); using (context) { var user = context.Users.FirstOrDefault(u => u.SessionKey == sessionKey); var entityAccount = context.Accounts.FirstOrDefault(a => a.User.Id == user.Id); entityAccount.Balance = entityAccount.Balance + transactionModel.Sum; var newTransaction = new Transaction() { Date = DateTime.Now, Sum = transactionModel.Sum, User = entityAccount.User, Account = entityAccount, Id = entityAccount.Id, TransactionType = transactionModel.TransactionType }; context.Transactions.Add(newTransaction); context.SaveChanges(); return this.Request.CreateResponse(HttpStatusCode.OK); } }