private bool dbPutAnimalType(int id, AnimalTypeRepresentation animalType)
        {
            var animalTypeInDatabase = db.AnimalTypes.Find(id);

            if (animalTypeInDatabase == null)
            {
                return(false);
            }

            foreach (var ringStations in animalTypeInDatabase.RingStations)
            {
                ringStations.AnimalTypes.Remove(animalTypeInDatabase);
            }

            animalTypeInDatabase.RingStations = new List <RingStation>();

            foreach (var ringStation in animalType.RingStations)
            {
                var ringStationInDatabase = db.RingStations.FirstOrDefault(elem => elem.Name == ringStation.Name);
                if (ringStationInDatabase == null)
                {
                    ringStationInDatabase = new RingStation()
                    {
                        Name = ringStation.Name
                    };
                }

                animalTypeInDatabase.RingStations.Add(ringStationInDatabase);
                ringStationInDatabase.AnimalTypes.Add(animalTypeInDatabase);
            }

            if (animalTypeInDatabase.AnimalGenus != null)
            {
                animalTypeInDatabase.AnimalGenus.AnimalTypes.Remove(animalTypeInDatabase);
                animalTypeInDatabase.AnimalGenus = null;
            }

            if (animalType.AnimalGenus != null)
            {
                var animalGenusInDb = db.AnimalGenuses.FirstOrDefault(elem => elem.Name == animalType.AnimalGenus.Name);
                if (animalGenusInDb == null)
                {
                    animalGenusInDb = new AnimalGenus()
                    {
                        Name = animalType.AnimalGenus.Name
                    };
                }
                animalTypeInDatabase.AnimalGenus = animalGenusInDb;
                animalGenusInDb.AnimalTypes.Add(animalTypeInDatabase);
            }

            animalTypeInDatabase.Name = animalType.Name;

            db.SaveChanges();

            return(true);
        }
Example #2
0
        private AnimalTypeRepresentation GetAnimalType(AnimalType animalType)
        {
            var representation = new AnimalTypeRepresentation()
            {
                Id   = animalType.Id,
                Name = animalType.Name
            };

            representation.Links.Add(LinkTemplates.AnimalTypes.DeleteAnimalType.CreateLink(new { id = animalType.Id }));
            representation.Links.Add(LinkTemplates.AnimalTypes.UpdateAnimalType.CreateLink(new { id = animalType.Id }));
            return(representation);
        }
        private AnimalTypeRepresentation GetAnimalType(AnimalType animalType)
        {
            var representation = new AnimalTypeRepresentation()
            {
                Id   = animalType.Id,
                Name = animalType.Name
            };

            representation.Links.Add(LinkTemplates.AnimalTypes.DeleteAnimalType.CreateLink(new { id = animalType.Id }));
            representation.Links.Add(LinkTemplates.AnimalTypes.UpdateAnimalType.CreateLink(new { id = animalType.Id }));
            representation.AnimalGenus  = animalType.AnimalGenus == null ? null : GetAnimalGenus(animalType.AnimalGenus);
            representation.RingStations = animalType.RingStations.Select(ringStation => GetRingStation(ringStation)).ToList();
            return(representation);
        }
        public IHttpActionResult PutAnimalType(int id, AnimalTypeRepresentation animalType)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (dbPutAnimalType(id, animalType))
            {
                return(StatusCode(HttpStatusCode.NoContent));
            }
            else
            {
                return(NotFound());
            }
        }
        private AnimalType dbPostAnimalType(AnimalTypeRepresentation animalType)
        {
            var animalTypeInDatabase = db.AnimalTypes.FirstOrDefault(elem => elem.Name == animalType.Name);

            if (animalTypeInDatabase != null)
            {
                return(null);
            }
            animalTypeInDatabase = new AnimalType()
            {
                Name = animalType.Name
            };
            db.AnimalTypes.Add(animalTypeInDatabase);

            foreach (var ringStation in animalType.RingStations)
            {
                var ringStationInDatabase = db.RingStations.FirstOrDefault(elem => elem.Name == ringStation.Name);
                if (ringStationInDatabase == null)
                {
                    ringStationInDatabase = new RingStation()
                    {
                        Name = ringStation.Name
                    };
                }
                animalTypeInDatabase.RingStations.Add(ringStationInDatabase);
                ringStationInDatabase.AnimalTypes.Add(animalTypeInDatabase);
            }

            if (animalType.AnimalGenus != null)
            {
                var animalGenusInDb = db.AnimalGenuses.FirstOrDefault(elem => elem.Name == animalType.AnimalGenus.Name);
                if (animalGenusInDb == null)
                {
                    animalGenusInDb = new AnimalGenus()
                    {
                        Name = animalType.AnimalGenus.Name
                    };
                }
                animalTypeInDatabase.AnimalGenus = animalGenusInDb;
                animalGenusInDb.AnimalTypes.Add(animalTypeInDatabase);
            }

            db.SaveChanges();
            return(animalTypeInDatabase);
        }
        public IHttpActionResult PostAnimalType(AnimalTypeRepresentation animalType)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var animalTypeInDatabase = dbPostAnimalType(animalType);

            if (animalTypeInDatabase != null)
            {
                return(CreatedAtRoute("DefaultApi", new { id = animalTypeInDatabase.Id }, GetAnimalType(animalTypeInDatabase)));
            }
            else
            {
                return(BadRequest());
            }
        }