public ActionResult AddNew(HurricaneViewModel NewHurricane) { if (ModelState.IsValid) { Hurricane newHurricane = (Hurricane)NewHurricane; newHurricane.AffectedCounties.Clear(); _context.Hurricanes.Add(newHurricane); foreach (int countyId in NewHurricane.AffectedCountiesId) { newHurricane.AffectedCounties.Add(_context.Counties.Find(countyId)); } _context.SaveChanges(); return(RedirectToAction("Index")); } else { IEnumerable <CountyViewModel> availableCounties = _context.Counties .ToArray() .Select(county => (CountyViewModel)county) .ToArray(); HurricanesIndexViewModel viewModel = new HurricanesIndexViewModel(availableCounties) { Hurricanes = _context.Hurricanes .Include(h => h.AffectedCounties) .ToArray() .Select(h => (HurricaneViewModel)h) .ToArray(), NewHurricane = NewHurricane }; return(View("Index", viewModel)); } }
public async Task <ActionResult> Edit(HurricaneViewModel hurricane) { if (ModelState.IsValid) { Hurricane h = await _context.Hurricanes.FindAsync(hurricane.Id); await _context.Entry(h).Collection(hu => hu.AffectedCounties).LoadAsync(); h.Id = hurricane.Id; h.Name = hurricane.Name; h.SaffirSimpsonCat = hurricane.SaffirSimpsonCategory; h.LandfallDate = hurricane.LandfallDate; foreach (int countyId in hurricane.AffectedCountiesId) { if (!h.AffectedCounties.Any(county => county.Id == countyId)) { h.AffectedCounties.Add(_context.Counties.Find(countyId)); } } foreach (County county in h.AffectedCounties.ToArray()) { if (!hurricane.AffectedCountiesId.Any(countyId => countyId == county.Id)) { h.AffectedCounties.Remove(county); } } await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } else { return(View(hurricane)); } }