Пример #1
0
        public IActionResult Edit(int id)
        {
            EditSongViewModel model = new EditSongViewModel();

            model.song      = _mapper.Map <SongModel>(_songService.GetSong(id));
            model.genreList = _mapper.Map <List <GenreModel> >(_genreService.GetAllGenres());
            return(View(model));
        }
Пример #2
0
        public async Task <IActionResult> Edit(int id, EditSongViewModel vm)
        {
            try
            {
                var song = await unitOfWork.Songs.GetAsync(id);

                // temporary solutions tracking
                // https://github.com/aspnet/AspNetCore.Docs/issues/10393
                var isAuthorized = await authorizationService
                                   .AuthorizeAsync(User, song.OwenerId, AutherazationOperations.OwenResourse);

                if (!isAuthorized.Succeeded)
                {
                    return(RedirectToAction("AccessDenied", "Users"));
                }

                if (!ModelState.IsValid)
                {
                    return(View(vm));
                }

                if (id != vm.Dto.Id)
                {
                    vm.Message = "Opps update failed please try again";
                    return(View(vm));
                }
                // check if the selected album is exist
                if (vm.Dto.AlbumId != null && !await unitOfWork.Albums.Exist(vm.Dto.AlbumId))
                {
                    vm.Message = $"The selected Album { vm.AlbumName } is no longer exist";
                    return(View(vm));
                }

                var selectedGenres = vm.Genres.Where(s => s.IsSelected);
                vm.Dto.GenresIds = await GetValidGenresIdsAsync(selectedGenres);

                await unitOfWork.Songs.UpdateAsync(vm.Dto);

                await unitOfWork.SaveAsync();

                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "An error occurred while deleting song.");
            }
            // ToDo: Implement error page
            return(View("Error"));
        }
Пример #3
0
        public async Task <IActionResult> Edit(int id)
        {
            try
            {
                var song = await unitOfWork.Songs.GetAsync(id);

                // temporary solutions tracking
                // https://github.com/aspnet/AspNetCore.Docs/issues/10393
                var isAuthorized = await authorizationService
                                   .AuthorizeAsync(User, song.OwenerId, AutherazationOperations.OwenResourse);

                if (!isAuthorized.Succeeded)
                {
                    return(RedirectToAction("AccessDenied", "Users"));
                }

                var genres = await unitOfWork.Genres.GetAllAsync();

                var songDto   = mapper.Map <SongForUpdatingDto>(song);
                var genresDto = mapper.Map <List <CheckBoxItem> >(genres);
                // Select the genres that the song have
                foreach (var songGenre in song.Genres)
                {
                    var selectedSong = genresDto.First(g => g.Id == songGenre.Id);
                    selectedSong.IsSelected = true;
                }

                var vm = new EditSongViewModel
                {
                    AlbumName = song.Album != null ? song.Album.Name : "",
                    Dto       = songDto,
                    Genres    = genresDto
                };

                return(View(vm));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "An error occurred while getting albums.");
            }
            // ToDo: Implement error page
            return(View("Error"));
        }
Пример #4
0
        public ViewResult Edit(Guid id)
        {
            var song = _databaseContext.Song.FirstOrDefault(p => p.SongID == id);

            ViewData["Genres"]    = _databaseContext.Genre.ToList();
            ViewData["Writer"]    = _databaseContext.Person.ToList();
            ViewData["Singer"]    = _databaseContext.Person.ToList();
            ViewData["Producer"]  = _databaseContext.Person.ToList();
            ViewData["Performer"] = _databaseContext.Person.ToList();
            ViewData["Guitarist"] = _databaseContext.Person.ToList();
            ViewData["Drummer"]   = _databaseContext.Person.ToList();
            ViewData["Composer"]  = _databaseContext.Person.ToList();
            ViewData["Bassist"]   = _databaseContext.Person.ToList();

            Console.WriteLine("pi" + song.SongName);

            Console.WriteLine("li" + song.SongPersons.ToList().Select(u => u.PersonID));
            Console.WriteLine("si" + song.Genres.ToList().Select(gu => gu.GenreID));


            var model = new EditSongViewModel
            {
                Song       = song,
                GenreIDs   = song.Genres.ToList().Select(gu => gu.GenreID),
                Bassist    = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Composer   = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Drummer    = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Guitarist  = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Performer  = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Producer   = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Singer     = song.SongPersons.ToList().Select(u => u.Person.PersonID),
                Songwriter = song.SongPersons.ToList().Select(u => u.Person.PersonID)
            };

            return(View(model));
        }
Пример #5
0
        public IActionResult Edit(EditSongViewModel model)
        {
            Boolean success = _songService.UpdateSong(_mapper.Map <MusicCore.Song>(model.song));

            return(RedirectToAction("Songs"));
        }
