コード例 #1
0
        public int Create(int companyId, Format_Create parseData)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                CompanyInSubscriptionPlan newData = new CompanyInSubscriptionPlan();
                newData.CompanyID                 = companyId;
                newData.SubscriptionPlanID        = parseData.SubscriptionPlanId;
                newData.SubscriptionName          = parseData.SubscriptionName ?? "";
                newData.RatePer1KMessageIngestion = parseData.RatePer1KMessageIngestion;
                newData.RatePer1KMessageHotStore  = parseData.RatePer1KMessageHotStore;
                newData.RatePer1KMessageColdStore = parseData.RatePer1KMessageColdStore;

                newData.StartDate   = parseData.StartDate;
                newData.ExpiredDate = parseData.ExpiredDate;

                newData.MaxMessageQuotaPerDay = parseData.MaxMessageQuotaPerDay;

                newData.StoreHotMessage  = parseData.StoreHotMessage;
                newData.StoreColdMessage = parseData.StoreColdMessage;

                newData.CosmosDBConnectionString        = parseData.CosmosDBConnectionString ?? "";
                newData.CosmosDBName                    = parseData.CosmosDBName;
                newData.CosmosDBCollectionID            = parseData.CosmosDBColletionId;
                newData.CosmosDBCollectionTTL           = parseData.CosmosDBCollectionTTL;
                newData.CosmosDBCollectionReservedUnits = parseData.CosmosDBCollectionReservedUnits;

                newData.IoTHubConnectionString  = parseData.IoTHubConnectionString ?? "";
                newData.IoTHubConsumerGroup     = parseData.IoTHubConsumerGroup ?? "";
                newData.StorageConnectionString = parseData.StorageConnectionString ?? "";

                dbEntity.CompanyInSubscriptionPlan.Add(newData);
                dbEntity.SaveChanges();
                return(newData.Id);
            }
        }
コード例 #2
0
        private async Task <DocDBHelper> createDocDBHelper(CompanyInSubscriptionPlan cisp)
        {
            try
            {
                DocDBHelper docDBHelper = new DocDBHelper(cisp.CosmosDBConnectionString);

                await docDBHelper.checkDatabaseIfNotExists(cisp.CosmosDBName);

                await docDBHelper.checkCollectionIfNotExists(cisp.CosmosDBName, cisp.CosmosDBCollectionID);

                //CosmosDbHelper cdsCosmosDbHelper = new CosmosDbHelper(cisp.CosmosDBConnectionString, cisp.CosmosDBName, cisp.CosmosDBCollectionID);

                //await cdsCosmosDbHelper.checkDatabaseIfNotExists();

                //await cdsCosmosDbHelper.checkCollectionIfNotExists();

                return(docDBHelper);
            }
            catch (DocumentClientException de)
            {
                Exception baseException = de.GetBaseException();
                _consoleLog.Error("{0} error occurred: {1}, Message: {2}", de.StatusCode, de.Message, baseException.Message);
                _consoleLog.BlobLogError("fetchDocumentDB: {0} error occurred: {1}, Message: {2}", de.StatusCode, de.Message, baseException.Message);
                throw;
            }
            catch (Exception e)
            {
                Exception baseException = e.GetBaseException();
                _consoleLog.Error("Error: {0}, Message: {1}", e.Message, baseException.Message);
                _consoleLog.BlobLogError("fetchDocumentDB: Error: {0}, Message: {1}", e.Message, baseException.Message);
                throw;
            }
        }
コード例 #3
0
        public void Delete(int companyId, int subscriptionId)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                CompanyInSubscriptionPlan existingData = (from c in dbEntity.CompanyInSubscriptionPlan
                                                          where c.Id == subscriptionId && c.CompanyID == companyId
                                                          select c).SingleOrDefault <CompanyInSubscriptionPlan>();
                if (existingData == null)
                {
                    throw new CDSException(10302);
                }

                dbEntity.CompanyInSubscriptionPlan.Remove(existingData);
                dbEntity.SaveChanges();
            }
        }
