コード例 #1
0
            /// <inheritdoc />
            public override async Task <Response> Handle(Query request, CancellationToken cancellationToken)
            {
                if (!await BudgetRepository.IsAccessibleToUser(request.BudgetId))
                {
                    throw new NotFoundException("Budget was not found");
                }

                var budgetEntity = await BudgetRepository.GetByIdAsync(request.BudgetId);

                var categoryReports = budgetEntity.BudgetCategories
                                      .Select(x => new BudgetCategoryReport(x, request.DateStart, request.DateEnd))
                                      .ToList();
                var reportDto = new MonthlyBudgetReportDto();

                reportDto.BudgetCategoryReports = categoryReports.Select(x => new BudgetCategoryMonthlyReportDto()
                {
                    BudgetCategoryId   = x.Category.Id,
                    BudgetCategoryType = x.Category.Type,
                    MonthlyReports     = x.MonthByMonth
                                         .Data
                                         .Select(t => new MonthReportDto()
                    {
                        Month = new Month()
                        {
                            MonthNumber = t.Month,
                            Year        = t.Year
                        },
                        ReportData = new ReportDataDto()
                        {
                            AllocationsSum  = t.AllocationsSum,
                            AveragePerDay   = t.AveragePerDay,
                            TransactionsSum = t.TransactionsSum
                        }
                    })
                })
                                                  .ToList();

                reportDto.TotalMonthlyReports = reportDto.BudgetCategoryReports
                                                .SelectMany(x => x.MonthlyReports)
                                                .GroupBy(x => x.Month)
                                                .Select(t => new MonthReportDto()
                {
                    Month      = t.Key,
                    ReportData = new ReportDataDto()
                    {
                        AllocationsSum  = t.Sum(g => g.ReportData.AllocationsSum),
                        TransactionsSum = t.Sum(g => g.ReportData.TransactionsSum),
                        AveragePerDay   = t.Sum(g => g.ReportData.AveragePerDay)
                    }
                });
                return(new Response()
                {
                    Data = reportDto
                });
            }
コード例 #2
0
            /// <inheritdoc />
            public override async Task <Response> Handle(Query request, CancellationToken cancellationToken)
            {
                if (!await BudgetRepository.IsAccessibleToUser(request.BudgetId))
                {
                    throw new NotFoundException("Budget was not found");
                }

                var repositoryResult = await BudgetRepository.GetByIdAsync(request.BudgetId);

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

                return(new Response()
                {
                    Data = dto
                });
            }
コード例 #3
0
            /// <inheritdoc />
            public override async Task <Response> Handle(Query request, CancellationToken cancellationToken)
            {
                if (!await BudgetRepository.IsAccessibleToUser(request.BudgetId))
                {
                    throw new NotFoundException("Budget was not found");
                }

                var budgetEntity = await BudgetRepository.GetByIdAsync(request.BudgetId);

                var categoryReports = budgetEntity.BudgetCategories
                                      .Select(x => new BudgetCategoryReport(x, request.DateStart, request.DateEnd))
                                      .ToList();
                var reportDto = new PeriodBudgetReportDto();

                reportDto.BudgetCategoryReports = categoryReports.Select(x => new BudgetCategoryPeriodReportDto()
                {
                    BudgetCategoryId   = x.Category.Id,
                    BudgetCategoryType = x.Category.Type,
                    ReportData         = new ReportDataDto()
                    {
                        BudgetedSum     = x.PeriodReport.BudgetAmount,
                        AllocationsSum  = x.PeriodReport.AllocationsSum,
                        AveragePerDay   = x.PeriodReport.AveragePerDay,
                        TransactionsSum = x.PeriodReport.TransactionsSum
                    }
                })
                                                  .ToList();

                reportDto.TotalPeriodReport = new ReportDataDto()
                {
                    BudgetedSum     = reportDto.BudgetCategoryReports.Sum(g => g.ReportData.BudgetedSum),
                    AllocationsSum  = reportDto.BudgetCategoryReports.Sum(g => g.ReportData.AllocationsSum),
                    TransactionsSum = reportDto.BudgetCategoryReports.Sum(g => g.ReportData.TransactionsSum),
                    AveragePerDay   = reportDto.BudgetCategoryReports.Sum(g => g.ReportData.AveragePerDay)
                };
                return(new Response()
                {
                    Data = reportDto
                });
            }
コード例 #4
0
            /// <inheritdoc />
            public override async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var findShareTask = _budgetShareRepository.ListWithFilter(new Domain.Entities.Budget(request.BudgetId),
                                                                          new BudgetShareFilterModel()
                {
                    UserIdFilter = request.UserId
                });

                if (!await BudgetRepository.IsAccessibleToUser(request.BudgetId))
                {
                    throw new NotFoundException("Budget was not found");
                }

                var budgetShares = await findShareTask;

                if (!budgetShares.Any())
                {
                    throw new NotFoundException("Budget share was not found");
                }

                await Task.WhenAll(budgetShares.Select(i => _budgetShareRepository.DeleteAsync(i)));

                try
                {
                    await _budgetShareRepository.SaveChangesAsync(cancellationToken);
                }
                catch (Exception)
                {
                    throw new SaveFailureException("budget share", budgetShares);
                }

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