public IActionResult Create(TrackCreatePostViewModel model)
        {
            if (model.AlbumId == null)
            {
                return(BadRequest(string.Format(
                                      Constants.EntityPropertyMissingError, "Album", "ID")));
            }
            var    album  = AlbumService.GetAlbumById(model.AlbumId);
            string artist = model.Artist;
            string title  = model.TrackTitle;

            if (TrackService.Exists(artist, title))
            {
                model.Data[Constants.ErrorKey] = string.Format(
                    Constants.EntityExistsError, "Track", $"{artist} - {title}");
                model.MusicGenres = Enumerator
                                    .GetTextValues(typeof(MusicGenre))
                                    .Select(displayName => new MusicGenreViewModel()
                {
                    DisplayName = displayName
                });
                return(View(model));
            }
            var     genre = Enumerator.ToEnumOrDefault <MusicGenre>(model.Genre);
            decimal price = decimal.Parse(model.Price);

            TrackService.AddTrack(artist, title, genre, model.Link, price);
            var track = TrackService.GetTrackByName(artist, title);

            AlbumTrackService.AddAlbumTrack(album.Id, track.Id);
            model.TrackId = track.Id.ToString();
            return(RedirectTo(string.Format(Constants.TrackDetailsViewRoute, model.AlbumId, model.TrackId)));
        }
示例#2
0
        public IActionResult Create(TrackCreatePostViewModel model)
        {
            Guid   albumId = Guid.Parse(model.AlbumId);
            var    album   = AlbumService.GetAlbum(albumId);
            string artist  = model.Artist;
            string title   = model.TrackTitle;

            if (TrackService.Exists(artist, title))
            {
                model.Error = string.Format(Constants.TrackExistsError, artist, title);
                return(View(model));
            }
            string  genreDisplayName = model.Genre;
            var     genre            = Enumerator.ToEnumOrDefault <MusicGenre>(genreDisplayName);
            string  trackUrl         = model.Link;
            decimal price            = decimal.Parse(model.Price);

            TrackService.AddTrack(artist, title, genre, trackUrl, price);
            var track = TrackService.GetTrack(artist, title);

            AlbumTrackService.AddAlbumTrack(album.Id, track.Id);
            model.TrackId = track.Id.ToString();
            return(RedirectTo(string.Format(Constants.TrackDetailsViewRoute, albumId.ToString(), track.Id.ToString())));
        }