private static Species GetOrCreateSpecies(AnimalDetailed animalDetailed, ZooDataBaseContext db) { var environment = db.Environments.Where(e => e.Name == animalDetailed.Environment).Select(e => e).FirstOrDefault(); var type = db.Types.Where(t => t.Name == animalDetailed.Type).Select(t => t).FirstOrDefault(); var species = db.Species.Where(s => s.Name == animalDetailed.Species).Select(s => s).FirstOrDefault(); if (species == null) { species = new Species() { Name = animalDetailed.Species, Environment = environment, Type = type }; } else { if (species.Environment.Name != animalDetailed.Environment) { throw new InvalidOperationException($"Arten \"{species.Name}\" kan inte ha {animalDetailed.Environment} som miljö."); } if (species.Type.Name != animalDetailed.Type) { throw new InvalidOperationException($"Arten \"{species.Name}\" kan inte anges som {animalDetailed.Type}."); } } return(species); }
private static Animal GetOrCreateAnimalMother(AnimalDetailed animalDetailed, ZooDataBaseContext db, Country country, Species species) { var mother = db.Families.Where(f => f.AnimalMother.Name == animalDetailed.Mother) .Select(f => f.AnimalMother).FirstOrDefault(); var newMother = db.Animals.Where(a => a.Name == animalDetailed.Mother) .Select(a => a).FirstOrDefault(); if (mother == null && newMother == null && animalDetailed.Mother != "") { mother = new Animal() { Name = animalDetailed.Mother, Country = country, Species = species, Weight = 0, Sex = "Hona" }; return(mother); } if (mother == null && newMother != null) { return(newMother); } else { return(mother); } }
private static Animal GetAndAlterAnimal(AnimalDetailed animalDetailed, ZooDataBaseContext db, Country country, Species species) { var animal = db.Animals.Find(animalDetailed.AnimalId); animal.Country = country; animal.Species = species; animal.Name = animalDetailed.Name; animal.Sex = animalDetailed.Sex; animal.Weight = animalDetailed.WeightInKilogram; return(animal); }
private static Country GetOrCreateCountry(AnimalDetailed animalDetailed, ZooDataBaseContext db) { var country = db.Countries.Where(c => c.Name == animalDetailed.CountryOfOrigin).Select(c => c).FirstOrDefault(); if (country == null) { country = new Country() { Name = animalDetailed.CountryOfOrigin }; } return(country); }
public AddOrEditAnimal(AnimalDetailed animal) { InitializeComponent(); TextBoxCountry.Text = animal.CountryOfOrigin; TextBoxEnvironment.Text = animal.Environment; TextBoxFather.Text = animal.Father; TextBoxMother.Text = animal.Mother; TextBoxName.Text = animal.Name; TextBoxSex.Text = animal.Sex; TextBoxSpecies.Text = animal.Species; TextBoxType.Text = animal.Type; TextBoxWeight.Text = animal.WeightInKilogram.ToString(); LabelId.Content = animal.AnimalId; }
public void AddOrUpdateAnimal(AnimalDetailed animalDetailed) { using (var db = new ZooDataBaseContext()) { Country country = GetOrCreateCountry(animalDetailed, db); Species species = GetOrCreateSpecies(animalDetailed, db); Animal animal = null; if (animalDetailed.AnimalId == 0) { animal = new Animal() { Name = animalDetailed.Name, Sex = animalDetailed.Sex, Weight = animalDetailed.WeightInKilogram, Country = country, Species = species }; } else { animal = GetAndAlterAnimal(animalDetailed, db, country, species); } Animal mother = GetOrCreateAnimalMother(animalDetailed, db, country, species); Animal father = GetOrCreateAnimalFather(animalDetailed, db, country, species); var family = db.Families.Where(f => f.AnimalChild.AnimalId == animalDetailed.AnimalId) .Select(f => f) .FirstOrDefault(); if (family != null) { family.AnimalFather = father; family.AnimalMother = mother; family.AnimalChild = animal; db.Families.AddOrUpdate(f => f.FamilyId, family ); } else if (family == null && (animalDetailed.Mother != "" || animalDetailed.Mother != "")) { family = new Family() { AnimalChild = animal, AnimalMother = mother, AnimalFather = father }; db.Families.AddOrUpdate(f => f.ChildId, family ); } else { db.Animals.AddOrUpdate(a => a.AnimalId, animal ); } db.SaveChanges(); } }