public async Task <ResultType> AddTransaction(AddTransactionRequestModel model) { var user = await _db.Users.Include(x => x.Transactions).Include(c => c.Account).FirstOrDefaultAsync(u => u.Id == model.UserID); if (user == null) { return(ResultType.Fail); } if (model.Amount < 0 && user.Account.Balance + model.Amount < 0) { return(ResultType.Fail); } TransactionType tt = model.Amount < 0 ? tt = TransactionType.Debt : TransactionType.Income; TransactionModel transaction = new TransactionModel() { UserID = model.UserID, Time = model.Time, Amount = model.Amount, Notes = model.Notes, Type = tt }; user.Transactions.Add(transaction); if (tt == TransactionType.Debt) { user.Account.Credit += (model.Amount * -1); } else { user.Account.Debet += model.Amount; } user.Account.Balance += model.Amount; await _db.SaveChangesAsync(); return(ResultType.Success); }
public void IsAddTr() { var opt = new DbContextOptionsBuilder <DatabaseContext>().UseInMemoryDatabase(databaseName: "AddTr").Options; var context = new DatabaseContext(opt); var serivce = new AccountService(context); AddTransactionRequestModel model = new AddTransactionRequestModel { UserID = 1, Time = DateTime.Parse("20.02.2020"), Amount = 2000, Notes = "String" }; var res = serivce.AddTransaction(model); Assert.Equal(ResultType.Success, res.Result); }
public async Task <ResultType> Put([FromBody] AddTransactionRequestModel model) { return(await _accountService.AddTransaction(model)); }