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