public PaginationQueryDto Query(PaginationQueryTaskHistoryInput input)
        {
            if (input == null)
            {
                throw new ArgumentNullException($"{nameof(input)} should not be null.");
            }
            var output = new PaginationQueryDto
            {
                Page = input.Page.Value,
                Size = input.Size.Value
            };

            var taskHistoryOutput = DbContext.TaskHistory.PageList <Core.Entities.TaskHistory, long, DateTime>(input, a => a.TaskId == input.TaskId, t => t.CreationTime);

            output.Total = taskHistoryOutput.Total;
            var taskHistories = (List <Core.Entities.TaskHistory>)taskHistoryOutput.Result;
            List <Core.Entities.TaskStatus> statuses;

            if (taskHistories.Count > 0)
            {
                var identities = taskHistories.Select(r => r.Identity);
                statuses = DbContext.TaskStatus.Where(a => identities.Contains(a.Identity)).ToList();
            }
            else
            {
                statuses = new List <Core.Entities.TaskStatus>(0);
            }

            var result        = new List <TaskHistoryOutput>(taskHistories.Count);
            var statusOutputs = Mapper.Map <List <TaskStatusDto> >(statuses);

            foreach (var item in taskHistories)
            {
                result.Add(new TaskHistoryOutput
                {
                    Identity     = item.Identity,
                    CreationTime = item.CreationTime.ToString("yyyy/MM/dd HH:mm:ss"),
                    Statuses     = statusOutputs.Where(a => a.Identity == item.Identity).ToList()
                });
            }
            output.Result = result;

            return(output);
        }
 public IActionResult Find(PaginationQueryTaskHistoryInput input)
 {
     return(Success(_taskHistoryAppService.Query(input)));
 }