public IEnumerable <Meeting> GetRecords(OwnerParameters ownerParameters) { IQueryable <Meeting> query = _context.meetings; var type = typeof(Meeting); var prop = type.GetProperty(ownerParameters.Sort_by); if (prop != null) { var param = Expression.Parameter(type); var expr = Expression.Lambda <Func <Meeting, object> >( Expression.Convert(Expression.Property(param, prop), typeof(object)), param ); if (ownerParameters.Sort_type == "desc") { query = query.OrderByDescending(expr); } else { query = query.OrderBy(expr); } } var list = (from r in query select r).AsEnumerable(); if (!string.IsNullOrEmpty(ownerParameters.Search)) { var stringProperties = typeof(Meeting).GetProperties(); list = list.Where(c => stringProperties.Any(prop => prop.GetValue(c, null).ToString().Contains(ownerParameters.Search))); } var list1 = list.AsEnumerable(); return(list1.ToList()); }
public IActionResult GetOwners([FromQuery] OwnerParameters ownerParameters) { if (!ownerParameters.ValidYearRange) { return(BadRequest("Max year of birth cannot be less than min year of birth")); } var owners = _repository.Owner.GetOwners(ownerParameters); var metadata = new { owners.TotalCount, owners.PageSize, owners.CurrentPage, owners.TotalPages, owners.HasNext, owners.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); _logger.LogInfo($"Returned {owners.Count()} owners from database."); return(Ok(owners)); }
public IActionResult GetAllOwners([FromQuery] OwnerParameters ownerParameters) { try { var owners = _repository.Owner.GetAllOwners(ownerParameters); var metadata = new { owners.TotalCount, owners.PageSize, owners.CurrentPage, owners.TotalPages, owners.HasNext, owners.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); _logger.LogInfo($"Returned {owners.TotalCount} owners from database."); return(Ok(owners)); } catch (Exception ex) { _logger.LogError($"Something went wrong inside GetAllOwners action: {ex.Message}"); return(StatusCode(500, "Internal server error")); } }
/// <summary> /// GetOwners method /// </summary> /// <param name="ownerParameters"></param> /// <param name="isCacheIgnored"></param> /// <returns></returns> public async Task <IEnumerable <Owner> > GetOwners(OwnerParameters ownerParameters, bool isCacheIgnored = false) { // return the cached owners if there is an entry in the memory cache if (!isCacheIgnored) { IEnumerable <Owner> ownersCached = _ownerMemoryCache.GetOwnerMemoryCache(); if (ownersCached.Any()) { return(ownersCached); } } var result = await FindAll() .OrderBy(on => on.Name) .Skip((ownerParameters.PageNumber - 1) * ownerParameters.PageSize) .Take(ownerParameters.PageSize) .ToListAsync(); // store result to memory cache if (result != null) { _ownerMemoryCache.SetOwnerMemoryCache(result); } return(result); }
public IActionResult GetAllOwners([FromQuery] OwnerParameters ownerParameters) { try { if (!ownerParameters.ValidYearRange) { return(BadRequest("Max year of birth cannot be less than min year of birth")); } var owners = _repository.Owner.GetAllOwners(ownerParameters); var metadata = new { owners.TotalCount, owners.PageSize, owners.CurrentPage, owners.TotalPages, owners.HasNext, owners.HasPrevious }; var ownerResult = _mapper.Map <IEnumerable <OwnerDTO> >(owners); Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); _logger.LogInfo($"Returned {owners.TotalCount} owners from database."); return(Ok(ownerResult)); } catch (Exception ex) { _logger.LogError($"Something went wrong in the GetAllOwners() action : {ex.Message}"); return(StatusCode(500, "Internal Server Error"));//change db ID to uniqueidentifier } }
public IActionResult GetOwners([FromQuery] OwnerParameters ownerParameters) { var owners = _repository.Owner.GetOwners(ownerParameters); _logger.LogInfo($"Returned {owners.Count()} owners from database."); return(Ok(owners)); }
//using pagination public IEnumerable <Owner> GetOwners(OwnerParameters ownerParameters) { return(FindAll() .OrderBy(on => on.Name) .Skip((ownerParameters.PageNumber - 1) * ownerParameters.PageSize) .Take(ownerParameters.PageSize) .ToList()); }
public IActionResult GetMeetings([FromQuery] OwnerParameters ownerParameters) { var meetings = new List <Meeting>(); meetings = _dataAccessProvider.GetRecords(ownerParameters).ToList(); var meetings_string = JsonConvert.SerializeObject(meetings); distributedCache.SetString("meetings", meetings_string); return(Ok(meetings.AsQueryable())); }
public PagedList <Owner> GetOwners(OwnerParameters ownerParameters) { var owners = FindByCondition(x => x.DateOfBirth.Year >= ownerParameters.MinYearOfBirth && x.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth); SearchByName(ref owners, ownerParameters.Name); ApplySort(ref owners, ownerParameters.OrderBy); return(PagedList <Owner> .ToPagedList(owners, ownerParameters.PageNumber, ownerParameters.PageSize)); }
public PagedList <ShapedEntity> GetOwners(OwnerParameters ownerParameters) { var owners = FindByCondition(o => o.DateOfBirth.Year >= ownerParameters.MinYearOfBirth && o.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth); SearchByName(ref owners, ownerParameters.Name); _sortHelper.ApplySort(ref owners, ownerParameters.OrderBy); var ShapedOwnersData = _dataShaper.ShapeData(owners, ownerParameters.fields); return(PagedList <ShapedEntity> .ToPagedList(ShapedOwnersData, ownerParameters.PageNumber, ownerParameters.PageSize)); }
public async Task <PagedList <ShapedEntity> > GetAllOwnersAsync(OwnerParameters ownerParameters) { var owners = FindByCondition(o => o.DateOfBirth.Year >= ownerParameters.MinYearOfBirth && o.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth); SearchByName(ref owners, ownerParameters.Name); _sortHelper.ApplySort(owners, ownerParameters.OrderBy); var shapedOwners = _dataShaper.ShapeData(owners, ownerParameters.Fields); return(await PagedList <ShapedEntity> .ToPagedListAsync(shapedOwners, ownerParameters.PageNumber, ownerParameters.PageSize)); }
public PagedList <ExpandoObject> GetOwners(OwnerParameters ownerParameters) { var owners = FindByCondition(o => o.DateOfBirth.Year >= ownerParameters.MinYearOfBirth && o.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth); SearchByName(ref owners, ownerParameters.Name); var sortedOwners = _sortHelper.ApplySort(owners, ownerParameters.OrderBy); var shapedOwners = _dataShaper.ShapeData(sortedOwners, ownerParameters.Fields); return(PagedList <ExpandoObject> .ToPagedList(shapedOwners, ownerParameters.PageNumber, ownerParameters.PageSize)); }
public void Sort_Ok() { OwnerParameters o1 = new OwnerParameters(); o1.Sort_by = "Start_time"; var mock = new Mock <IDataAccessProvider>(); mock.Setup(repo => repo.GetRecords(o1)).Returns(meets_sorted); var controller = new MeetingsController(mock.Object); var Result = controller.GetMeetings(o1); var OkResult = Assert.IsType <OkObjectResult>(Result.Result); var resultObj = (IQueryable <Meeting>)OkResult.Value; Assert.Equal("12:40", resultObj.ToList()[0].Start_time); }
public void Search_Ok() { OwnerParameters o1 = new OwnerParameters(); o1.Search = "Molly"; var mock = new Mock <IDataAccessProvider>(); mock.Setup(repo => repo.GetRecords(o1)).Returns(meets1); var controller = new MeetingsController(mock.Object); var Result = controller.GetMeetings(o1); var OkResult = Assert.IsType <OkObjectResult>(Result.Result); var resultObj = (IQueryable <Meeting>)OkResult.Value; Assert.Single(resultObj.ToList()); }
public async Task <PagedList <ShapedEntity> > GetOwnersAsync(OwnerParameters ownerParameters) { var ownersList = await this.FindByCondition(o => o.DateOfBirth.Year >= ownerParameters.MinYearOfBirth && o.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth) .OrderBy(o => o.Name) .ToListAsync(); var owners = ownersList.AsQueryable(); SearchByName(ref owners, ownerParameters.Name); var sortedOwners = _sortHelper.ApplySort(owners, ownerParameters.OrderBy); var shapedOwners = _dataShaper.ShapeData(sortedOwners, ownerParameters.Fields); return(PagedList <ShapedEntity> .ToPagedList(shapedOwners.AsQueryable(), ownerParameters.PageNumber, ownerParameters.PageSize)); }
//Second add here //then go to Controller public PagedList <Owner> GetAllOwners(OwnerParameters ownerParameters) { //filtering Date of births var owners = FindByCondition(o => o.DateOfBirth.Year >= ownerParameters.MinYearOfBirth && o.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth); //search for name SearchByName(ref owners, ownerParameters.Name); //sort not working // _sortHelper.ApplySort(owners, ownerParameters.OrderBy); //pagination return(PagedList <Owner> .ToPagedList(owners, ownerParameters.PageNumber, ownerParameters.PageSize)); }
public IActionResult GetOwners([FromQuery] OwnerParameters ownerParameters) { if (!ownerParameters.ValidYearRange) { return(BadRequest("Max year of birth cannot be less than min year of birth")); } var owners = _repository.Owner.GetOwners(ownerParameters); var metadata = new { owners.TotalCount, owners.PageSize, owners.CurrentPage, owners.TotalPages, owners.HasNext, owners.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); _logger.LogInfo($"Returned {owners.TotalCount} owners from database."); var shapedOwners = owners.Select(o => o.Entity).ToList(); // var mediaType = (MediaTypeHeaderValue)HttpContext.Items["AcceptHeaderMediaType"]; var mediaType = HttpContext.Request.Headers["AcceptHeaderMediaType"]; if (!mediaType.Contains("hateoas")) { return(Ok(shapedOwners)); } for (var index = 0; index < owners.Count(); index++) { var ownerLinks = CreateLinksForOwner(owners[index].Id, ownerParameters.Fields); shapedOwners[index].Add("Links", ownerLinks); } var ownersWrapper = new LinkCollectionWrapper <Entity>(shapedOwners); return(Ok(CreateLinksForOwners(ownersWrapper))); }
public async Task <IActionResult> GetAllOwners([FromQuery] OwnerParameters ownerParameters) { if (!ownerParameters.ValidYearRange) { return(BadRequest("Max year of birth cannot be less than min year of birth")); } var owners = await this._repository.Owner.GetAllOwnersAsync(ownerParameters); var metadata = new { owners.TotalCount, owners.PageSize, owners.CurrentPage, owners.TotalPages, owners.HasNext, owners.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); _logger.LogInfo($"Returned {owners.TotalCount} owners from database."); var shapedOwners = owners.Select(o => o.Entity).ToList(); var mediaType = (Microsoft.Net.Http.Headers.MediaTypeHeaderValue)HttpContext.Items["AcceptHeaderMediaType"]; if (!mediaType.SubTypeWithoutSuffix.EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase)) { return(Ok(shapedOwners)); } for (var index = 0; index < owners.Count(); index++) { var ownerLinks = CreateLinksForOwner(owners[index].Id, ownerParameters.Fields); shapedOwners[index].Add("Links", ownerLinks); } var ownersWrapper = new LinkCollectionWrapper <Entity>(shapedOwners); return(Ok(CreateLinksForOwners(ownersWrapper))); }
public IActionResult GetAllOwners([FromQuery] OwnerParameters ownerParameters) { try { if (!ownerParameters.ValidYearRange) { return(BadRequest("Max year of birth cannot be less than min year of birth")); } var owners = _repository.Owner.GetOwners(ownerParameters); var metadata = new { owners.TotalCount, owners.PageSize, owners.CurrentPage, owners.TotalPages, owners.HasNext, owners.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); var shapedOwners = owners.Select(o => o.Entity).ToList(); for (var index = 0; index < owners.Count(); index++) { var ownerLinks = CreateLinksForOwner(owners[index].Id, ownerParameters.fields); shapedOwners[index].Add("Links", ownerLinks); } var ownersWrapper = new LinkCollectionWrapper <Entity>(shapedOwners); return(Ok(CreateLinksForOwners(ownersWrapper))); } catch (Exception ex) { _logger.LogError($"Something went wrong inside GetAllOwners action: {ex.Message}"); return(StatusCode(500, "Internal server error")); } }
public IActionResult GetOwnerById(Guid id, [FromQuery] OwnerParameters ownerParameters) { try { var owner = _repository.Owner.GetOwnerById(id, ownerParameters); if (owner.Id == Guid.Empty) { _logger.LogError($"Owner with id: {id}, hasn't been found in db."); return(NotFound()); } else { _logger.LogInfo($"Returned owner with id: {id}"); return(Ok(owner.Entity)); } } catch (Exception ex) { _logger.LogError($"Something went wrong inside GetOwnerById action: {ex.Message}"); return(StatusCode(500, "Internal server error")); } }
public ShapedEntity GetOwnerById(Guid ownerId, OwnerParameters ownerParameters) { return(_dataShaper.ShapeData(FindByCondition(o => o.Id.Equals(ownerId)).FirstOrDefault(), ownerParameters.fields)); }
public ActionResult <IEnumerable <Meeting> > GetMeetings([FromQuery] OwnerParameters ownerParameters) { IQueryable values = _dataAccessProvider.GetRecords(ownerParameters).AsQueryable(); return(Ok(values)); }
public PagedList <Owner> GetAllOwners(OwnerParameters ownerParameters) { return(PagedList <Owner> .ToPagedList(FindAll().OrderBy(on => on.Name), ownerParameters.PageNumber, ownerParameters.PageSize)); }