Example #1
0
        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));
            }
        }
Example #2
0
        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));
            }
        }