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