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()); }
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(); }
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); }