public async Task HandleAsync(DeleteAgendaTrack command)
        {
            var agendaTrack = await _repository.GetAsync(command.Id);

            if (agendaTrack is null)
            {
                throw new AgendaTrackNotFoundException(command.Id);
            }

            await _repository.DeleteAsync(agendaTrack);

            await _messageBroker.PublishAsync(new AgendaTrackDeleted(command.Id));
        }
        public async Task HandleAsync(AssignRegularAgendaSlot command)
        {
            var agendaTrack = await _repository.GetAsync(command.AgendaTrackId);

            if (agendaTrack is null)
            {
                throw new AgendaTrackNotFoundException(command.AgendaTrackId);
            }

            await _domainService.AssignAgendaItemAsync(agendaTrack, command.AgendaSlotId, command.AgendaItemId);

            await _repository.UpdateAsync(agendaTrack);

            await _messageBroker.PublishAsync(new AgendaItemAssignedToAgendaSlot(command.AgendaSlotId, command.AgendaItemId));
        }
예제 #3
0
        public async Task HandleAsync(ChangeAgendaTrackName command)
        {
            var agendaTrack = await _repository.GetAsync(command.Id);

            if (agendaTrack is null)
            {
                throw new AgendaTrackNotFoundException(command.Id);
            }

            agendaTrack.ChangeName(command.Name);

            await _repository.UpdateAsync(agendaTrack);

            await _messageBroker.PublishAsync(new AgendaTrackUpdated(agendaTrack.Id));
        }
예제 #4
0
        public async Task HandleAsync(AssignPlaceholderAgendaSlot command)
        {
            var agendaTrack = await _repository.GetAsync(command.AgendaTrackId);

            if (agendaTrack is null)
            {
                throw new AgendaTrackNotFoundException(command.AgendaTrackId);
            }

            agendaTrack.ChangeSlotPlaceholder(command.AgendaSlotId, command.Placeholder);

            await _repository.UpdateAsync(agendaTrack);

            await _messageBroker.PublishAsync(new PlaceholderAssignedToAgendaSlot(command.AgendaSlotId, command.Placeholder));
        }
예제 #5
0
        public async Task HandleAsync(CreateAgendaSlot command)
        {
            var agendaTrack = await _repository.GetAsync(command.AgendaTrackId);

            if (agendaTrack is null)
            {
                throw new AgendaTrackNotFoundException(command.AgendaTrackId);
            }

            if (command.Type is AgendaSlotType.Regular)
            {
                agendaTrack.AddRegularSlot(command.Id, command.From, command.To, command.ParticipantsLimit);
            }
            else if (command.Type is AgendaSlotType.Placeholder)
            {
                agendaTrack.AddPlaceholderSlot(command.Id, command.From, command.To);
            }

            await _repository.UpdateAsync(agendaTrack);

            await _messageBroker.PublishAsync(new AgendaTrackUpdated(agendaTrack.Id));
        }