コード例 #4
0
        public Format_Detail Get(int companyId, int subscriptionId)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                CompanyInSubscriptionPlan existingData = (from c in dbEntity.CompanyInSubscriptionPlan.AsNoTracking()
                                                          where c.Id == subscriptionId && c.CompanyID == companyId
                                                          select c).SingleOrDefault <CompanyInSubscriptionPlan>();
                if (existingData == null)
                {
                    throw new CDSException(10302);
                }

                return(new Format_Detail()
                {
                    Id = existingData.Id,
                    SubscriptionPlanId = existingData.SubscriptionPlanID,
                    SubscriptionName = existingData.SubscriptionName,
                    RatePer1KMessageIngestion = (double)existingData.RatePer1KMessageIngestion,
                    RatePer1KMessageHotStore = (double)existingData.RatePer1KMessageHotStore,
                    RatePer1KMessageColdStore = (double)existingData.RatePer1KMessageColdStore,

                    StartDate = existingData.StartDate,
                    ExpiredDate = existingData.ExpiredDate,
                    MaxMessageQuotaPerDay = existingData.MaxMessageQuotaPerDay,
                    StoreHotMessage = existingData.StoreHotMessage,
                    StoreColdMessage = existingData.StoreColdMessage,

                    CosmosDBConnectionString = existingData.CosmosDBConnectionString,
                    CosmosDBName = existingData.CosmosDBName,
                    CosmosDBColletionId = existingData.CosmosDBCollectionID,
                    CosmosDBCollectionTTL = (int)existingData.CosmosDBCollectionTTL,
                    CosmosDBCollectionReservedUnits = (int)existingData.CosmosDBCollectionReservedUnits,

                    IoTHubConnectionString = existingData.IoTHubConnectionString,
                    IoTHubConsumerGroup = existingData.IoTHubConsumerGroup,
                    StorageConnectionString = existingData.StorageConnectionString
                });
            }
        }
コード例 #5
0
        public void Update(int companyId, int subscriptionId, Format_Update parseData)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                CompanyInSubscriptionPlan existingData = (from c in dbEntity.CompanyInSubscriptionPlan
                                                          where c.Id == subscriptionId && c.CompanyID == companyId
                                                          select c).SingleOrDefault <CompanyInSubscriptionPlan>();

                if (existingData == null)
                {
                    throw new CDSException(10302);
                }

                if (parseData.SubscriptionPlanId != null)
                {
                    existingData.SubscriptionPlanID = (int)parseData.SubscriptionPlanId;
                }

                if (parseData.SubscriptionName != null)
                {
                    existingData.SubscriptionName = parseData.SubscriptionName;
                }

                if (parseData.RatePer1KMessageIngestion.HasValue)
                {
                    existingData.RatePer1KMessageIngestion = (double)parseData.RatePer1KMessageIngestion;
                }

                if (parseData.RatePer1KMessageHotStore.HasValue)
                {
                    existingData.RatePer1KMessageHotStore = (double)parseData.RatePer1KMessageHotStore;
                }

                if (parseData.RatePer1KMessageHotStore.HasValue)
                {
                    existingData.RatePer1KMessageColdStore = (double)parseData.RatePer1KMessageColdStore;
                }

                if (parseData.StartDate.HasValue)
                {
                    existingData.StartDate = (DateTime)parseData.StartDate;
                }
                if (parseData.ExpiredDate.HasValue)
                {
                    existingData.ExpiredDate = (DateTime)parseData.ExpiredDate;
                }


                if (parseData.MaxMessageQuotaPerDay.HasValue)
                {
                    existingData.MaxMessageQuotaPerDay = (int)parseData.MaxMessageQuotaPerDay;
                }

                if (parseData.StoreHotMessage.HasValue)
                {
                    parseData.StoreHotMessage = (bool)parseData.StoreHotMessage;
                }

                if (parseData.StoreColdMessage.HasValue)
                {
                    existingData.StoreColdMessage = (bool)parseData.StoreColdMessage;
                }

                if (parseData.CosmosDBConnectionString != null)
                {
                    existingData.CosmosDBConnectionString = parseData.CosmosDBConnectionString;
                }

                if (parseData.CosmosDBName != null)
                {
                    existingData.CosmosDBName = parseData.CosmosDBName;
                }

                if (parseData.CosmosDBColletionId != null)
                {
                    existingData.CosmosDBCollectionID = parseData.CosmosDBColletionId;
                }

                if (parseData.CosmosDBCollectionTTL.HasValue)
                {
                    existingData.CosmosDBCollectionTTL = (int)parseData.CosmosDBCollectionTTL;
                }

                if (parseData.CosmosDBCollectionReservedUnits.HasValue)
                {
                    existingData.CosmosDBCollectionReservedUnits = (int)parseData.CosmosDBCollectionReservedUnits;
                }

                if (parseData.IoTHubConnectionString != null)
                {
                    existingData.IoTHubConnectionString = parseData.IoTHubConnectionString ?? "";
                }

                if (parseData.IoTHubConsumerGroup != null)
                {
                    existingData.IoTHubConsumerGroup = parseData.IoTHubConsumerGroup ?? "";
                }

                if (parseData.StorageConnectionString != null)
                {
                    existingData.StorageConnectionString = existingData.StorageConnectionString ?? "";
                }

                dbEntity.SaveChanges();
            }
        }
