Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
                }
            }
        }