public ActionResult Edit(int id) { var facility = _context.SportsFacilities.Find(id); if (facility == null) { return(HttpNotFound()); } var sports = _context.Sports.ToList(); var selectedSports = _context.SportSportsFacilities.Where(x => x.SportsFacility_Id == id).ToList(); var checkBoxListItems = new List <CheckBoxListItem>(); foreach (var sport in sports) { checkBoxListItems.Add(new CheckBoxListItem() { ID = sport.Id, Display = sport.Name, IsChecked = selectedSports.Where(x => x.Sport_Id == sport.Id).Any() }); } var viewModel = new FacilityFormViewModel() { Facility = facility, Sports = checkBoxListItems }; return(View("FacilityForm", viewModel)); }
public ActionResult Create() { FacilityFormViewModel model = new FacilityFormViewModel() { Facility = new SportsFacility() }; var sports = _context.Sports.ToList(); var checkBoxListItems = new List <CheckBoxListItem>(); foreach (var sport in sports) { checkBoxListItems.Add(new CheckBoxListItem() { ID = sport.Id, Display = sport.Name, IsChecked = false }); } model.Sports = checkBoxListItems; return(View("FacilityForm", model)); }
public ActionResult Save(FacilityFormViewModel model) { if (!ModelState.IsValid) { var sports = _context.Sports.ToList(); var checkBoxListItems = new List <CheckBoxListItem>(); foreach (var sport in sports) { checkBoxListItems.Add(new CheckBoxListItem() { ID = sport.Id, Display = sport.Name, IsChecked = false }); } var viewModel = new FacilityFormViewModel { Facility = model.Facility, Sports = checkBoxListItems }; return(View("FacilityForm", viewModel)); } if (model.Facility.Id == 0) { var selectedSports = model.Sports.Where(x => x.IsChecked).Select(x => x.ID).ToList(); var facility = new SportsFacility() { Name = model.Facility.Name, Town = model.Facility.Town, Address = model.Facility.Address }; _context.SportsFacilities.Add(facility); _context.SaveChanges(); foreach (var sportID in selectedSports) { var name = new SportSportsFacility { Sport_Id = sportID, SportsFacility_Id = facility.Id }; _context.SportSportsFacilities.Add(name); } } else { var facilityInDb = _context.SportsFacilities.Single(sf => sf.Id == model.Facility.Id); facilityInDb.Name = model.Facility.Name; facilityInDb.Town = model.Facility.Town; facilityInDb.Address = model.Facility.Address; facilityInDb.AverageGrade = model.Facility.AverageGrade; var selectedSports = model.Sports.Where(x => x.IsChecked).Select(x => x.ID).ToList(); foreach (var sportID in selectedSports) { var sport = _context.SportSportsFacilities.SingleOrDefault(ssf => ssf.Sport_Id == sportID && ssf.SportsFacility_Id == model.Facility.Id); if (sport == null) { _context.SportSportsFacilities.Add(new SportSportsFacility() { SportsFacility_Id = model.Facility.Id, Sport_Id = sportID }); } } var unselectedSports = model.Sports.Where(x => !x.IsChecked).Select(x => x.ID).ToList(); foreach (var sportID in unselectedSports) { var sport = _context.SportSportsFacilities.SingleOrDefault(ssf => ssf.Sport_Id == sportID && ssf.SportsFacility_Id == model.Facility.Id); if (sport != null) { _context.SportSportsFacilities.Remove(sport); } } } _context.SaveChanges(); return(RedirectToAction("Index")); }