Beispiel #1
0
        /// <summary>
        ///     Returns a <see cref="PageViewModel{T}" /> containing a page of the data given according to the search
        ///     criteria.
        ///
        ///     Performs Ordering & Paging if applicable. When there is no order parameter, it sorts by the Id.
        /// </summary>
        /// <param name="data"></param>
        /// <param name="criteria"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static PageViewModel <T> GetPage <T>(this IQueryable <T> data, BaseSearchCriteria criteria) where T : class
        {
            if (criteria == null)
            {
                return(new PageViewModel <T>
                {
                    Data = data?.ToList()
                });
            }

            criteria.PageSize = criteria.PageSize != 0 ? criteria.PageSize : int.MaxValue;
            criteria.PageSize = criteria.PageSize > 10 ? criteria.PageSize : 10;
            criteria.Page     = criteria.Page > 1 ? criteria.Page : 1;

            // if the model is of type base model, default OrderBy is Last Update Date. If not, default is the I
            criteria.OrderBy = !string.IsNullOrWhiteSpace(criteria.OrderBy)
    ? criteria.OrderBy : "Id";
            var page = new PageViewModel <T>
            {
                PageSize     = criteria.PageSize,
                Page         = criteria.Page,
                TotalRecords = data?.Count() ?? 0
            };
            string orderProperty = criteria.OrderBy.Split(' ')[0] ?? string.Empty;
            bool   descending    = (!string.IsNullOrWhiteSpace(criteria?.OrderBy) && criteria.OrderBy.EndsWith(" desc", System.StringComparison.InvariantCultureIgnoreCase))? true:false;

            page.Data = data?.OrderBy(criteria.OrderBy)
                        .Skip(criteria.PageSize * (criteria.Page - 1))
                        .Take(criteria.PageSize)
                        .ToList();
            return(page);
        }
Beispiel #2
0
        /// <summary>
        /// Creates the search criteria for rejected assessments, optionally applying pagination.
        /// </summary>
        /// <param name="baseCriteria">The pagination options.</param>
        /// <returns>The search criteria for rejected assessments.</returns>
        private AssessmentSearchCriteria CreateRejectedCriteria(BaseSearchCriteria baseCriteria = null)
        {
            var criteria = new AssessmentSearchCriteria();

            CopyCriteria(baseCriteria, criteria);
            if (CurrentUser.Role == Role.Owner)
            {
                criteria.ApprovalStatuses = new List <ApprovalStatus> {
                    ApprovalStatus.Rejected
                };
                criteria.SubmitterUsernames = new List <string> {
                    CurrentUser.Username
                };
            }
            else if (CurrentUser.Role == Role.BUFunctionalApprover ||
                     CurrentUser.Role == Role.BURiskManagementApprover ||
                     CurrentUser.Role == Role.DivisionalRiskManagementApprover)
            {
                criteria.RejecterUsername = CurrentUser.Username;
            }
            else if (CurrentUser.Role == Role.Admin)
            {
                criteria.ApprovalStatuses = new List <ApprovalStatus> {
                    ApprovalStatus.Rejected
                };
            }

            return(criteria);
        }
Beispiel #3
0
 /// <summary>
 /// Sets the page number and total pages for the given search result.
 /// </summary>
 /// <typeparam name="T">The type of the searched entities.</typeparam>
 /// <param name="result">The search result.</param>
 /// <param name="criteria">The search criteria.</param>
 protected static void SetSearchResultPageInfo <T>(SearchResult <T> result, BaseSearchCriteria criteria)
 {
     if (result.TotalRecords > 0)
     {
         result.TotalPages = criteria.PageNumber > 0 && criteria.PageSize > 0
             ? (result.TotalRecords - 1) / criteria.PageSize + 1
             : 1;
     }
 }
Beispiel #4
0
 /// <summary>
 /// Copies the pagination options from <paramref name="baseCriteria"/> to <paramref name="criteria"/>.
 /// </summary>
 /// <param name="baseCriteria">The pagination options.</param>
 /// <param name="criteria">The assessment search criteria.</param>
 private static void CopyCriteria(BaseSearchCriteria baseCriteria, AssessmentSearchCriteria criteria)
 {
     if (baseCriteria != null)
     {
         criteria.PageNumber = baseCriteria.PageNumber;
         criteria.PageSize   = baseCriteria.PageSize;
         criteria.SortBy     = baseCriteria.SortBy;
         criteria.SortType   = baseCriteria.SortType;
     }
 }
