Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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;
        }
Beispiel #6
0
        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();
            }
        }