public int SetupGridParams(GridModel model) { if (string.IsNullOrWhiteSpace(model.SearchFor)) { model.SearchFor = "null"; } if (string.IsNullOrWhiteSpace(model.SortKey)) { model.SortKey = string.Empty; } if (string.IsNullOrWhiteSpace(model.SortOrder)) { model.SortOrder = "ASC"; } model.SortKey = model.SortKey.ToLower(); if (model.CurrentPage == null) { model.CurrentPage = 1; } if (model.RecordsPerPage == null) { model.RecordsPerPage = 100; } int begin = (model.CurrentPage.Value - 1) * model.RecordsPerPage.Value; return begin; }
public ActionResult<JobsGridModel> JobsGrid(GridModel model) { TestControllerBase testControllerBase = new TestControllerBase(); JobsGridModel jobsGridModel = new JobsGridModel(); int begin = testControllerBase.SetupGridParams(model); var filteredQuery = provider.PostJobs().Select(a => new JobsGridModel() { Client = jobsGridModel.Client, DueDate = jobsGridModel.DueDate, JobName = jobsGridModel.JobName, JobNumber = jobsGridModel.JobNumber, Status = jobsGridModel.Status }); if (model.SearchFor != "null") { filteredQuery = filteredQuery.Where( a => a.Client.Contains(model.SearchFor) || a.JobName.Contains(model.SearchFor)); } var totalNumberOfRecords = filteredQuery.Count(); if (String.IsNullOrWhiteSpace(model.SortKey)) { filteredQuery = filteredQuery.OrderBy(a => a.Client); } if (!string.IsNullOrWhiteSpace(model.SortKey)) { model.SortKey = model.SortKey.ToLower(); } switch (model.SortOrder) { case "ASC": switch (model.SortKey) { case "client": filteredQuery = filteredQuery.OrderBy(a => a.Client); break; case "duedate": filteredQuery = filteredQuery.OrderBy(a => a.DueDate); break; case "jobname": filteredQuery = filteredQuery.OrderBy(a => a.JobName); break; case "jobnumber": filteredQuery = filteredQuery.OrderBy(a => a.JobNumber); break; case "status": filteredQuery = filteredQuery.OrderBy(a => a.Status); break; } break; case "DESC": switch (model.SortKey) { case "client": filteredQuery = filteredQuery.OrderBy(a => a.Client); break; case "duedate": filteredQuery = filteredQuery.OrderBy(a => a.DueDate); break; case "jobname": filteredQuery = filteredQuery.OrderBy(a => a.JobName); break; case "jobnumber": filteredQuery = filteredQuery.OrderBy(a => a.JobNumber); break; case "status": filteredQuery = filteredQuery.OrderBy(a => a.Status); break; } break; } filteredQuery = filteredQuery.Skip(begin).Take(model.RecordsPerPage.Value); return new ActionResult<JobsGridModel>(filteredQuery.ToList(), totalNumberOfRecords); }