public async Task <ActionResult> ImportTracks([FromBody] TrackImportForm tracksForm) { var trackToImport = tracksForm.Tracks.Tracks .Select(x => new NormalizedTrack { Artist = x.Artist, Title = x.Title, }) .Reverse() .ToArray(); var progressId = Guid.NewGuid(); var results = await domainService.ImportTracksAsync(trackToImport, tracksForm.YaPlaylistId, UserId, tuple => progressBar.UpdateProgressModel(new ProgressModel { Id = progressId, Processed = tuple.Processed, Total = tuple.Total, })).ConfigureAwait(true); await importResultLogger.WriteImportLogsAsync(results, UserId, null).ConfigureAwait(true); return(PartialView("Progress", progressBar.FindProgressModel(progressId))); }
public async Task <ActionResult> ImportTracks(YaPlaylistsForm yaPlaylists, Guid sessionId) { var yaPlayListId = yaPlaylists.SelectedPlaylistId; if (yaPlayListId.IsNullOrWhitespace()) { return(RedirectToAction("GetYaPlaylists", new { sessionId = sessionId })); } var tracksText = await tempSessionService.FindSessionTextAsync(sessionId, UserId).ConfigureAwait(true); var sourceTracks = trackGetter.GetTracks(tracksText); var trackToImport = sourceTracks .Select(x => new NormalizedTrack { Artist = x.Artist, Title = x.Title, }) .Reverse() .ToArray(); var progressId = Guid.NewGuid(); #pragma warning disable 4014 RunImport(progressId, trackToImport, yaPlayListId, sessionId, UserId); #pragma warning restore 4014 var cnt = 0; while (progressBar.FindProgressModel(progressId) == null && cnt < 300) { await Task.Delay(100).ConfigureAwait(true); ++cnt; } return(View("ImportProgress", new ProgressWithUrlModel { Progress = progressBar.FindProgressModel(progressId) ?? new ProgressModel { Id = progressId, Processed = 0, Total = 0, SessionId = sessionId }, YandexPlaylistUrl = GetPlaylistUrl(yaPlaylists.Login, yaPlayListId), SessionId = sessionId })); }