/// <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); }
/// <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); }
/// <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; } }
/// <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; } }
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)); }
/// <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; }
/// <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)); } }
/// <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)); } }
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); }
/// <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); }
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(); }
//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);
public ReturnListWithSearchModel <int, BaseSearchCriteria> GetThreadIds(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns <int>(logType, search, x => x.ThreadId, "ThreadId")); }
public ReturnListWithSearchModel <int, BaseSearchCriteria> GetProcessIds(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.ProcessId, "ProcessId")); }
public ReturnListModel <string> PerfStatusNames(BaseSearchCriteria search) { return(new ReturnListModel <string>(new List <string>())); }
public SearchResult <Assessment> GetRejectedAssessments([FromUri] BaseSearchCriteria criteria) { AssessmentSearchCriteria assessmentCriteria = CreateRejectedCriteria(criteria); return(AssessmentService.Search(assessmentCriteria)); }
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)); } }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetSeverityNames(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.Severity, "Severity")); }
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); }
// Parameters public ReturnListWithSearchModel <string, BaseSearchCriteria> GetAppNames(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.App, "Application")); }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetSeverityNames(StoredLogType logType, BaseSearchCriteria search) { throw new Exception(); }
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)); } }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetFunctions(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.FunctionName, "FunctionName")); }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetUserNames(StoredLogType logType, BaseSearchCriteria search) { throw new NotImplementedException(); }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetFiles(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.CurrentSourceFilename, "CurrentSourceFilename")); }
public SearchResult <Assessment> GetAwaitingApprovalAssessments([FromUri] BaseSearchCriteria criteria) { AssessmentSearchCriteria assessmentCriteria = CreateAwaitingApprovalCriteria(criteria); return(AssessmentService.Search(assessmentCriteria)); }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetIps(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.RemoteAddress, "RemoteAddress")); }
public ReturnListWithSearchModel <string, BaseSearchCriteria> GetMachineNames(StoredLogType logType, BaseSearchCriteria search) { return(GetDistinctColumns(logType, search, x => x.MachineName, "Machine")); }
public ReturnListModel <string> Ips(BaseSearchCriteria search) { return(new ReturnListModel <string>(new List <string>())); }