Beispiel #5
0
        public ReturnListModel <string> Searches(BaseSearchCriteria search)
        {
            var lst = new List <string>();

            lst.Add("Search Item 1");
            lst.Add("Search Item 2");
            lst.Add("Search Item 3");
            lst.Add("Search Item 4");
            lst.Add("Search Item 5");
            return(new ReturnListModel <string>(lst));
        }
Beispiel #6
0
        /// <summary>
        /// Creates the search criteria for awaiting approval assessments, optionally applying pagination.
        /// </summary>
        /// <param name="baseCriteria">The pagination options.</param>
        /// <returns>The search criteria for awaiting approval assessments.</returns>
        private AssessmentSearchCriteria CreateAwaitingApprovalCriteria(BaseSearchCriteria baseCriteria = null)
        {
            var criteria = new AssessmentSearchCriteria();

            CopyCriteria(baseCriteria, criteria);

            if (CurrentUser.Role == Role.Owner)
            {
                criteria.SubmitterUsernames = new List <string> {
                    CurrentUser.Username
                };
                criteria.ApprovalStatuses = new List <ApprovalStatus>
                {
                    ApprovalStatus.AwaitingBUFunctionalApproval,
                    ApprovalStatus.AwaitingBURiskManagementApproval,
                    ApprovalStatus.AwaitingDivisionalRiskManagementApproval
                };
            }
            else if (CurrentUser.Role == Role.BUFunctionalApprover)
            {
                criteria.DepartmentHeaderOrFunctionalAreaOwner = CurrentUser.Username;
                criteria.ApprovalStatuses = new List <ApprovalStatus>
                {
                    ApprovalStatus.AwaitingBUFunctionalApproval
                };
            }
            else if (CurrentUser.Role == Role.BURiskManagementApprover)
            {
                criteria.BusinessUnitIds  = GetBusinessUnitIds().ToList();
                criteria.ApprovalStatuses = new List <ApprovalStatus>
                {
                    ApprovalStatus.AwaitingBURiskManagementApproval
                };
            }
            else if (CurrentUser.Role == Role.DivisionalRiskManagementApprover)
            {
                criteria.ApprovalStatuses = new List <ApprovalStatus>
                {
                    ApprovalStatus.AwaitingDivisionalRiskManagementApproval
                };
            }
            else if (CurrentUser.Role == Role.Admin)
            {
                criteria.ApprovalStatuses = new List <ApprovalStatus>
                {
                    ApprovalStatus.AwaitingBUFunctionalApproval,
                    ApprovalStatus.AwaitingBURiskManagementApproval,
                    ApprovalStatus.AwaitingDivisionalRiskManagementApproval
                };
            }

            return(criteria);
        }
 protected virtual string GetQueryString(BaseSearchCriteria searchCriteria)
 {
     var queryString = QueryStringBuilder.ToQueryString(searchCriteria);
     if (!string.IsNullOrWhiteSpace(queryString))
     {
         queryString = string.Format("{0}&{1}", queryString, GetPagingQueryString(searchCriteria));
     }
     else
     {
         queryString = GetPagingQueryString(searchCriteria);
     }
     return queryString;
 }
Beispiel #8
0
        /// <summary>
        /// Checks whether the given search criteria is <c>null</c> or incorrect.
        /// </summary>
        ///
        /// <param name="criteria">The search criteria to check.</param>
        ///
        /// <exception cref="ArgumentNullException">
        /// If the <paramref name="criteria"/> is <c>null</c>.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// If criteria.PageNumber or criteria.PageSize is negative.
        /// </exception>
        internal static void CheckSearchCriteria(BaseSearchCriteria criteria)
        {
            CommonHelper.ValidateArgumentNotNull(criteria, nameof(criteria));

            if (criteria.PageNumber < 0)
            {
                throw new ArgumentException("Page number can't be negative.", nameof(criteria));
            }

            if (criteria.PageSize < 0)
            {
                throw new ArgumentException("Page size can't be negative.", nameof(criteria));
            }
        }
