private bool dbPutAnimalGenus(int id, AnimalGenusRepresentation animalGenus) { var animalGenusInDb = db.AnimalGenuses.Find(id); if (animalGenusInDb == null) { return(false); } foreach (var animalType in animalGenusInDb.AnimalTypes) { animalType.AnimalGenus = null; } animalGenusInDb.AnimalTypes = new List <AnimalType>(); foreach (var animalType in animalGenus.AnimalTypes) { var newAnimalType = new AnimalType { Name = animalType.Name }; db.AnimalTypes.Add(newAnimalType); newAnimalType.AnimalGenus = animalGenusInDb; animalGenusInDb.AnimalTypes.Add(newAnimalType); } foreach (var park in animalGenusInDb.Parks) { park.AnimalGenuses.Remove(animalGenusInDb); } animalGenusInDb.Parks = new List <Park>(); foreach (var park in animalGenus.Parks) { var parkInDatabase = db.Parks.FirstOrDefault(elem => elem.Name == park.Name); if (parkInDatabase == null) { parkInDatabase = new Park() { Name = park.Name }; } parkInDatabase.AnimalGenuses.Add(animalGenusInDb); animalGenusInDb.Parks.Add(parkInDatabase); } animalGenusInDb.Name = animalGenus.Name; db.SaveChanges(); return(true); }
private AnimalGenusRepresentation GetAnimalGenus(AnimalGenus animalGenus) { var representation = new AnimalGenusRepresentation() { Id = animalGenus.Id, Name = animalGenus.Name }; representation.Links.Add(LinkTemplates.AnimalGenuses.DeleteAnimalGenus.CreateLink(new { id = animalGenus.Id })); representation.Links.Add(LinkTemplates.AnimalGenuses.UpdateAnimalGenus.CreateLink(new { id = animalGenus.Id })); return(representation); }
private AnimalGenusRepresentation GetAnimalGenus(AnimalGenus animalGenus) { var representation = new AnimalGenusRepresentation() { Id = animalGenus.Id, Name = animalGenus.Name }; representation.Links.Add(LinkTemplates.AnimalGenuses.DeleteAnimalGenus.CreateLink(new { id = animalGenus.Id })); representation.Links.Add(LinkTemplates.AnimalGenuses.UpdateAnimalGenus.CreateLink(new { id = animalGenus.Id })); representation.AnimalTypes = animalGenus.AnimalTypes.Select(animalType => GetAnimalType(animalType)).ToList(); representation.Parks = animalGenus.Parks.Select(park => GetPark(park)).ToList(); return(representation); }
public IHttpActionResult PutAnimalGenus(int id, AnimalGenusRepresentation animalGenus) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (dbPutAnimalGenus(id, animalGenus)) { return(StatusCode(HttpStatusCode.NoContent)); } else { return(NotFound()); } }
public IHttpActionResult PostAnimalGenus(AnimalGenusRepresentation animalGenus) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var animalGenusInDb = dbPostAnimalGenus(animalGenus); if (animalGenusInDb != null) { return(CreatedAtRoute("DefaultApi", new { id = animalGenusInDb.Id }, GetAnimalGenus(animalGenusInDb))); } else { return(BadRequest()); } }
private AnimalGenus dbPostAnimalGenus(AnimalGenusRepresentation animalGenus) { if (db.AnimalGenuses.FirstOrDefault(elem => elem.Name == animalGenus.Name) != null) { return(null); } var animalGenusInDb = new AnimalGenus() { Name = animalGenus.Name }; db.AnimalGenuses.Add(animalGenusInDb); foreach (var park in animalGenus.Parks) { var parkInDb = db.Parks.FirstOrDefault(elem => elem.Name == park.Name); if (parkInDb == null) { parkInDb = new Park() { Name = park.Name }; } parkInDb.AnimalGenuses.Add(animalGenusInDb); animalGenusInDb.Parks.Add(parkInDb); } foreach (var animalType in animalGenus.AnimalTypes) { var newAnimalType = new AnimalType { Name = animalType.Name }; db.AnimalTypes.Add(newAnimalType); newAnimalType.AnimalGenus = animalGenusInDb; animalGenusInDb.AnimalTypes.Add(newAnimalType); } db.SaveChanges(); return(animalGenusInDb); }