Example #1
0
            /// <inheritdoc />
            public override async Task <Response> Handle(Command command, CancellationToken cancellationToken)
            {
                var budgetEntity = Mapper.Map <Domain.Entities.Budget>(command);

                budgetEntity.OwnedByUserId = AuthenticationProvider.User.UserId;
                var savedBudget = await BudgetRepository.AddAsync(budgetEntity);

                var addedRows = await BudgetRepository.SaveChangesAsync(cancellationToken);

                if (addedRows.IsNullOrDefault())
                {
                    throw new SaveFailureException(nameof(budgetEntity), budgetEntity);
                }

                var dto = Mapper.Map <BudgetDto>(savedBudget);

                _ = _mediator.Publish(new Notification()
                {
                    BudgetId = dto.BudgetId,
                }, cancellationToken);

                return(new Response()
                {
                    Data = dto
                });
            }