Beispiel #9
0
        /// <summary>
        /// Checks whether the given search criteria is <c>null</c> or incorrect.
        /// </summary>
        ///
        /// <param name="criteria">The search criteria to check.</param>
        ///
        /// <exception cref="ArgumentNullException">If the <paramref name="criteria"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentException">If the <paramref name="criteria"/> is incorrect,
        /// e.g. PageNumber is negative, or PageNumber is positive and PageSize is not positive.</exception>
        internal static void CheckSearchCriteria(BaseSearchCriteria criteria)
        {
            ValidateArgumentNotNull(criteria, nameof(criteria));

            if (criteria.PageNumber < 0)
            {
                throw new ArgumentException("Page number can't be negative.", nameof(criteria));
            }

            if (criteria.PageNumber > 0 && criteria.PageSize < 1)
            {
                throw new ArgumentException("Page size should be positive, if page number is positive.",
                                            nameof(criteria));
            }
        }
Beispiel #10
0
        public override BaseEntity Search(BaseSearchCriteria searchCriteria)
        {
            var        EmpCriteria = (EmployeeSearchCriteria)searchCriteria;
            BaseEntity result;

            if (string.IsNullOrEmpty(EmpCriteria.password))
            {
                result = EmployeeTranslator.TranslateFromDB(db.Employees.FirstOrDefault(e => e.Name == EmpCriteria.userName)) ?? null;
            }
            else
            {
                result = EmployeeTranslator.TranslateFromDB(db.Employees.FirstOrDefault(e => e.Name == EmpCriteria.userName && e.password == EmpCriteria.password)) ?? null;
            }
            return(result);
        }
Beispiel #11
0
        /// <summary>
        /// Creates the search criteria for draft assessments, optionally applying pagination.
        /// </summary>
        /// <param name="baseCriteria">The pagination options.</param>
        /// <returns>The search criteria for draft assessments.</returns>
        private AssessmentSearchCriteria CreateDraftCriteria(BaseSearchCriteria baseCriteria = null)
        {
            var criteria = new AssessmentSearchCriteria();

            CopyCriteria(baseCriteria, criteria);

            criteria.ApprovalStatuses = new List <ApprovalStatus> {
                ApprovalStatus.Draft
            };
            if (CurrentUser.Role == Role.Owner)
            {
                // approvers cannot access this method
                criteria.SubmitterUsernames = new List <string> {
                    CurrentUser.Username
                };
            }

            return(criteria);
        }
Beispiel #12
0
        public ReturnListWithSearchModel <string, BaseSearchCriteria> GetUserNames(BaseSearchCriteria search)
        {
            throw new NotImplementedException();

            /*
             * try
             * {
             *  using (var reader = GetNewAppReader())
             *  {
             *      var searcher = new IndexSearcher(reader);
             *      var lst = searcher.AsQueryable<AppLog>().Select(x => x.UserIdentity).ToList();
             *      return new ReturnListModel<string, BaseSearchCriteria>(search, lst);
             *  }
             * }
             * catch (Exception ex)
             * {
             *  log.Error(ex, "Error when getting User name List ");
             *  search.TotalRowCount = 0;
             *  search.CurrentRows = 0;
             *  return new ReturnListModel<string, BaseSearchCriteria>(search, ex);
             * }
             */
        }
 public virtual BaseEntity Search(BaseSearchCriteria searchCriteria)
 {
     throw new NotImplementedException();
 }
Beispiel #14
0
 //protected abstract ReturnListWithSearchModel<string, BaseSearchCriteria> GetDistinctColumns(StoredLogType logType, BaseSearchCriteria search, Expression<Func<AppLog, string>> selector, string columnType);
 protected abstract ReturnListWithSearchModel <T, BaseSearchCriteria> GetDistinctColumns <T>(StoredLogType logType, BaseSearchCriteria search, Expression <Func <AppLog, T> > selector, string columnType);
Beispiel #15
0
 public ReturnListWithSearchModel <int, BaseSearchCriteria> GetThreadIds(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns <int>(logType, search, x => x.ThreadId, "ThreadId"));
 }
Beispiel #16
0
 public ReturnListWithSearchModel <int, BaseSearchCriteria> GetProcessIds(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.ProcessId, "ProcessId"));
 }
Beispiel #17
0
 public ReturnListModel <string> PerfStatusNames(BaseSearchCriteria search)
 {
     return(new ReturnListModel <string>(new List <string>()));
 }
