private void FillSelectLists(int id) { ViewBag.CategoryList = new SelectList(_context.Categories, "Id", "Name"); SelectList ganres = new SelectList(_context.Ganres, "Id", "Name"); ViewBag.GanreList = new List <SelectListItem>(); FilmGanreRelationship r = new FilmGanreRelationship(); foreach (var g in ganres) { ViewBag.GanreList.Add(new SelectListItem { Value = g.Value, Text = g.Text }); } SelectList actors = new SelectList(_context.Actors, "Id", "Name"); ViewBag.ActorList = new List <SelectListItem>(); foreach (var a in actors) { ViewBag.ActorList.Add(new SelectListItem { Value = a.Value, Text = a.Text }); } ViewBag.Id = id; }
public async Task <IActionResult> Edit([Bind("Id,Name,CategoryId,Year,Info")] Film film, int id, int firstId, string?retController) { FillSelectLists(firstId); FillReturnPath(retController); var ganresId = Request.Form["ganres"]; var actorsId = Request.Form["actors"]; List <int> gIds = new List <int>(); foreach (var g in ganresId) { gIds.Add(int.Parse(g)); } List <int> aIds = new List <int>(); foreach (var a in actorsId) { aIds.Add(int.Parse(a)); } if (!IsDuplicate(film, gIds, aIds, id)) { if (ModelState.IsValid) { try { _context.Update(film); film.FilmGanreRelationships.Clear(); var GIds = _context.FilmGanreRelationships.Where(r => r.FilmId == id); foreach (var item in GIds) { _context.Remove(item); } foreach (var gId in gIds) { var ganre = _context.Ganres.Where(g => g.Id == gId).FirstOrDefault(); FilmGanreRelationship fgr = new FilmGanreRelationship(); fgr.Film = film; fgr.GanreId = gId; fgr.Ganre = ganre; foreach (var e in ganre.FilmGanreRelationships) { if (e.FilmId == film.Id) { ganre.FilmGanreRelationships.Remove(e); } } ganre.FilmGanreRelationships.Add(fgr); film.FilmGanreRelationships.Add(fgr); _context.FilmGanreRelationships.Add(fgr); } film.FilmGanreRelationships.Clear(); var AIds = _context.FilmActorRelationships.Where(r => r.FilmId == id); foreach (var item in AIds) { _context.Remove(item); } foreach (var aId in aIds) { var actor = _context.Actors.Where(a => a.Id == aId).FirstOrDefault(); FilmActorRelationship far = new FilmActorRelationship(); far.Film = film; far.ActorId = aId; far.Actor = actor; foreach (var e in actor.FilmActorRelationships) { if (e.FilmId == film.Id) { actor.FilmActorRelationships.Remove(e); } } actor.FilmActorRelationships.Add(far); film.FilmActorRelationships.Add(far); _context.FilmActorRelationships.Add(far); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FilmExists(film.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Index", "Films", new { firstId = firstId, retController = retController })); } return(View(film)); } else { ModelState.AddModelError("", "Такий фільм уже існує"); } return(View(film)); }
public async Task <IActionResult> Create([Bind("Id,Name,CategoryId,Year,Info")] Film film, int firstId, string?retController) { FillSelectLists(firstId); FillReturnPath(retController); var ganresId = Request.Form["ganres"]; var actorsId = Request.Form["actors"]; List <int> gIds = new List <int>(); foreach (var g in ganresId) { gIds.Add(int.Parse(g)); } List <int> aIds = new List <int>(); foreach (var a in actorsId) { aIds.Add(int.Parse(a)); } if (!IsDuplicate(film, gIds, aIds, 0)) { if (ModelState.IsValid) { _context.Add(film); foreach (var gId in gIds) { var ganre = _context.Ganres.Where(g => g.Id == gId).FirstOrDefault(); FilmGanreRelationship fgr = new FilmGanreRelationship(); fgr.Film = film; fgr.GanreId = gId; fgr.Ganre = ganre; ganre.FilmGanreRelationships.Add(fgr); film.FilmGanreRelationships.Add(fgr); _context.FilmGanreRelationships.Add(fgr); } foreach (var aId in aIds) { var actor = _context.Actors.Where(a => a.Id == aId).FirstOrDefault(); FilmActorRelationship far = new FilmActorRelationship(); far.Film = film; far.ActorId = aId; far.Actor = actor; actor.FilmActorRelationships.Add(far); film.FilmActorRelationships.Add(far); _context.FilmActorRelationships.Add(far); } await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Films", new { firstId = firstId, retController = retController })); } return(View(film)); } else { ModelState.AddModelError("", "Такий фільм уже існує"); } return(View(film)); }