Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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
            }));
        }