Esempio n. 1
0
        private bool dbPutPark(int id, ParkRepresentation park)
        {
            var parkInDb = db.Parks.Find(id);

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

            foreach (var animalGenus in parkInDb.AnimalGenuses)
            {
                animalGenus.Parks.Remove(parkInDb);
            }

            parkInDb.AnimalGenuses = new List <AnimalGenus>();

            foreach (var animalGenus in park.AnimalGenuses)
            {
                var animalGenusInDatabase = db.AnimalGenuses.FirstOrDefault(elem => elem.Name == animalGenus.Name);
                if (animalGenusInDatabase == null)
                {
                    animalGenusInDatabase = new AnimalGenus()
                    {
                        Name = animalGenus.Name
                    };
                }

                animalGenusInDatabase.Parks.Add(parkInDb);
                parkInDb.AnimalGenuses.Add(animalGenusInDatabase);
            }

            foreach (var ringStation in parkInDb.RingStations)
            {
                ringStation.Park = null;
            }

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

            foreach (var ringStation in park.RingStations)
            {
                var ringStationInDatabase = db.RingStations.FirstOrDefault(elem => elem.Name == ringStation.Name);
                if (ringStationInDatabase == null || (ringStationInDatabase != null && ringStationInDatabase.Park != null && !ringStationInDatabase.Park.Equals(parkInDb)))
                {
                    ringStationInDatabase = new RingStation()
                    {
                        Name = ringStation.Name
                    };
                }

                ringStationInDatabase.Park = parkInDb;
                parkInDb.RingStations.Add(ringStationInDatabase);
            }

            parkInDb.Name = park.Name;

            db.SaveChanges();

            return(true);
        }
Esempio n. 2
0
        private ParkRepresentation GetPark(Park park)
        {
            var representation = new ParkRepresentation()
            {
                Id   = park.Id,
                Name = park.Name
            };

            representation.Links.Add(LinkTemplates.Parks.DeletePark.CreateLink(new { id = park.Id }));
            representation.Links.Add(LinkTemplates.Parks.UpdatePark.CreateLink(new { id = park.Id }));
            return(representation);
        }
Esempio n. 3
0
        private ParkRepresentation GetPark(Park park)
        {
            var representation = new ParkRepresentation()
            {
                Id   = park.Id,
                Name = park.Name
            };

            representation.Links.Add(LinkTemplates.Parks.DeletePark.CreateLink(new { id = park.Id }));
            representation.Links.Add(LinkTemplates.Parks.UpdatePark.CreateLink(new { id = park.Id }));
            representation.RingStations  = park.RingStations.Select(station => GetRingStation(station)).ToList();
            representation.AnimalGenuses = park.AnimalGenuses.Select(genus => GetAnimalGenus(genus)).ToList();
            return(representation);
        }
Esempio n. 4
0
        public IHttpActionResult PutPark(int id, ParkRepresentation park)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (dbPutPark(id, park))
            {
                return(StatusCode(HttpStatusCode.NoContent));
            }
            else
            {
                return(NotFound());
            }
        }
Esempio n. 5
0
        public IHttpActionResult PostPark(ParkRepresentation park)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var parkInDb = dbPostPark(park);

            if (parkInDb != null)
            {
                return(CreatedAtRoute("DefaultApi", new { id = parkInDb.Id }, GetPark(parkInDb)));
            }
            else
            {
                return(BadRequest());
            }
        }
Esempio n. 6
0
        private Park dbPostPark(ParkRepresentation park)
        {
            if (db.Parks.FirstOrDefault(elem => elem.Name == park.Name) != null)
            {
                return(null);
            }

            var parkInDb = new Park()
            {
                Name = park.Name
            };

            db.Parks.Add(parkInDb);

            foreach (var animalGenus in park.AnimalGenuses)
            {
                var animalGenusInDb = db.AnimalGenuses.FirstOrDefault(elem => elem.Name == animalGenus.Name);
                if (animalGenusInDb == null)
                {
                    animalGenusInDb = new AnimalGenus()
                    {
                        Name = animalGenus.Name
                    };
                }
                parkInDb.AnimalGenuses.Add(animalGenusInDb);
                animalGenusInDb.Parks.Add(parkInDb);
            }

            foreach (var ringStation in park.RingStations)
            {
                var newStation = new RingStation {
                    Name = ringStation.Name
                };
                db.RingStations.Add(newStation);
                newStation.Park = parkInDb;
                parkInDb.RingStations.Add(newStation);
            }

            db.SaveChanges();
            return(parkInDb);
        }