// 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}"); }