public void SaveChanges() { if (string.IsNullOrEmpty(NameOfSelectedDish)) { MessageBox.Show("Name must not be empty", "Save Dish"); return; } double price; bool ok = ParsePrice(out price); if (!ok) { return; } string oldName = _selectedDish.Name, newName = NameOfSelectedDish; /*// TODO This does not find duplicate names! * if (IsDishNameInUse(newName, _selectedDish)) * { * MessageBox.Show($"Dish named {newName} already exists. Please write a different name.", "Save Dish"); * return; * } */ int index = Dishes.IndexOf(SelectedDish); bool isRenamed = oldName != newName; _selectedDish.Name = NameOfSelectedDish; _selectedDish.Description = DescriptionOfSelectedDish; _selectedDish.Price = price; _selectedDish.ContainsLactose = SelectedDishContainsLactose; _selectedDish.ContainsGluten = SelectedDishContainsGluten; _selectedDish.ContainsFish = SelectedDishContainsFish; DataAccess da = new DataAccess(); da.ModifyDish(_selectedDish); if (isRenamed) { // Reload the list to force items update in ComboBox Dishes.Clear(); Dishes.AddRange(TrimNames(new DataAccess().GetAllDishes())); NotifyOfPropertyChange(() => Dishes); NotifyOfPropertyChange(() => SelectedDish); } SelectedDishModified = false; }
/// <summary> /// Обновление списков сущностей. /// </summary> private void UpdateLists() { Dishes.Clear(); Prepacks.Clear(); Products.Clear(); Shared.NHibernate.Environment.Session.Clear(); var dishes = Repository.Get <Dish>(); foreach (var dish in dishes) { dish.Update(); dish.EntitySaved += OnEntityChanged; dish.EntityDeleted += OnEntityChanged; } var prepacks = Repository.Get <Prepack>(); foreach (var prepack in prepacks) { prepack.Update(); prepack.EntitySaved += OnEntityChanged; prepack.EntityDeleted += OnEntityChanged; } var products = Repository.Get <Product>(); foreach (var product in products) { product.Update(); product.EntitySaved += OnEntityChanged; product.EntityDeleted += OnEntityChanged; } Dishes.AddRange(dishes.Select(x => new DishViewModel(x))); Prepacks.AddRange(prepacks.Select(x => new PrepackViewModel(x))); Products.AddRange(products.Select(x => new ProductViewModel(x))); }