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); }
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); }
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); }
public IHttpActionResult PutPark(int id, ParkRepresentation park) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (dbPutPark(id, park)) { return(StatusCode(HttpStatusCode.NoContent)); } else { return(NotFound()); } }
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()); } }
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); }