示例#1
0
        private static List <PetListVM> GetCats(int pageSize, int page, PetSortBy sortBy)
        {
            var catModels = _catRepository.GetCats(pageSize, page, sortBy, true).ToList();

            List <PetListVM> petVMsToReturn = new List <PetListVM>();

            catModels.ForEach(c => petVMsToReturn.Add(new PetListVM()
            {
                Id           = c.Id,
                Age          = c.Age.ToString(),
                Name         = c.Name,
                Breed        = c.Breed.Name,
                Years        = c.Age,
                DateAdded    = c.Created,
                ThumbnailUrl = c.ThumbnailUrl,
                ImageUrl     = c.ImageUrl,
                OriginUrl    = c.OriginUrl,
                OtherDetails = new List <PetDetail> {
                    new PetDetail()
                    {
                        LabelText = "Indoor Cat", DetailsText = c.IsIndoor ? "Yes" : "No", iconCssId = "indoorCat"
                    }
                }
            }));

            return(petVMsToReturn);
        }
示例#2
0
        public IPagedList <Dog> GetDogs(int pageSize, int page, PetSortBy sortBy, bool sortAsc)
        {
            IQueryable <Dog> dogsToReturn = _context.Dogs.Include(d => d.Breed);

            switch (sortBy)
            {
            case PetSortBy.Name:
                if (sortAsc)
                {
                    dogsToReturn = dogsToReturn.OrderBy(d => d.Name);
                }
                else
                {
                    dogsToReturn = dogsToReturn.OrderByDescending(d => d.Name);
                }
                break;

            case PetSortBy.Age:
                if (sortAsc)
                {
                    dogsToReturn = dogsToReturn.OrderBy(d => d.Age).ThenBy(d => d.Name);
                }
                else
                {
                    dogsToReturn = dogsToReturn.OrderByDescending(d => d.Age).ThenBy(d => d.Name);
                }


                break;

            case PetSortBy.Breed:
                if (sortAsc)
                {
                    dogsToReturn = dogsToReturn.OrderBy(d => d.Breed.Name).ThenBy(d => d.Name);
                }
                else
                {
                    dogsToReturn = dogsToReturn.OrderByDescending(d => d.Breed.Name).ThenBy(d => d.Name);
                }

                break;

            case PetSortBy.DateAdded:

                if (sortAsc)
                {
                    dogsToReturn = dogsToReturn.OrderBy(d => d.Created).ThenBy(d => d.Name);
                }
                else
                {
                    dogsToReturn = dogsToReturn.OrderByDescending(d => d.Created).ThenBy(d => d.Name);
                }

                break;

            default:
                break;
            }
            return(dogsToReturn.ToPagedList(page, pageSize));
        }
示例#3
0
        private static List <PetListVM> GetAllPets(int pageSize, int page, PetSortBy petSortBy)
        {
            List <PetListVM> petVMsToReturn = new List <PetListVM>();
            var dogs = GetDogs(pageSize / 2, page, petSortBy);
            var cats = GetCats(pageSize / 2, page, petSortBy);

            petVMsToReturn.AddRange(dogs);
            petVMsToReturn.AddRange(cats);
            petVMsToReturn.Shuffle();

            return(petVMsToReturn);
        }
示例#4
0
        private static List <PetListVM> GetDogs(int pageSize, int page, PetSortBy sortBy)
        {
            var dogModels = _dogRepository.GetDogs(pageSize, page, sortBy, true).ToList();

            List <PetListVM> petVMsToReturn = new List <PetListVM>();

            dogModels.ForEach(d => petVMsToReturn.Add(new PetListVM()
            {
                Id           = d.Id,
                Age          = d.DogAge.ToString(),
                Name         = d.Name,
                Breed        = d.Breed.Name,
                Years        = d.Age,
                DateAdded    = d.Created,
                ThumbnailUrl = d.ThumbnailUrl,
                ImageUrl     = d.ImageUrl,
                OriginUrl    = d.OriginUrl
            }));

            return(petVMsToReturn);
        }
示例#5
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            InitialiseRepositories();

            List <PetListVM> petsToReturn = new List <PetListVM>();

            var qsPetType    = req.GetQueryNameValuePairs().FirstOrDefault(q => string.Compare(q.Key, "petType", true) == 0).Value;
            var qsPageSize   = req.GetQueryNameValuePairs().FirstOrDefault(nv => string.Compare(nv.Key, "pageSize", true) == 0).Value;
            var qsPageNumber = req.GetQueryNameValuePairs().FirstOrDefault(nv => string.Compare(nv.Key, "page", true) == 0).Value;
            var qsSortBy     = req.GetQueryNameValuePairs().FirstOrDefault(nv => string.Compare(nv.Key, "sortBy", true) == 0).Value;

            PetType petType = PetType.All;

            if (!Enum.TryParse <PetType>(qsPetType, true, out petType))
            {
                if (String.IsNullOrWhiteSpace(qsPetType))
                {
                    petType = PetType.All;
                }
                else
                {
                    return(req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a valid pet type on the query string"));
                }
            }


            int pageSize = 50;

            if ((!int.TryParse(qsPageSize, out pageSize)))
            {
                pageSize = 50;
            }

            int page = 1;

            if ((!int.TryParse(qsPageNumber, out page)))
            {
                page = 1;
            }

            PetSortBy petSortBy = PetSortBy.DateAdded;

            if (!Enum.TryParse <PetSortBy>(qsSortBy, true, out petSortBy))
            {
                petSortBy = PetSortBy.DateAdded;
            }

            switch (petType)
            {
            case PetType.All:
                petsToReturn = GetAllPets(pageSize, page, petSortBy);
                break;

            case PetType.Dog:
                petsToReturn = GetDogs(pageSize, page, petSortBy);
                break;

            case PetType.Cat:
                petsToReturn = GetCats(pageSize, page, petSortBy);
                break;

            case PetType.Hamster:
                break;

            case PetType.Snake:
                break;

            default:
                break;
            }



            return(req.CreateResponse <List <PetListVM> >(HttpStatusCode.OK, petsToReturn, "application/json"));


            log.Info("C# HTTP trigger function processed a request.");

            // parse query parameter
            string name = req.GetQueryNameValuePairs()
                          .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
                          .Value;

            // Get request body
            dynamic data = await req.Content.ReadAsAsync <object>();

            // Set name to query string or body data
            name = name ?? data?.name;

            return(name == null
                ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
                : req.CreateResponse(HttpStatusCode.OK, "Hello " + name));
        }