Ejemplo n.º 1
0
 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"));
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 private bool IsMetadataAddValid(MetadataCreateCommand command)
 {
     return(CommandValidator.Validate(command).Success &&
            command.ReleaseId == PersistenceId &&
            TrackIds.Contains(command.TrackId));
 }
Ejemplo n.º 5
0
        public void AddMetadata(MetadataCreateCommand createMetadata)
        {
            WithValidation(() => CommandValidator.Validate(createMetadata));

            ActorModel.TellReleaseActor(createMetadata.ReleaseId, createMetadata);
        }
Ejemplo n.º 6
0
 public void AddMetadata([FromBody] MetadataCreateCommand command)
 {
     _releaseService.AddMetadata(command);
 }