예제 #1
0
        public async Task <IActionResult> CreatePlaylist(CreatePlaylistViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                var createPlaylist = _mapper.Map <CreatePlaylistViewModel>(CronosState);
                return(View(createPlaylist));
            }

            if (CronosState?.AlbumResults == null)
            {
                return(RedirectToAction("SelectArtist"));
            }
            try
            {
                var playlist = new Playlist();
                foreach (var album in CronosState.AlbumResults.Where(a => a.Checked))
                {
                    foreach (var t in album.Tracks)
                    {
                        playlist.Tracks.Add(t);
                    }
                }

                playlist.Name        = viewModel.PlaylistTitle;
                playlist.Description = $"Playlist created by cronos.frenetik.io on {DateTime.Now:D} by none other than {User.Identity.Name}";
                playlist.Public      = viewModel.Public;

                var returnPlaylist = await _spotifyService.CreatePlaylistAsync(playlist);

                var created = _mapper.Map <CompletedPlaylistViewModel>(returnPlaylist);

                CronosState.Reset();

                return(View("CompletedPlaylist", created));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);

                return(View("Error", new ErrorViewModel()
                {
                    RequestId = HttpContext.TraceIdentifier
                }));
            }
        }