public async Task <int> Handle(CreateAudioBookCommand request, CancellationToken cancellationToken)
        {
            try
            {
                using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    try
                    {
                        var audioBook = new AudioBookInfo()
                        {
                            Name            = request.Name,
                            Description     = request.Description,
                            ImageBackground = request.ImageBackground,
                            Views           = 0,
                            Rate            = 0,
                            Duration        = 0,
                            CreatedAt       = request.RequestAt,
                            CreatedBy       = request.RequestBy
                        };

                        var id = await this._audioBookRepository.InsertAsync(audioBook);

                        foreach (var track in request.Tracks)
                        {
                            var audioBookTrack = new AudioBookTrack()
                            {
                                Name        = track.Name,
                                Description = track.Description,
                                PathFile    = track.PathFile,
                                Duration    = track.Duration,
                                AudioBookId = id,
                                CreatedAt   = request.RequestAt,
                                CreatedBy   = request.RequestBy
                            };

                            await this._audioBookTrackRepository.InsertAsync(audioBookTrack);
                        }

                        scope.Complete();
                        scope.Dispose();

                        return(await Task.FromResult <int>(id));
                    }
                    catch
                    {
                        scope.Dispose();
                        throw;
                    }
                }
            }
            catch
            {
                throw;
            }
        }
Exemplo n.º 2
0
		public Book(AudioBookInfo info){
			if (info == null)
				return;
			Title = info.Album;
			if (int.TryParse(info.Year, out int year))
			{
				Published = new DateTime(year, 1,1);
			}
			Comments = info.Comments;
			FilePath = info.FilePath;
			Speech = info.Speech;
			Nationality = info.Nationality;
		}
Exemplo n.º 3
0
 private bool ContainsFile(AudioBookInfo result, FileSystemMetadata file)
 {
     return(result.Files.Any(i => ContainsFile(i, file)) ||
            result.AlternateVersions.Any(i => ContainsFile(i, file)) ||
            result.Extras.Any(i => ContainsFile(i, file)));
 }