Beispiel #18
0
        public SearchResult <Assessment> GetRejectedAssessments([FromUri] BaseSearchCriteria criteria)
        {
            AssessmentSearchCriteria assessmentCriteria = CreateRejectedCriteria(criteria);

            return(AssessmentService.Search(assessmentCriteria));
        }
Beispiel #19
0
 protected override ReturnListWithSearchModel <T, BaseSearchCriteria> GetDistinctColumns <T>(StoredLogType logType, BaseSearchCriteria search, Expression <Func <AppLog, T> > selector, string columnType)
 {
     try
     {
         {
             var lst       = dbManager.Connection.GetTable <AppLog>().Where(x => x.LogType == (int)logType).AsQueryable().Select(selector);
             var totalRows = lst.AsQueryable().Count();
             search.TotalRowCount = totalRows;
             var resultList = lst.ApplyPaging(search.Page, search.PageSize).Distinct().ToList();
             search.CurrentRows = resultList.Count;
             return(new ReturnListWithSearchModel <T, BaseSearchCriteria>(search, resultList, totalRows));
         }
     }
     catch (Exception ex)
     {
         log.Error(ex, $"Error when getting {columnType} list ");
         search.TotalRowCount = 0;
         search.CurrentRows   = 0;
         return(new ReturnListWithSearchModel <T, BaseSearchCriteria>(search, $"Error when getting {columnType} list ", ex));
     }
 }
Beispiel #20
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetSeverityNames(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.Severity, "Severity"));
 }
Beispiel #21
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetUserNames(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.UserIdentity, "User"));
 }
 protected virtual string GetPagingQueryString(BaseSearchCriteria searchCriteria)
 {
     return string.Format("$page={0}&$pageSize={1}", searchCriteria.PageNumber, searchCriteria.PageSize);
 }
Beispiel #23
0
 // Parameters
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetAppNames(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.App, "Application"));
 }
Beispiel #24
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetSeverityNames(StoredLogType logType, BaseSearchCriteria search)
 {
     throw new Exception();
 }
Beispiel #25
0
 protected override ReturnListWithSearchModel <T, BaseSearchCriteria> GetDistinctColumns <T>(StoredLogType logType, BaseSearchCriteria search, Expression <Func <AppLog, T> > selector, string columnType)
 {
     try
     {
         using (var reader = GetNewAppReader().OpenSession <AppLog>())
         {
             LuceneQueryStatistics stats = null;
             var lst       = reader.Query().Where(x => x.LogType == (int)logType).Select(selector).Distinct().CaptureStatistics(x => stats = x);
             var totalRows = lst.AsQueryable().Count();
             search.TotalRowCount = totalRows;
             var resultList = lst.ApplyPaging(search.Page, search.PageSize).Distinct().ToList();
             search.CurrentRows = resultList.Count;
             return(new ReturnListWithSearchModel <T, BaseSearchCriteria>(search, resultList, totalRows));
         }
     }
     catch (Exception ex)
     {
         log.Error(ex, $"Error when getting {columnType} list ");
         search.TotalRowCount = 0;
         search.CurrentRows   = 0;
         return(new ReturnListWithSearchModel <T, BaseSearchCriteria>(search, $"Error when getting {columnType} list ", ex));
     }
 }
Beispiel #26
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetFunctions(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.FunctionName, "FunctionName"));
 }
Beispiel #27
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetUserNames(StoredLogType logType, BaseSearchCriteria search)
 {
     throw new NotImplementedException();
 }
Beispiel #28
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetFiles(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.CurrentSourceFilename, "CurrentSourceFilename"));
 }
Beispiel #29
0
        public SearchResult <Assessment> GetAwaitingApprovalAssessments([FromUri] BaseSearchCriteria criteria)
        {
            AssessmentSearchCriteria assessmentCriteria = CreateAwaitingApprovalCriteria(criteria);

            return(AssessmentService.Search(assessmentCriteria));
        }
Beispiel #30
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetIps(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.RemoteAddress, "RemoteAddress"));
 }
Beispiel #31
0
 public ReturnListWithSearchModel <string, BaseSearchCriteria> GetMachineNames(StoredLogType logType, BaseSearchCriteria search)
 {
     return(GetDistinctColumns(logType, search, x => x.MachineName, "Machine"));
 }
Beispiel #32
0
 public ReturnListModel <string> Ips(BaseSearchCriteria search)
 {
     return(new ReturnListModel <string>(new List <string>()));
 }