예제 #1
0
        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));
        }
예제 #3
0
        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
            }
        }
예제 #6
0
        public IActionResult GetOwners([FromQuery] OwnerParameters ownerParameters)
        {
            var owners = _repository.Owner.GetOwners(ownerParameters);

            _logger.LogInfo($"Returned {owners.Count()} owners from database.");

            return(Ok(owners));
        }
예제 #7
0
 //using pagination
 public IEnumerable <Owner> GetOwners(OwnerParameters ownerParameters)
 {
     return(FindAll()
            .OrderBy(on => on.Name)
            .Skip((ownerParameters.PageNumber - 1) * ownerParameters.PageSize)
            .Take(ownerParameters.PageSize)
            .ToList());
 }
예제 #8
0
        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));
        }
예제 #11
0
        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));
        }
예제 #12
0
        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));
        }
예제 #13
0
        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);
        }
예제 #14
0
        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());
        }
예제 #15
0
        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));
        }
예제 #17
0
        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)));
        }
예제 #18
0
        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)));
        }
예제 #19
0
        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"));
            }
        }
예제 #20
0
        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));
 }
예제 #22
0
        public ActionResult <IEnumerable <Meeting> > GetMeetings([FromQuery] OwnerParameters ownerParameters)
        {
            IQueryable values = _dataAccessProvider.GetRecords(ownerParameters).AsQueryable();

            return(Ok(values));
        }
예제 #23
0
 public PagedList <Owner> GetAllOwners(OwnerParameters ownerParameters)
 {
     return(PagedList <Owner> .ToPagedList(FindAll().OrderBy(on => on.Name),
                                           ownerParameters.PageNumber,
                                           ownerParameters.PageSize));
 }