Пример #1
0
        public async Task <List <GetReportDto> > Handle(GetReportQuery request, CancellationToken cancellationToken)
        {
            var data = await _context.Person.Include(x => x.DirectRelatedPersons)
                       .ThenInclude(x => x.RelationType)
                       .Select(x => new
            {
                x.Id,
                x.Name.FirstName,
                x.Name.LastName,
                x.PersonalNumber,
                RelationInfo = x.DirectRelatedPersons.Select(a => new
                {
                    a.RelationTypeId,
                    RelationTypeName = a.RelationType.Name
                })
            }).OrderBy(x => x.Id).AsNoTracking().ToListAsync(cancellationToken);

            return(data.Select(x => new GetReportDto
            {
                Id = x.Id,
                FirstName = x.FirstName,
                LastName = x.LastName,
                PersonalNumber = x.PersonalNumber,
                RelationInfos = x.RelationInfo.GroupBy(a => new { a.RelationTypeId, a.RelationTypeName }).Select(a =>
                                                                                                                 new GetReportRelationInfoDto
                {
                    RelationTypeId = a.Key.RelationTypeId,
                    RelationTypeName = a.Key.RelationTypeName,
                    TotalCount = a.Count()
                })
            }).ToList());
        }
Пример #2
0
 public async Task <IList <ColorDecorator> > Handle(GetReportQuery request)
 {
     return(await new ReportLogic(request.Factory, _context).GetReport(request.UserId));
     //return colorDecorators.Select(c => new ReportDto
     //{
     //    Grocery = c.Grocery,
     //    Color = c.Color
     //}).ToList();
 }
Пример #3
0
 public async Task <List <GetReportDto> > Get([FromQuery] GetReportQuery command)
 {
     return(await Mediator.Send(command));
 }
        public ReportDto Get(long reportId)
        {
            var query = new GetReportQuery(reportId);

            return(_dataQueryDispatcher.Process <GetReportQuery, ReportDto>(query));
        }
        public async Task <ActionResult> GetReport(GetReportQuery request)
        {
            var report = await _mediator.Send(request);

            return(Ok(report));
        }
        public async Task <IEnumerable <ReportDayDto> > Handle(GetReportQuery request, CancellationToken cancellationToken)
        {
            // var accountsList = string.Join(",", request.SelectedAccounts);
            // var categoryList = string.Join(",", request.SelectedCategories);

            //needs to return an ordered list per day
            var expensesList = _dbContext.Expenses
                               .FromSqlRaw("SELECT * " +
                                           "FROM dbo.expense E where " +
                                           "E.date BETWEEN  {0} AND {1} " +
                                           "AND E.user_id = {2} ",
                                           request.StartDate.Date, request.EndDate.Date, request.UserId);

            var incomesList = _dbContext.Incomes
                              .FromSqlRaw("SELECT * " +
                                          "FROM dbo.income I where " +
                                          "I.date BETWEEN  {0} AND {1} " +
                                          "AND I.user_id = {2} ",
                                          request.StartDate.Date, request.EndDate.Date, request.UserId);

            var filteredIncomesList = incomesList
                                      .Where(income => (income.AccountId != null && request.SelectedAccounts.Contains(income.AccountId.Value)))
                                      .ToList();
            var filteredExpensesList = expensesList
                                       .Where(expense => (expense.AccountId != null && (request.SelectedAccounts.Contains(expense.AccountId.Value))) &&
                                              (expense.CategoryId != null && request.SelectedCategories.Contains(expense.CategoryId.Value)))
                                       .ToList();

            var orderedReport = new List <ReportDayDto>();

            for (var i = request.StartDate; i < request.EndDate; i = i.AddDays(1))
            {
                var currentDate = i.Date;

                var incomesForThatDay  = filteredIncomesList.Where(income => income.Date.Date == currentDate);
                var expensesForThatDay = filteredExpensesList.Where(exp => exp.Date.Date == currentDate);

                foreach (var income in incomesForThatDay)
                {
                    orderedReport.Add(new ReportDayDto()
                    {
                        Date             = income.Date,
                        AccountId        = income.AccountId,
                        Amount           = income.Amount,
                        Description      = income.Title,
                        BudgetRecordType = BudgetRecordType.Income
                    });
                }

                foreach (var expense in expensesForThatDay)
                {
                    orderedReport.Add(new ReportDayDto()
                    {
                        Date             = expense.Date,
                        AccountId        = expense.AccountId,
                        Amount           = expense.Amount,
                        CategoryId       = expense.CategoryId,
                        Description      = expense.Title,
                        BudgetRecordType = BudgetRecordType.Expense
                    });
                }
            }

            return(orderedReport);
        }