Ejemplo n.º 1
0
        private async Task <Guid> Create(SaveExpenseAggregateParameters parameters)
        {
            var aggregate = ExpensesAggregate.Create(parameters.UserId, parameters.Name, parameters.AddedDate, parameters.IsDraft);
            await _context.ExpensesAggregates.AddAsync(aggregate);

            await _context.SaveChangesAsync();

            return(aggregate.Id);
        }
Ejemplo n.º 2
0
 public static ExpenseAggregateModel ToModel(this ExpensesAggregate entity) =>
 new ExpenseAggregateModel
 {
     Id       = entity.Id,
     Name     = entity.Name,
     UserId   = entity.UserId,
     IsDraft  = entity.IsDraft,
     Expenses = entity.Expenses.Select(x => x.ToModel()),
     Bills    = entity.ExpenseBillFiles.Select(x => x.ToModel()),
 };
Ejemplo n.º 3
0
        public async Task <ResultOrError <ExpenseModel> > Handle(AddExpenseParameters input)
        {
            if (!await _context.DoesExist <User>(input.UserId))
            {
                return(CommonErrors.UserNotExist);
            }

            if (input.ExpenseTypeId.HasValue && !await _context.DoesExist <ExpenseType>(input.ExpenseTypeId.Value))
            {
                return(ExpenseTypeNotExist);
            }

            Expense newExpense;
            var     aggregateId = input.AggregateId;

            if (aggregateId.HasValue)
            {
                if (!await _context.ExpensesAggregates.AnyAsync(x => x.Id == input.AggregateId.Value))
                {
                    return(CommonErrors.ExpenseAggregateNotFound);
                }
            }
            else
            {
                var aggregate = ExpensesAggregate.Create(input.UserId, input.Name, input.AddedDate, isDraft: false);
                await _context.ExpensesAggregates.AddAsync(aggregate);

                aggregateId = aggregate.Id;
            }

            newExpense = Expense.Create(input.Name, input.Amount, aggregateId.Value, input.ExpenseTypeId);
            await _context.Expenses.AddAsync(newExpense);

            await _context.SaveChangesAsync();

            return(newExpense.ToModel());
        }