Ejemplo n.º 1
0
        /// <summary>
        /// Register analytical module
        /// </summary>
        /// <param name="module"></param>
        public void Register(AnalyticsModuleRegistrationModel module)
        {
            CheckAvailable();
            if (_analyticsModuleRepository.Contains(module.ModuleGuid))
            {
                AnalyticsModule analyticsModule_ = _analyticsModuleRepository.GetById(module.ModuleGuid);
                analyticsModule_.LastHeardTime = DateTime.Now;
            }
            else
            {
                _analyticsModuleRepository.Add(new AnalyticsModule()
                {
                    Id            = module.ModuleGuid,
                    LastHeardTime = DateTime.Now
                });
            }
            _analyticsModuleRepository.SaveChanges();

            AnalyticsModule analyticsModule = _analyticsModuleRepository.GetById(module.ModuleGuid);

            foreach (AnalyticsOperationModel operationModel in module.Operations)
            {
                if (_analyticsOperationRepository.ContainsName(operationModel.Name))
                {
                    AnalyticsOperation analyticsOperation = _analyticsOperationRepository.GetByName(operationModel.Name);

                    if (!analyticsOperation.AnalyticsModulesOperations.Select(mo => mo.AnalyticsModule).Contains(analyticsModule))
                    {
                        AnalyticsModulesOperations moduleOperation = new AnalyticsModulesOperations()
                        {
                            AnalyticsOperation = analyticsOperation,
                            AnalyticsModule    = analyticsModule,
                            RoutingKey         = operationModel.RoutingKey
                        };
                        _modulesOperationsRepository.Add(moduleOperation);
                        analyticsModule.AnalyticsModulesOperations.Add(moduleOperation);
                        analyticsOperation.AnalyticsModulesOperations.Add(moduleOperation);
                    }
                }
                else
                {
                    AnalyticsOperation operation = new AnalyticsOperation()
                    {
                        Id          = Guid.NewGuid(),
                        Name        = operationModel.Name,
                        Description = operationModel.Description,
                        RoutingKey  = "*." + operationModel.RoutingKey.Split('.').Last()
                    };
                    AnalyticsModulesOperations moduleOperation = new AnalyticsModulesOperations()

                    {
                        AnalyticsOperation = operation,
                        AnalyticsModule    = analyticsModule,
                        RoutingKey         = operationModel.RoutingKey
                    };
                    _modulesOperationsRepository.Add(moduleOperation);
                    analyticsModule.AnalyticsModulesOperations.Add(moduleOperation);
                    operation.AnalyticsModulesOperations.Add(moduleOperation);

                    _analyticsOperationRepository.Add(operation);
                }
            }
            _analyticsOperationRepository.SaveChanges();
            //_analyticsModuleRepository.SaveChanges();
            //_modulesOperationsRepository.SaveChanges();
        }
 public AnalyticModuleRegistrationRequestEvent(AnalyticsModuleRegistrationModel module) : base()
 {
     Module = module;
 }