コード例 #6
0
        private async Task loadConfigurationFromDB(EventProcessorFactoryModel epfm)
        {
            CdsInfo cdsInfo = epfm.CdsInfo;
            IoTHub  iotHub;
            CompanyInSubscriptionPlan cisp;
            string telemetryStorageContainer;
            string eventStorageContainer;

            if (_ignoreCDS20DB)
            {
                /* For Test */
                TestSampleHelper tsHelper = new TestSampleHelper();
                iotHub = tsHelper.generateIoTHubForTest(cdsInfo.IoTHubId);

                cisp                  = new CompanyInSubscriptionPlan();
                cisp.ExpiredDate      = DateTime.UtcNow.AddMonths(1);// Test
                cisp.StoreColdMessage = true;
                cisp.StoreHotMessage  = true;
                /* Walker's Cosmos DB */
                cisp.CosmosDBConnectionString = "https://sfdev.documents.azure.com:443/;AccountKey=PHsydcvXyVdELDtWTgLvlbrP5ohuaJbMKQNNCxZKR1UPwS45qVkYiTuXR6wTm9PhnqIDe5IwUoQ0fqmk28CJww==;";// "https://sfdocumentdb.documents.azure.com:443/;AccountKey=uscYe8taxXEtIIzQjCM47T3y3F53wMn2QOPUOnZu55oBClFnzOzfd5UDSlMixgCR6aqBNbHebJmIgoSmdk2MxQ==;";
                cisp.CosmosDBName             = "db69";
                cisp.CosmosDBCollectionID     = "69";

                telemetryStorageContainer = "telemetry";
                eventStorageContainer     = "event";
            }
            else
            {
                /* For CDS 2.0 DB */
                AzureSQLHelper.IoTHubModel ioTHubModel = new AzureSQLHelper.IoTHubModel();
                iotHub = ioTHubModel.GetById(Int32.Parse(cdsInfo.IoTHubId));

                AzureSQLHelper.CompanyModel companyModel = new AzureSQLHelper.CompanyModel();
                cisp = companyModel.GetActiveSubscriptionPlanByCompanyId(Int32.Parse(cdsInfo.CompanyId));

                telemetryStorageContainer = AzureSQLHelper.SystemConfigurationModel.GetCDSConfigValueByKey("TelemetryStorageContainer");
                telemetryStorageContainer = telemetryStorageContainer == null ? "telemetry" : telemetryStorageContainer;
                eventStorageContainer     = AzureSQLHelper.SystemConfigurationModel.GetCDSConfigValueByKey("EventStorageContainer");
                eventStorageContainer     = eventStorageContainer == null ? "event" : eventStorageContainer;
            }

            if (iotHub == null)
            {
                _consoleLog.Info("IoTHub Not Found. IoTHubId:{0}", cdsInfo.IoTHubId);
                _consoleLog.BlobLogError("IoTHub Not Found. IoTHubId:{0}", cdsInfo.IoTHubId);
                throw new Exception("IoTHub Not Found");
            }
            if (cisp == null)
            {
                _consoleLog.Info("NO Actived CompanyInSubscriptionPlan. CompanyId:{0}", cdsInfo.CompanyId);
                _consoleLog.BlobLogError("NO Actived CompanyInSubscriptionPlan. CompanyId:{0}", cdsInfo.CompanyId);
                throw new Exception("NO Actived CompanyInSubscriptionPlan");
            }

            /* IoTHubAlias */
            cdsInfo.IoTHubAlias = iotHub.IoTHubName;

            /* CompanyInSubscriptionPlan */
            cdsInfo.CompanyInSubscriptionPlan = cisp;

            /* Load the message schema from IoT Hub devices */
            epfm.SimpleIoTDeviceMessageCatalogList = findAllMessageCatalogIdInIoTDevices(iotHub.IoTDevice);

            /* Load the message JSON transformer from IoT Hub devices */
            epfm.MessageTransformerInDeviceId = findAllMessageTransformers(iotHub.IoTDevice);

            /* Load Alarm Rules */
            epfm.EventRulesInMessageId = findAllEventRules(iotHub);

            /* Load Monitor Frequence In MinSec By MessageId */
            epfm.MonitorFrequenceInMinSecByMessageId = findMonitorFrequenceInMinSecByMessageId(iotHub.IoTDevice);

            /* Load IoT Hub configuration */
            _CompatibleEventHub = findCompatibleEventHub(iotHub);

            /* Cosmos DB Helper */
            epfm.docDBHelper = await createDocDBHelper(cdsInfo.CompanyInSubscriptionPlan);

            /* Blob Helper */
            epfm.TelemetryBlobStorageHelper = new BlobStorageHelper(_CompatibleEventHub.StorageConnectionString, telemetryStorageContainer);
            epfm.EventBlobStorageHelper     = new BlobStorageHelper(_CompatibleEventHub.StorageConnectionString, eventStorageContainer);

            /* Service Bus Helper */
            CdsBackendSetting cdsBackendSetting = cdsInfo.cdsBackendSetting;

            epfm.EventQueueClient = QueueClient.CreateFromConnectionString(cdsBackendSetting.ServiceBusConnectionString, cdsBackendSetting.ServiceBusEventActionQueue);
            epfm.InfraQueueClient = QueueClient.CreateFromConnectionString(cdsBackendSetting.ServiceBusConnectionString, cdsBackendSetting.ServiceBusProvisionQueue);
        }