public async Task <IActionResult> CreateExpenseAsync([FromRoute] int groupId, [FromBody] CreateExpenseAC expense) { string currentUserId = _userManager.FindByNameAsync(User.Identity.Name).Result.Id; await unitOfWork.Expense.CreateExpenseAsync(groupId, currentUserId, expense); await unitOfWork.SaveAsync(); return(Ok(expense)); }
public async Task CreateExpenseAsync(int groupId, string currentUserId, CreateExpenseAC expense) { Activity activity = new Activity(); var currentGroupName = await _context.Groups.Where(g => g.ID == groupId).Select(g => g.Name).FirstOrDefaultAsync(); GroupExpenseMapper groupExpenseMapper = new GroupExpenseMapper(); groupExpenseMapper.Name = expense.Name; groupExpenseMapper.SplitType = expense.SplitType; if (groupId == 0) { groupExpenseMapper.Payee = _userManager.FindByIdAsync(expense.Payee).Result.Id; } else { groupExpenseMapper.GroupID = groupId; groupExpenseMapper.Payee = expense.Payee; } groupExpenseMapper.TotalAmount = expense.Amount; groupExpenseMapper.Date = expense.Date; groupExpenseMapper.Description = expense.Note; groupExpenseMapper.IsDeleted = false; groupExpenseMapper.IsSettled = false; activity.UserID = currentUserId; activity.Date = DateTime.Now; activity.Description = $"You created the expense {groupExpenseMapper.Name} in {currentGroupName}"; await _context.Activities.AddAsync(activity); await _context.GroupExpenseMappers.AddAsync(groupExpenseMapper); foreach (var expenses in expense.IncludedUsers) { if (expenses.Percentage == null) { UserExpenseMapper userExpenseMapper = new UserExpenseMapper(); userExpenseMapper.ExpenseID = groupExpenseMapper.ID; if (expenses.UserID == null) { userExpenseMapper.FromUser = _userManager.FindByNameAsync(expenses.UserName).Result.Id; } else { userExpenseMapper.FromUser = expenses.UserID; } if (expense.SplitType.Equals("Equal")) { userExpenseMapper.Amount = (expense.Amount / expense.IncludedUsers.Count()); } else { userExpenseMapper.Amount = expenses.UserAmount; } await _context.UserExpenseMappers.AddAsync(userExpenseMapper); } else { UserExpenseMapper userExpenseMapper = new UserExpenseMapper(); userExpenseMapper.ExpenseID = groupExpenseMapper.ID; if (expenses.UserID == null) { userExpenseMapper.FromUser = _userManager.FindByNameAsync(expenses.UserName).Result.Id; } else { userExpenseMapper.FromUser = expenses.UserID; } userExpenseMapper.Amount = ((expense.Amount * expenses.Percentage) / 100); await _context.UserExpenseMappers.AddAsync(userExpenseMapper); } } }