// Edit existing dog
        internal void EditNewDog(Dog dogToEdit, ObservableCollection <Dog> dogs, IList chosenColors)
        {
            // Find the same object in DB
            var dogFromDb   = _context.Dog.FirstOrDefault(x => x.IdDog == dogToEdit.IdDog);
            var dogFromView = dogs.FirstOrDefault(x => x.IdDog == dogToEdit.IdDog);

            // change properties in DB object
            dogFromDb.Name           = dogToEdit.Name;
            dogFromDb.ChipNumber     = dogToEdit.ChipNumber;
            dogFromDb.BornDate       = dogToEdit.BornDate;
            dogFromDb.Description    = dogToEdit.Description;
            dogFromDb.HaveCastration = dogToEdit.HaveCastration;
            dogFromDb.Height         = dogToEdit.Height;
            dogFromDb.Weight         = dogToEdit.Weight;
            dogFromDb.Sex            = dogToEdit.Sex;
            dogFromDb.IdCatsAttitude = dogToEdit.IdCatsAttitude;
            dogFromDb.IdDogsAttitude = dogToEdit.IdDogsAttitude;
            dogFromDb.IdKidsAttitude = dogToEdit.IdKidsAttitude;

            // change properties in ObservableColletion for View
            dogFromView.Name           = dogToEdit.Name;
            dogFromView.ChipNumber     = dogToEdit.ChipNumber;
            dogFromView.BornDate       = dogToEdit.BornDate;
            dogFromView.Description    = dogToEdit.Description;
            dogFromView.HaveCastration = dogToEdit.HaveCastration;
            dogFromView.Height         = dogToEdit.Height;
            dogFromView.Weight         = dogToEdit.Weight;
            dogFromView.Sex            = dogToEdit.Sex;
            dogFromView.IdCatsAttitude = dogToEdit.IdCatsAttitude;
            dogFromView.IdDogsAttitude = dogToEdit.IdDogsAttitude;
            dogFromView.IdKidsAttitude = dogToEdit.IdKidsAttitude;

            //change colors for this edit dog
            IEnumerable <Dogcolor> usedColorDog = GetDogColorsForIdDog(dogToEdit.IdDog); // which dogcolor are using by edited dog

            _context.Dogcolor.RemoveRange(usedColorDog);                                 // remove all dogcolor in DogColor table
            _context.SaveChanges();
            foreach (Models.DB.Color color in chosenColors)
            {
                var newDogColor = new Dogcolor();
                newDogColor.IdColor = color.IdColor;
                newDogColor.IdDog   = dogToEdit.IdDog;
                _context.Dogcolor.Add(newDogColor);
            }

            _context.SaveChanges();
            MessageBox.Show("Pomyślnie zmieniłem dane.");
        }
        // Add new dog
        internal void AddNewDog(Dog dogToAdd, IList chosenColors)
        {
            _context.Add(dogToAdd);
            _context.SaveChanges();

            int addedDogId = GetLatestDogId(); // get latest dog id after adding dog to DB

            foreach (Models.DB.Color color in chosenColors)
            {
                var newDogColor = new Dogcolor();
                newDogColor.IdColor = color.IdColor;
                newDogColor.IdDog   = addedDogId;
                _context.Dogcolor.Add(newDogColor);
            }
            _context.SaveChanges();

            MessageBox.Show($"Poprawnie dodałem psa: \n{dogToAdd.Name} {dogToAdd.ChipNumber}");
        }