public async Task <IHttpActionResult> CreateNewExpenseRecord(long userId, ExpenseForCreateDto expenseForCreateDto) { if (!IsUserAuthorized(userId)) { return(Unauthorized()); } var bankAccountId = expenseForCreateDto.BankAccountId; var userFromDb = await _unitOfWork.Users.GetUserData(userId); if (!userFromDb.BankAccounts.Any(b => b.Id == bankAccountId)) { return(BadRequest("Current User doesn't own this account!")); } var expenseForDb = _unitOfWork.Expenses.SubtractMoneyFromBankAccount(userId, userFromDb, expenseForCreateDto, _mapper); if (await _unitOfWork.Complete() > 0) { var expensesList = _mapper.Map <ExpensesForListDto>(expenseForDb); return(Created(new Uri(Request.RequestUri + "/" + expenseForDb.Id), expensesList)); } return(BadRequest("An error happened while creating new expense!")); }
public async Task <IActionResult> CreateExpense([FromBody] ExpenseForCreateDto expenseForCreateDto) { var userId = HttpContext.GetUserIdFromToken(); var expense = _mapper.Map <Expense>(expenseForCreateDto); expense.OwnerId = int.Parse(userId); await _repository.Add(expense); await _repository.SaveChangesAsync(); var expenseDto = _mapper.Map <ExpenseDto>(expense); return(CreatedAtAction(nameof(GetExpense), new { id = expenseDto.Id }, expenseDto)); }
public Expense SubtractMoneyFromBankAccount(long userId, User userFromDb, ExpenseForCreateDto expenseForCreateDto, IMapper mapper) { var bankAccountId = expenseForCreateDto.BankAccountId; var bankAccountToUpdate = userFromDb.BankAccounts.FirstOrDefault(b => b.Id == bankAccountId); bankAccountToUpdate.Ballance -= expenseForCreateDto.Ammount; expenseForCreateDto.UserId = userId; var expenseForDb = mapper.Map <Expense>(expenseForCreateDto); expenseForDb.NewBallance = bankAccountToUpdate.Ballance; Add(expenseForDb); return(expenseForDb); }