Exemplo n.º 1
0
        public ReleaseState UpdateMetadata(MetadataUpdateCommand command)
        {
            if (!this.TrackList.ContainsKey(command.TrackId) || command.Timestamp <= this.Timestamp)
            {
                return(this);
            }
            var state = new ReleaseState(this);

            state.Timestamp = command.Timestamp;
            var metadata = TrackList[command.TrackId];

            state.TrackList = state.TrackList.SetItem(command.TrackId, metadata.Update(command));
            return(state);
        }
Exemplo n.º 2
0
 private bool OnMetadataUpdated(MetadataUpdateCommand command)
 {
     if (!CommandValidator.Validate(command).Success ||
         command.ReleaseId != PersistenceId ||
         !_state.TrackList.ContainsKey(command.TrackId) ||
         command.Timestamp <= _state.TrackList[command.TrackId].Timestamp)
     {
         return(false);
     }
     Persist(command, cmd =>
     {
         _state = _state.UpdateMetadata(cmd);
         TellStateUpdated();
     });
     return(true);
 }
Exemplo n.º 3
0
        public MetadataState Update(MetadataUpdateCommand cmd)
        {
            var state = new MetadataState(this);

            if (cmd.Timestamp > state.Timestamp)
            {
                state.TrackId   = cmd.TrackId ?? state.TrackId;
                state.Title     = cmd.Title ?? state.Title;
                state.Artist    = cmd.Artist ?? state.Artist;
                state.Album     = cmd.Album ?? state.Album;
                state.Genre     = cmd.Genre ?? state.Genre;
                state.Number    = cmd.Number ?? state.Number;
                state.Timestamp = cmd.Timestamp;
            }
            return(state);
        }
Exemplo n.º 4
0
 public static ValidationResult Validate(MetadataUpdateCommand command)
 {
     if (command == null || string.IsNullOrEmpty(command.TrackId) || string.IsNullOrEmpty(command.ReleaseId))
     {
         return(ValidationResult.ErrorOf("Command can't be null and should have track and release ids filled"));
     }
     if (!string.IsNullOrEmpty(command.Title) ||
         !string.IsNullOrEmpty(command.Genre) ||
         !string.IsNullOrEmpty(command.Artist) ||
         !string.IsNullOrEmpty(command.Album) ||
         command.Number.HasValue)
     {
         return(ValidationResult.Ok);
     }
     return(ValidationResult.ErrorOf("Command has to update at least one field"));
 }
Exemplo n.º 5
0
 public void UpdateMetadata(MetadataUpdateCommand updateMetadata)
 {
     WithValidation(() => CommandValidator.Validate(updateMetadata));
     ActorModel.TellReleaseActor(updateMetadata.ReleaseId, updateMetadata);
 }
Exemplo n.º 6
0
 public void UpdateMetadata([FromBody] MetadataUpdateCommand command)
 {
     _releaseService.UpdateMetadata(command);
 }