public MatrixNotificationService(
     IHttpClient httpClient,
     IOptions <MatrixConfiguration> options)
 {
     _httpClient    = httpClient;
     _configuration = options.Value;
 }
Ejemplo n.º 2
0
        public void Fluent_config()
        {
            var sql    = "SELECT * FROM Table";
            var config = new MatrixConfiguration();

            config
            .Subject((ISqlSubject) new SqlSubject()
                     .SqlQuery(sql)
                     .Field(new Field("column1", "display1", typeof(string)))
                     .Field(new Field("column2", "display2", typeof(int))));

            Assert.AreEqual(config.Count, 1);

            var s = (ISqlSubject)config[0];

            Assert.AreEqual(s.Sql, sql);
            Assert.AreEqual(s.Count, 2);

            var f1 = s[0];
            var f2 = s[1];

            Assert.AreEqual(f1.SourceName, "column1");
            Assert.AreEqual(f1.DisplayName, "display1");
            Assert.AreEqual(f1.DataType, typeof(string));

            Assert.AreEqual(f2.SourceName, "column2");
            Assert.AreEqual(f2.DisplayName, "display2");
            Assert.AreEqual(f2.DataType, typeof(int));
        }
Ejemplo n.º 3
0
        public IMatrixConfiguration Restore(MatrixConfigurationDTO dto)
        {
            var configuration = new MatrixConfiguration();
            var count         = dto.Subjects.Length;

            for (int i = 0; i < count; i++)
            {
                configuration.Subject(_subjectAssembler.Restore(dto[i]));
            }

            for (int i = 0; i < count; i++)
            {
                // finish wiring up the RelationFields now that our configuration is set up
                // assumes Subject and Field order is equivalent between DTO's and model objects
                for (int f = 0; f < configuration[i].Count; f++)
                {
                    if (configuration[i][f] is IRelationField)
                    {
                        ((IRelationField)configuration[i][f]).RelatedSubject = configuration[dto.Subjects[i].Fields[f].RelatedSubjectIndex];
                    }
                }

                // now complete the matrix nodes
                if (dto.Matrix != null)
                {
                    for (int j = 0; j < count; j++)
                    {
                        var m = dto[i, j];
                        configuration.Matrix((ISqlSubject)configuration[i], (ISqlSubject)configuration[j], m.Query, m.ToolTip);
                    }
                }
            }

            return(configuration);
        }
Ejemplo n.º 4
0
 public BotFunctions(
     ISubscriptionService subscriptionService,
     IMatrixNotificationService notificationService,
     IOptions <MatrixConfiguration> options)
 {
     _subscriptionService = subscriptionService;
     _notificationService = notificationService;
     _configuration       = options.Value;
 }
Ejemplo n.º 5
0
        public SubscriptionService(
            IHttpClient httpClient,
            ISubscriptionProvider subscriptionProvider,
            CloudStorageAccount account,
            IOptions <MatrixConfiguration> configuration)
        {
            _httpClient = httpClient;

            var tableName = configuration.Value.TableName;

            _configuration = configuration.Value;
            var client = account.CreateCloudTableClient();

            _table = client.GetTableReference(tableName);
            _subscriptionProvider = subscriptionProvider;
        }
Ejemplo n.º 6
0
        public void Fluent_config_matrix()
        {
            ISqlSubject s1, s2;
            var         config = new MatrixConfiguration();

            config
            .Subject(s1 = (ISqlSubject) new SqlSubject()
                          .Field(new Field("column1", "display1", typeof(string))))
            .Subject(s2 = (ISqlSubject) new SqlSubject()
                          .Field(new RelationField("column1", "display1", typeof(Guid), s1)));

            MatrixNode n;

            n = config[s1, s1];
            n = config[s1, s2];
            n = config[s2, s1];
            n = config[s2, s2];
        }
Ejemplo n.º 7
0
        public void Fluent_config_complex_field()
        {
            ISqlSubject s1, s2;
            var         config = new MatrixConfiguration();

            config
            .Subject(s1 = (ISqlSubject) new SqlSubject()
                          .Field(new Field("column1", "display1", typeof(string))))
            .Subject(s2 = (ISqlSubject) new SqlSubject()
                          .Field(new RelationField("column1", "display1", typeof(Guid), s1)));

            Assert.AreEqual(config.Count, 2);
            Assert.AreEqual(s2.Count, 1);
            Assert.AreEqual(s2[0].GetType(), typeof(RelationField));

            RelationField f1 = (RelationField)s2[0];

            Assert.AreEqual(f1.SourceName, "column1");
            Assert.AreEqual(f1.DisplayName, "display1");
            Assert.AreEqual(f1.DataType, typeof(Guid));
        }
Ejemplo n.º 8
0
        public Form1()
        {
            InitializeComponent();

            // Instantiate our test configuration
            _config = new Samples.Common.TestConfiguration();

            // Set up the preset view
            var view = new PresetView(
                _adapter = new PresetAdapter <Control>(
                    new WinFormsControlFactory(),
                    new ParameterBuilderFactory()
                    ));

            // The following code is possibly a smell. The builtin ParameterBuilders that work with
            // dates require DateValues to be parsed from the UI controls. The default control returns
            // strings so it won't be able to create an SQL parameter. To overcome this, we monitor
            // when a new part is added to the PresetView (occurs when we call SetParts) and initialise
            // a date parser to do this for us.
            _adapter.PartCreated += (s, e) =>
            {
                var junction = e.Part.SelectedBuilder as JunctionBuilder;
                if ((e.Part.SelectedBuilder is IDateParameterBuilder) ||
                    (junction != null && junction.Other is IDateParameterBuilder))
                {
                    e.Part.Parser = new DateParser();
                }
            };

            // Now create controls and add to form
            _adapter.SetParts(new FieldPathFactory().GetFields(_config[0]));
            view.Dock = DockStyle.Fill;
            splitContainer1.Panel1.Controls.Add(view);

            // Hook search requested event from the adapter
            // Usually triggered by pressing enter in one of the fields
            _adapter.Search += Adapter_Search;
        }
Ejemplo n.º 9
0
        public static IServiceCollection AddMatrixAdapter(this IServiceCollection services, MatrixConfiguration matrixConfiguration)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            services.AddSingleton(matrixConfiguration ?? throw new ArgumentNullException(nameof(matrixConfiguration)));

            services.AddScoped <ICemigIdentityService, CemigIdentityService>();

            return(services);
        }