//private readonly SourceList<Artist> _sourceArtists; //public IObservableList<Artist> Artists => this._sourceArtists; //public IObservableList<Album> Albums => throw new NotImplementedException(); #endregion #region IWriteLibraryService public async Task <Track> AddTrackAsync(AddTrackCommand command) { if (command == null) { throw new ArgumentNullException(nameof(command)); } // TODO: ensure track paths uniqueness try { var newTrack = await this._trackFactory.CreateAsync( command.Location, command.Duration, command.LastModifiedDateTime, command.FileSizeBytes, command.Title, command.Performers, command.Composers, command.Year, command.AlbumAssociation); var addedTrack = await this._tracksRepository.AddAsync(newTrack); return(addedTrack); } catch //(Exception ex) { // TODO: log return(null); } finally { } }
public TrackInputViewModel(Track newTrack, ITrackService trackService, ILogging logger, Window window) { NewTrack = newTrack; TrackService = trackService; Logger = logger; Window = window; if (NewTrack.IsValid()) { SaveTrackCommand = new UpdateTrackCommand(this); } else { SaveTrackCommand = new AddTrackCommand(this); } }
public override async Task Handle(TrackUploadFinishedEvent @event, CancellationToken cancellationToken) { var command = new AddTrackCommand { TrackId = Guid.NewGuid(), FileName = @event.FileName, PlaylistId = @event.PlaylistId, TrackName = @event.TrackName }; await _mediator.Send(command, cancellationToken); var notificationMessage = new TrackUploadFinishedNotificationMessage { IsSuccess = @event.IsSuccess, PlaylistId = @event.PlaylistId, TrackName = @event.TrackName }; await _clientNotificationService.SendNotificationMessageAsync(@event.UserId, notificationMessage); }