public EnrichmentSession(
     int id,
     long chatId,
     string name,
     int batchCount,
     DataSource dataSource,
     bool isRandomOrder,
     DataOutput dataOutput,
     List <string> options,
     bool canAddOptions,
     bool autoOrderOptions,
     bool canSelectMultipleOptions
     )
 {
     Id                        = id;
     _chatId                   = chatId;
     Name                      = name; // User friendly name
     IsActive                  = false;
     IsLive                    = false;
     _batchCount               = batchCount; // How many to post at once
     _dataSource               = dataSource;
     _isRandomOrder            = isRandomOrder;
     _dataOutput               = dataOutput;
     _options                  = options;
     _canAddOptions            = canAddOptions;
     _autoOrderOptions         = autoOrderOptions;
     _canSelectMultipleOptions = canSelectMultipleOptions;
     _idIndex                  = new SessionIdIndex(_options);
 }
        public EnrichmentSession(SessionData data)
        {
            if (data.DataSource == null || data.DataOutput == null)
            {
                throw new ArgumentNullException();
            }

            Id                        = data.Id;
            _chatId                   = data.ChatId;
            Name                      = data.Name;
            IsActive                  = data.IsActive;
            IsLive                    = data.IsLive;
            _batchCount               = data.BatchCount;
            _dataSource               = DataSource.FromData(data.DataSource);
            _isRandomOrder            = data.IsRandomOrder;
            _dataOutput               = DataOutput.FromData(data.Name, data.DataOutput, data.DataSource);
            _options                  = data.Options;
            _canAddOptions            = data.CanAddOptions;
            _autoOrderOptions         = data.AutoOrderOptions;
            _canSelectMultipleOptions = data.CanSelectMultipleOptions;
            _idIndex                  = new SessionIdIndex(data.IdIndex);
        }