public static ValidationResult Validate(MetadataCreateCommand 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 initialize at least one field")); }
public ReleaseState AddMetadata(MetadataCreateCommand command) { if (this.TrackList.ContainsKey(command.TrackId) || command.Timestamp <= this.Timestamp) { return(this); } var state = new ReleaseState(this); state.TrackList = this.TrackList.Add(command.TrackId, new MetadataState(command.TrackId, command.ReleaseId, command.Title, command.Artist, command.Album, command.Genre, command.Number)); state.Timestamp = command.Timestamp; return(state); }
private bool HandleMetadataAdded(MetadataCreateCommand command) { if (!IsMetadataAddValid(command)) { return(false); } var evt = new MetadataCreated { TrackId = command.TrackId, Album = command.Album, Artist = command.Artist, Genre = command.Genre, Timestamp = command.Timestamp, Title = command.Title }; Persist(evt, e => { _state = _state.AddMetadata(command); TellStateUpdated(); }); return(true); }
private bool IsMetadataAddValid(MetadataCreateCommand command) { return(CommandValidator.Validate(command).Success && command.ReleaseId == PersistenceId && TrackIds.Contains(command.TrackId)); }
public void AddMetadata(MetadataCreateCommand createMetadata) { WithValidation(() => CommandValidator.Validate(createMetadata)); ActorModel.TellReleaseActor(createMetadata.ReleaseId, createMetadata); }
public void AddMetadata([FromBody] MetadataCreateCommand command) { _releaseService.AddMetadata(command); }