public ActionResult Edit(int id)
        {
            var release = _context.Releases.SingleOrDefault(r => r.ReleaseId == id);

            if (release == null)
            {
                return(HttpNotFound());
            }
            var artists      = _context.Artists.ToList();
            var releaseTypes = _context.ReleaseTypes.ToList();
            var songs        = _context.Songs.Select(a => new
            {
                SongId = a.SongId,
                Name   = a.Name
            }).ToList();

            var defaultSelected = _context.Songs.Where(x => x.Releases.Any(y => y.ReleaseId == id));

            int[] songsId = new int[defaultSelected.Count()];
            int   i       = 0;

            foreach (var a in defaultSelected)
            {
                songsId[i] = a.SongId;
                i++;
            }
            if (release.ImageUrl == null)
            {
                release.ImageUrl = @"~/Uploads/ReleaseImages/default.png";
            }
            var viewModel = new ReleaseFormViewModel
            {
                Release      = release,
                ReleaseTypes = releaseTypes,
                Artists      = artists,
                Songs        = new MultiSelectList(songs, "SongId", "Name"),
                SongId       = songsId
            };

            return(View("ReleaseForm", viewModel));
        }
        public ActionResult New()
        {
            var artists      = _context.Artists.ToList();
            var releaseTypes = _context.ReleaseTypes.ToList();
            var songs        = _context.Songs.Select(a => new
            {
                SongId = a.SongId,
                Name   = a.Name
            }).ToList();
            var release = new Release();

            release.ImageUrl = @"~/Uploads/ReleaseImages/default.png";
            var viewModel = new ReleaseFormViewModel
            {
                Release      = release,
                Artists      = artists,
                ReleaseTypes = releaseTypes,
                Songs        = new MultiSelectList(songs, "SongId", "Name"),
            };

            return(View("ReleaseForm", viewModel));
        }
        public ActionResult Save(Release release, HttpPostedFileBase file, int[] SongId)
        {
            if (release.ReleaseId == 0)
            {
                if (ModelState.IsValid)
                {
                    if (file != null)
                    {
                        var fileName        = Path.GetFileName(file.FileName);
                        var directoryToSave = Server.MapPath(Url.Content("~/Uploads/ReleaseImages"));

                        var pathToSave = Path.Combine(directoryToSave, fileName);
                        file.SaveAs(pathToSave);
                        release.ImageUrl = "~/Uploads/ReleaseImages/" + fileName;
                    }
                    _context.Releases.Add(release);
                    InsertManyToMany(release, SongId);
                    return(RedirectToAction("Index"));
                }
                var artists      = _context.Artists.ToList();
                var releaseTypes = _context.ReleaseTypes.ToList();
                var songs        = _context.Songs.Select(a => new
                {
                    SongId = a.SongId,
                    Name   = a.Name
                }).ToList();
                if (release.ImageUrl == null)
                {
                    release.ImageUrl = @"~/Uploads/ReleaseImages/default.png";
                }
                var viewModel = new ReleaseFormViewModel
                {
                    Release      = release,
                    Artists      = artists,
                    ReleaseTypes = releaseTypes,
                    Songs        = new MultiSelectList(songs, "SongId", "Name"),
                };
                return(View("ReleaseForm", viewModel));
            }
            else
            {
                var currentRelease = _context.Releases.SingleOrDefault(r => r.ReleaseId == release.ReleaseId);
                if (currentRelease == null)
                {
                    return(HttpNotFound());
                }
                if (ModelState.IsValid)
                {
                    if (file != null)
                    {
                        var fileName        = Path.GetFileName(file.FileName);
                        var directoryToSave = Server.MapPath(Url.Content("~/Uploads/ReleaseImages"));

                        var pathToSave = Path.Combine(directoryToSave, fileName);
                        file.SaveAs(pathToSave);
                        currentRelease.ImageUrl = "~/Uploads/ReleaseImages/" + fileName;
                    }
                    currentRelease.Name          = release.Name;
                    currentRelease.ReleaseTypeId = release.ReleaseTypeId;
                    currentRelease.ArtistID      = release.ArtistID;
                    RemoveManyToMany(currentRelease);
                    InsertManyToMany(currentRelease, SongId);
                    return(RedirectToAction("Index"));
                }
                var artists      = _context.Artists.ToList();
                var releaseTypes = _context.ReleaseTypes.ToList();
                var songs        = _context.Songs.Select(a => new
                {
                    SongId = a.SongId,
                    Name   = a.Name
                }).ToList();
                if (release.ImageUrl == null)
                {
                    currentRelease.ImageUrl = @"~/Uploads/ReleaseImages/default.png";
                }
                var viewModel = new ReleaseFormViewModel
                {
                    Release      = currentRelease,
                    ReleaseTypes = releaseTypes,
                    Artists      = artists,
                    Songs        = new MultiSelectList(songs, "SongId", "Name"),
                    SongId       = SongId
                };
                return(View("ReleaseForm", viewModel));
            }
        }