Ejemplo n.º 1
0
        public async Task <IPagedResults <IncidentTask> > GetIncidentTasksAsync(IncidentTaskSearchQueryParameters searchQuery)
        {
            var items = await IncidentTasks
                        .GroupJoin(db.EvacueeRegistrations.Select(e => new { e.IncidentTaskId, evacueeCount = e.Evacuees.Count() }),
                                   incident => incident.Id,
                                   summary => summary.IncidentTaskId,
                                   (incident, summary) => new
            {
                incident     = incident,
                evacueeCount = summary.Sum(s => s.evacueeCount),
            }
                                   )
                        .Where(t => !searchQuery.HasQuery() || t.incident.Community.Id == Guid.Parse(searchQuery.Query))
                        .Where(t => searchQuery.Active == t.incident.Active)
                        .Sort(searchQuery.SortBy ?? "incident.id")
                        .ToArrayAsync();

            var tasks = items
                        .Select(i => mapper.Map <IncidentTask>(i.incident, opts => opts.Items["EvacueeCount"] = i.evacueeCount))
                        .Where(t => !searchQuery.ActiveTasks.HasValue || t.TaskActive == searchQuery.ActiveTasks.Value);

            return(new PaginatedList <IncidentTask>(tasks, searchQuery.Offset, searchQuery.Limit));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Get([FromQuery] IncidentTaskSearchQueryParameters searchQuery)
        {
            var items = await dataInterface.GetIncidentTasksAsync(searchQuery);

            return(Json(items));
        }