Example #1
0
        public async Task <ActionResult <DogBreedItem> > DeleteSubBreedByID(long id, long subBreedId)
        {
            DogSubBreed subBreedToDelete = new DogSubBreed();

            try
            {
                var parentBreed = await dataContext.DogBreedItemList.FirstAsync(breed => breed.DogBreedItemId == id);

                subBreedToDelete = dataContext.DogSubBreedItemList.First(subbreed => subbreed.ParentBreedId == parentBreed.DogBreedItemId && subbreed.DogSubBreedId == subBreedId);
                dataContext.DogSubBreedItemList.Remove(subBreedToDelete);
                await dataContext.SaveChangesAsync();

                return(Ok(subBreedToDelete));
            }
            catch
            {
                return(NotFound());
            }
        }
Example #2
0
        public async Task <ActionResult <DogSubBreed> > PostSubBreed(long parentBreedId, long subBreedId, DogSubBreed dogSubBreed)
        {
            dogSubBreed.ParentBreedId = parentBreedId;
            DogBreedItem parentBreed;

            try
            {
                parentBreed = dataContext.DogBreedItemList.Include(breed => breed.SubBreeds).First(x => x.DogBreedItemId == parentBreedId);
            }
            catch
            {
                return(UnprocessableEntity("\"Error\" : \"Parent breed does not exist.\""));
            }

            try
            {
                if (parentBreed.SubBreeds.Exists(x => x.DogSubBreedId == dogSubBreed.DogSubBreedId))
                {
                    return(UnprocessableEntity("\"Error\" : \"A dog with that subbreed Id already exists.\""));
                }

                if (parentBreed.SubBreeds.Exists(x => x.SubBreedName == dogSubBreed.SubBreedName))
                {
                    return(UnprocessableEntity("\"Error\" : \"A breed can not contain two sub-breeds with the same name. Same sub-breed names are fine within seperate breed objects.\""));
                }

                dataContext.DogSubBreedItemList.Add(dogSubBreed);
                await dataContext.SaveChangesAsync();

                DogSubBreed createdSubBreed = await dataContext.DogSubBreedItemList.Where(x => x.SubBreedName == dogSubBreed.SubBreedName).FirstAsync(x => x.ParentBreedId == parentBreedId);

                dataContext.DogBreedItemList.Find(parentBreed.DogBreedItemId).SubBreeds.Add(createdSubBreed);
                await dataContext.SaveChangesAsync();

                return(Created($"api/dogbreed/{parentBreedId}/subbreed/{createdSubBreed.DogSubBreedId}", createdSubBreed));
            }
            catch
            {
                return(BadRequest());
            }
        }
Example #3
0
        /// <summary>
        /// Creates all sub-breeds and saves them in the context handed to it.
        /// </summary>
        /// <param name="dogSubbreedArray"></param>
        /// <param name="parentBreedId">Id of the breed this sub breed belongs to</param>
        /// <param name="dataContext">Data context we are adding the dog to</param>
        public static void PopulateDbContextWithNewDogBreedSubbreeds(string[] dogSubbreedArray, long parentBreedId, DogBreedContext dataContext)
        {
            DogBreedItem parentBreed = dataContext.DogBreedItemList.Find(parentBreedId);

            foreach (string subBreedName in dogSubbreedArray)
            {
                DogSubBreed subBreed = new DogSubBreed()
                {
                    ParentBreedId = parentBreedId, SubBreedName = subBreedName
                };
                dataContext.DogSubBreedItemList.Add(subBreed);
            }

            //Now save DB context so that we can retreive them with a generated ID.
            dataContext.SaveChanges();

            //Build a list of all sub breeds where the sub-subbreed's parent ID is the parent Id we're looking for.
            List <DogSubBreed> subBreeds = dataContext.DogSubBreedItemList.Where(x => x.ParentBreedId == parentBreedId).ToList();

            //set it in the context using our reference
            dataContext.DogBreedItemList.Find(parentBreedId).SubBreeds = subBreeds;
            dataContext.SaveChanges();
        }