Пример #6
0
        public IActionResult Update(Guid id, EditSongViewModel model)
        {
            if (ModelState.IsValid)
            {
                var song = _databaseContext.Song/*.Include("SongGenres.Genre")/.Include(s=>s.SongPersons).ThenInclude(s=>s.Person)*/
                           .FirstOrDefault(m => m.SongID == id);

                Console.WriteLine("songovi" + song.SongPersons.Count());
                Console.WriteLine("ime" + song.SongName);

                song.Duration = model.Song.Duration;
                song.SongName = model.Song.SongName;
                song.SongYear = model.Song.SongYear;

                Boolean           band  = model.Band;
                List <SongPerson> osobe = new List <SongPerson>();

                TempData["Success"] = true;

                song.Genres.Clear();
                song.SongPersons.Clear();

                var newGenres = _databaseContext.Genre.Where(u => model.GenreIDs.Contains(u.GenreID)).ToList();
                foreach (var genre in newGenres)
                {
                    song.Genres.Add(genre);
                }

                if (band == true)
                {
                    var newBassist = _databaseContext.Person.Where(u => model.Bassist.Contains(u.PersonID)).ToList();
                    Console.WriteLine("broj" + newBassist.Count());
                    var newGuitarist = _databaseContext.Person.Where(u => model.Guitarist.Contains(u.PersonID)).ToList();
                    var newDrummer   = _databaseContext.Person.Where(u => model.Drummer.Contains(u.PersonID)).ToList();
                    var newSinger    = _databaseContext.Person.Where(u => model.Singer.Contains(u.PersonID)).ToList();

                    foreach (var person in newBassist)
                    {
                        Console.WriteLine("basist" + id);
                        SongPerson sp = new SongPerson {
                            Song = song, Person = person
                        };
                        var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                        if (per != null)
                        {
                            osobe.Remove(per);
                            per.Function |= Function.BASSIST;
                            osobe.Add(per);
                        }
                        else
                        {
                            sp.Function = Function.BASSIST;
                            osobe.Add(sp);
                        }
                    }

                    foreach (var person in newDrummer)
                    {
                        Console.WriteLine("bubnjar" + id);
                        SongPerson sp = new SongPerson {
                            Song = song, Person = person
                        };
                        var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                        if (per != null)
                        {
                            osobe.Remove(per);
                            per.Function |= Function.DRUMMER;
                            osobe.Add(per);
                        }
                        else
                        {
                            sp.Function = Function.DRUMMER;
                            osobe.Add(sp);
                        }
                    }

                    foreach (var person in newGuitarist)
                    {
                        Console.WriteLine("gitarist" + id);
                        SongPerson sp = new SongPerson {
                            Song = song, Person = person
                        };
                        var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                        if (per != null)
                        {
                            osobe.Remove(per);
                            per.Function |= Function.GUITARIST;
                            osobe.Add(per);
                        }
                        else
                        {
                            sp.Function = Function.GUITARIST;
                            osobe.Add(sp);
                        }
                    }
                    foreach (var person in newSinger)
                    {
                        Console.WriteLine("pjevac" + id);
                        SongPerson sp = new SongPerson {
                            Song = song, Person = person
                        };
                        var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                        if (per != null)
                        {
                            osobe.Remove(per);
                            per.Function |= Function.SINGER;
                            osobe.Add(per);
                        }
                        else
                        {
                            sp.Function = Function.SINGER;
                            osobe.Add(sp);
                        }
                    }
                }

                var newProducer   = _databaseContext.Person.Where(u => model.Producer.Contains(u.PersonID)).ToList();
                var newSongWriter = _databaseContext.Person.Where(u => model.Songwriter.Contains(u.PersonID)).ToList();
                var newComposer   = _databaseContext.Person.Where(u => model.Composer.Contains(u.PersonID)).ToList();
                var newPerformer  = _databaseContext.Person.Where(u => model.Performer.Contains(u.PersonID)).ToList();

                foreach (var person in newProducer)
                {
                    Console.WriteLine("producer" + id);
                    SongPerson sp = new SongPerson {
                        Song = song, Person = person
                    };
                    var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                    if (per != null)
                    {
                        osobe.Remove(per);
                        per.Function |= Function.PRODUCER;
                        osobe.Add(per);
                    }
                    else
                    {
                        sp.Function = Function.PRODUCER;
                        osobe.Add(sp);
                    }
                }

                foreach (var person in newPerformer)
                {
                    Console.WriteLine("performer" + id);
                    SongPerson sp = new SongPerson {
                        Song = song, Person = person
                    };
                    var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                    if (per != null)
                    {
                        osobe.Remove(per);
                        per.Function |= Function.PERFORMER;
                        osobe.Add(per);
                    }
                    else
                    {
                        sp.Function = Function.PERFORMER;
                        osobe.Add(sp);
                    }
                }


                foreach (var person in newComposer)
                {
                    Console.WriteLine("composer" + id);
                    SongPerson sp = new SongPerson {
                        Song = song, Person = person
                    };
                    var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                    if (per != null)
                    {
                        osobe.Remove(per);
                        per.Function |= Function.COMPOSER;
                        osobe.Add(per);
                    }
                    else
                    {
                        sp.Function = Function.COMPOSER;
                        osobe.Add(sp);
                    }
                }

                foreach (var person in newSongWriter)
                {
                    Console.WriteLine("pisac" + id);
                    SongPerson sp = new SongPerson {
                        Song = song, Person = person
                    };
                    var per = osobe.Find(x => x.Person.PersonID == person.PersonID);

                    if (per != null)
                    {
                        osobe.Remove(per);
                        per.Function |= Function.SONGWRITER;
                        osobe.Add(per);
                    }
                    else
                    {
                        sp.Function = Function.SONGWRITER;
                        osobe.Add(sp);
                    }
                }
                song.SongPersons.Clear();
                foreach (var item in osobe)
                {
                    Console.WriteLine("mj" + osobe.Count());

                    song.SongPersons.Add(item);
                }

                _databaseContext.SaveChanges();
            }
            return(RedirectToAction(nameof(Index)));
        }