public PagedCollectionResponse <Patient> Get([FromQuery] PatientFilterModel filter) { // Filtering logic Func <PatientFilterModel, IEnumerable <Patient> > filterData = (filterModel) => { return(_patients.Skip((filterModel.Page - 1) * filter.Limit) .Take(filterModel.Limit)); }; // Get the data for the current page var response = new PagedCollectionResponse <Patient> { Items = filterData(filter) }; //Get next page URL string PatientFilterModel nextFilter = filter.Clone() as PatientFilterModel; nextFilter.Page += 1; var nextUrl = filterData(nextFilter).Count() <= 0 ? null : Url.Action("Get", null, nextFilter, Request.Scheme); //Get previous page URL string PatientFilterModel previousFilter = filter.Clone() as PatientFilterModel; previousFilter.Page -= 1; var previousUrl = previousFilter.Page <= 0 ? null : this.Url.Action("Get", null, previousFilter, Request.Scheme); response.NextPage = !string.IsNullOrWhiteSpace(nextUrl) ? new Uri(nextUrl) : null; response.PreviousPage = !string.IsNullOrWhiteSpace(previousUrl) ? new Uri(previousUrl) : null; return(response); }
public IQueryable <T> GetVitals <T>(PatientFilterModel patientFilterModel, TokenModel tokenModel) where T : class, new() { SqlParameter[] parameters = { new SqlParameter("@PatientId", patientFilterModel.PatientId), new SqlParameter("@PageNumber", patientFilterModel.pageNumber), new SqlParameter("@PageSize", patientFilterModel.pageSize), new SqlParameter("@SortColumn", patientFilterModel.sortColumn), new SqlParameter("@SortOrder ", patientFilterModel.sortOrder) }; return(_context.ExecStoredProcedureListWithOutput <T>(SQLObjects.PAT_GetVitals.ToString(), parameters.Length, parameters).AsQueryable()); }