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)); }
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)); }
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)); }
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)); }