コード例 #1
0
 public IHttpActionResult Get([FromUri] string type, [FromUri] PagedQueryDTO pagedQueryDto)
 {
     //Only admins can see logs of other users
     if (!pagedQueryDto.IsCurrentUser && !HasManageUserPrivilege())
     {
         return(new StatusCodeResult(HttpStatusCode.Forbidden, Request));
     }
     type = (type ?? string.Empty).Trim().ToLower();
     using (var uow = _uowFactory.Create())
     {
         if (type == "incidents")
         {
             var result = _report.GetIncidents(uow, pagedQueryDto);
             return(Ok(result));
         }
         else if (type == "facts")
         {
             var result = _report.GetFacts(uow, pagedQueryDto);
             return(Ok(result));
         }
         else
         {
             return(BadRequest("Specified report type is not supported"));
         }
     }
 }
コード例 #2
0
 public IHttpActionResult GetByQuery([FromUri] PagedQueryDTO pagedQuery)
 {
     using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
     {
         var results = _containerService.GetByQuery(_security.GetCurrentAccount(uow), pagedQuery);
         return(Ok(results));
     }
 }
コード例 #3
0
ファイル: Report.cs プロジェクト: patel-pragnesh/fr8core-dev
 private void ValidateInputQuery(ref PagedQueryDTO pagedQueryDto)
 {
     //lets make sure our inputs are correct
     pagedQueryDto             = pagedQueryDto ?? new PagedQueryDTO();
     pagedQueryDto.Page        = pagedQueryDto.Page ?? 1;
     pagedQueryDto.Page        = pagedQueryDto.Page < 1 ? 1 : pagedQueryDto.Page;
     pagedQueryDto.ItemPerPage = pagedQueryDto.ItemPerPage ?? DEFAULT_HISTORY_PAGE_SIZE;
     pagedQueryDto.ItemPerPage = pagedQueryDto.ItemPerPage < MIN_HISTORY_PAGE_SIZE ? MIN_HISTORY_PAGE_SIZE : pagedQueryDto.ItemPerPage;
 }
コード例 #4
0
 private PagedQueryDTO ValidateInputQuery(PagedQueryDTO pagedQueryDto)
 {
     //lets make sure our inputs are correct
     pagedQueryDto             = pagedQueryDto ?? new PagedQueryDTO();
     pagedQueryDto.Page        = pagedQueryDto.Page ?? 1;
     pagedQueryDto.Page        = pagedQueryDto.Page < 1 ? 1 : pagedQueryDto.Page;
     pagedQueryDto.ItemPerPage = pagedQueryDto.ItemPerPage ?? DefaultPageSize;
     pagedQueryDto.ItemPerPage = pagedQueryDto.ItemPerPage < MinPageSize ? MinPageSize : pagedQueryDto.ItemPerPage;
     return(pagedQueryDto);
 }
コード例 #5
0
ファイル: Report.cs プロジェクト: patel-pragnesh/fr8core-dev
        public PagedResultDTO <T> GetHistory <T, TS>(IUnitOfWork uow, PagedQueryDTO pagedQueryDto, IQueryable <TS> historyQuery) where T : HistoryItemDTO where TS : HistoryItemDO
        {
            ValidateInputQuery(ref pagedQueryDto);
            //get the current account
            var curAccount = _security.GetCurrentAccount(uow);

            var filteredResult = FilterHistoryItems(historyQuery, pagedQueryDto, curAccount);

            var totalItemCountForCurrentCriterias = filteredResult.Count();

            filteredResult = filteredResult.Page(pagedQueryDto.Page.Value, pagedQueryDto.ItemPerPage.Value);

            return(new PagedResultDTO <T>()
            {
                Items = filteredResult.ToList().Select(Mapper.Map <T>).ToList(),
                CurrentPage = pagedQueryDto.Page.Value,
                TotalItemCount = totalItemCountForCurrentCriterias
            });
        }
コード例 #6
0
 public PagedResultDTO <ContainerDTO> GetByQuery(Fr8AccountDO account, PagedQueryDTO query)
 {
     if (account.Id == null)
     {
         throw new ApplicationException("UserId must not be null");
     }
     query = ValidateInputQuery(query);
     using (var uow = _uowFactory.Create())
     {
         var result = uow.ContainerRepository.GetQuery().Where(x => x.Plan.Fr8AccountId == account.Id);
         result = ApplyFilter(result, query);
         var totalItemCount = result.Count();
         result = ApplySort(result, query);
         result = result.Page(query.Page.Value, query.ItemPerPage.Value);
         return(new PagedResultDTO <ContainerDTO>
         {
             CurrentPage = query.Page.Value,
             Items = result.AsEnumerable().Select(Mapper.Map <ContainerDTO>).ToList(),
             TotalItemCount = totalItemCount
         });
     }
 }
コード例 #7
0
ファイル: Report.cs プロジェクト: patel-pragnesh/fr8core-dev
        private IQueryable <T> FilterHistoryItems <T>(IQueryable <T> historyQuery, PagedQueryDTO pagedQueryDto, Fr8AccountDO curAccount) where T : HistoryItemDO
        {
            if (pagedQueryDto.IsCurrentUser)
            {
                historyQuery = historyQuery.Where(i => i.Fr8UserId == curAccount.Id);
            }

            if (!string.IsNullOrEmpty(pagedQueryDto.Filter))
            {
                historyQuery = historyQuery.Where(c => c.Data.Contains(pagedQueryDto.Filter) ||
                                                  c.ObjectId.Contains(pagedQueryDto.Filter) ||
                                                  c.Activity.Contains(pagedQueryDto.Filter) ||
                                                  c.Component.Contains(pagedQueryDto.Filter) ||
                                                  c.Fr8UserId.Contains(pagedQueryDto.Filter)
                                                  );
            }
            var isDescending = pagedQueryDto.OrderBy?.StartsWith("-") ?? false;

            historyQuery = isDescending
                ? historyQuery.OrderByDescending(p => p.CreateDate)
                : historyQuery.OrderBy(p => p.CreateDate);

            return(historyQuery);
        }
コード例 #8
0
ファイル: Report.cs プロジェクト: patel-pragnesh/fr8core-dev
 public PagedResultDTO <FactDTO> GetFacts(IUnitOfWork uow, PagedQueryDTO pagedQueryDto)
 {
     return(GetHistory <FactDTO, FactDO>(uow, pagedQueryDto, uow.FactRepository.GetQuery()));
 }
コード例 #9
0
ファイル: Report.cs プロジェクト: patel-pragnesh/fr8core-dev
 public PagedResultDTO <IncidentDTO> GetIncidents(IUnitOfWork uow, PagedQueryDTO pagedQueryDto)
 {
     return(GetHistory <IncidentDTO, IncidentDO>(uow, pagedQueryDto, uow.IncidentRepository.GetQuery()));
 }
コード例 #10
0
 private IQueryable <ContainerDO> ApplyFilter(IQueryable <ContainerDO> resultQuery, PagedQueryDTO queryParameters)
 {
     if (string.IsNullOrWhiteSpace(queryParameters.Filter))
     {
         return(resultQuery);
     }
     return(resultQuery.Where(x => x.Name.Contains(queryParameters.Filter) ||
                              x.Plan.Name.Contains(queryParameters.Filter) ||
                              x.ContainerStateTemplate.Name.Contains(queryParameters.Filter)));
 }
コード例 #11
0
        private IQueryable <ContainerDO> ApplySort(IQueryable <ContainerDO> resultQuery, PagedQueryDTO queryParameters)
        {
            if (string.IsNullOrWhiteSpace(queryParameters.OrderBy))
            {
                return(resultQuery);
            }
            var isDescending = queryParameters.OrderBy.StartsWith("-");

            if (queryParameters.OrderBy.StartsWith("-") || queryParameters.OrderBy.StartsWith("+"))
            {
                queryParameters.OrderBy = queryParameters.OrderBy.Remove(0, 1);
            }
            queryParameters.OrderBy = queryParameters.OrderBy.ToLower();
            switch (queryParameters.OrderBy)
            {
            case "createDate":
                return(isDescending ? resultQuery.OrderByDescending(x => x.CreateDate) : resultQuery.OrderBy(x => x.CreateDate));

            case "name":
                return(isDescending ? resultQuery.OrderByDescending(x => x.Name) : resultQuery.OrderBy(x => x.Name));

            case "state":
                return(isDescending ? resultQuery.OrderByDescending(x => x.ContainerStateTemplate.Name) : resultQuery.OrderBy(x => x.ContainerStateTemplate.Name));

            default:
                return(isDescending ? resultQuery.OrderByDescending(x => x.LastUpdated) : resultQuery.OrderBy(x => x.LastUpdated));
            }
        }