Example #1
0
 public ScenarioResultsController(ISalesAreaRepository salesAreaRepository, IRunRepository runRepository, IFailuresRepository failuresRepository,
                                  IScenarioResultRepository scenarioResultRepository, IResultsFileRepository resultsFileRepository, IOutputFileRepository outputFileRepository,
                                  IRecommendationRepository recommendationRepository, ICampaignRepository campaignRepository, IProductRepository productRepository, IMapper mapper,
                                  IClashRepository clashRepository, IScenarioRepository scenarioRepository, IScenarioCampaignResultRepository scenarioCampaignResultRepository,
                                  IScenarioCampaignFailureRepository scenarioCampaignFailureRepository, IFunctionalAreaRepository functionalAreaRepository,
                                  ITenantSettingsRepository tenantSettingsRepository, IFactory storageClientFactory, AWSSettings awsSettings,
                                  IRecommendationAggregator recommendationAggregator, IScenarioCampaignResultReportCreator scenarioCampaignResultReportCreator,
                                  IKPICalculationScopeFactory kpiCalculationScopeFactory)
 {
     _salesAreaRepository              = salesAreaRepository;
     _runRepository                    = runRepository;
     _scenarioResultRepository         = scenarioResultRepository;
     _resultsFileRepository            = resultsFileRepository;
     _outputFileRepository             = outputFileRepository;
     _failuresRepository               = failuresRepository;
     _recommendationRepository         = recommendationRepository;
     _campaignRepository               = campaignRepository;
     _productRepository                = productRepository;
     _clashRepository                  = clashRepository;
     _scenarioRepository               = scenarioRepository;
     _scenarioCampaignResultRepository = scenarioCampaignResultRepository;
     _mapper = mapper;
     _tenantSettingsRepository          = tenantSettingsRepository;
     _scenarioCampaignFailureRepository = scenarioCampaignFailureRepository;
     _functionalAreaRepository          = functionalAreaRepository;
     _storageClientFactory                = storageClientFactory;
     _awsSettings                         = awsSettings;
     _recommendationAggregator            = recommendationAggregator;
     _scenarioCampaignResultReportCreator = scenarioCampaignResultReportCreator;
     _kpiCalculationScopeFactory          = kpiCalculationScopeFactory;
 }
Example #2
0
        /// <summary>
        /// Returns RunModel for run
        /// </summary>
        /// <param name="run"></param>
        /// <param name="scenarioRepository"></param>
        /// <param name="passRepository"></param>
        /// <param name="tenantSettingsRepository"></param>
        /// <param name="allCampaigns"></param>
        /// <param name="functionalAreaRepository"></param>
        /// <returns></returns>
        public static RunModel MapToRunModel(Run run, IScenarioRepository scenarioRepository, IPassRepository passRepository,
                                             ITenantSettingsRepository tenantSettingsRepository, IMapper mapper,
                                             IAnalysisGroupRepository analysisGroupRepository,
                                             IFunctionalAreaRepository functionalAreaRepository = null,
                                             IScenarioCampaignMetricRepository scenarioCampaignMetricRepository = null,
                                             List <CampaignWithProductFlatModel> allCampaigns = null,
                                             List <Pass> passesFromDb = null, List <Scenario> scenariosFromDb = null)
        {
            // Get scenarios for run
            var scenarios = scenariosFromDb ?? scenarioRepository.FindByIds(run.Scenarios.Select(s => s.Id)).ToList();

            // Get passes for run
            var passes = passesFromDb ?? passRepository.FindByIds(scenarios.SelectMany(s => s.Passes).Select(p => p.Id).Distinct()).ToList();

            var analysisGroups = run.AnalysisGroupTargets.Any()
                ? analysisGroupRepository.GetByIds(run.AnalysisGroupTargets.Select(x => x.AnalysisGroupId).ToArray()).ToDictionary(x => x.Id)
                : new Dictionary <int, AnalysisGroupNameModel>();

            // Get default ScenarioId
            var defaultScenarioId = tenantSettingsRepository.GetDefaultScenarioId();

            if (run.RunStatus == RunStatus.NotStarted && allCampaigns != null && allCampaigns.Any())
            {
                // Since the run has not already started amend Run Scenarios
                // with CampaignPassPriorities for new Campaigns and remove
                // CampaignPassPriorities of deleted Campaigns
                CampaignPassPrioritiesServiceMapper.AmendCampaignPassPriorities(
                    scenarios,
                    passes,
                    allCampaigns,
                    passRepository,
                    mapper);
            }

            var runModel = mapper.Map <RunModel>(Tuple.Create(run, scenarios, passes, analysisGroups, defaultScenarioId));

            if (run.RunStatus == RunStatus.Complete)
            {
                ApplyFunctionalAreaFaultTypesToRunModel(runModel, run, functionalAreaRepository);
            }

            if (scenarioCampaignMetricRepository != null)
            {
                runModel.Scenarios.ForEach(s => ApplyKPIsToScenarioCampaigns(s, scenarioCampaignMetricRepository));
            }

            return(runModel);
        }
Example #3
0
 public FunctionalAreasController(IFunctionalAreaRepository functionalAreaRepository, IMapper mapper)
 {
     _functionalAreaRepository = functionalAreaRepository;
     _mapper = mapper;
 }
Example #4
0
        //private void GenerateJSON()
        //{
        //    List<FunctionalArea> functionalAreas = _functionalAreaRepository.GetAll().ToList();
        //    foreach (string language in new string[] { "ENG", "ARA" })
        //    {
        //        StringBuilder json = new StringBuilder("[" + Environment.NewLine);
        //        foreach (FunctionalArea functionalArea in functionalAreas)
        //        {
        //            json.Append(GenerateJSON(functionalArea, language));
        //        }
        //        json.AppendLine("]");

        //        System.IO.File.WriteAllText(Path.Combine(string.Format(@"C:\Temp\FunctionalAreas-{0}.json", language)), json.ToString());
        //    }
        //}

        //private string GenerateJSON(FunctionalArea functionalArea, string language)
        //{
        //    Char quotes = '\"';
        //    StringBuilder json = new StringBuilder("\t{" + Environment.NewLine);
        //    json.AppendLine(string.Format("\t\t{0}{1}{0}: ", quotes, functionalArea.Id.ToString()) + "{" + Environment.NewLine +
        //                    string.Format("\t\t\t{0}description{0}: {0}{1}{0},", quotes, functionalArea.Description[language]) + Environment.NewLine +
        //                    string.Format("\t\t\t{0}items{0}: ", quotes) + "{");

        //    foreach(FaultType faultType in functionalArea.FaultTypes)
        //    {
        //        json.Append(string.Format("\t\t\t\t{0}{1}{0}: {0}{2}{0}", quotes, faultType.Id, faultType.Description[language]));
        //        if (faultType != functionalArea.FaultTypes.Last())
        //        {
        //            json.Append(",");
        //        }
        //        json.Append(Environment.NewLine);
        //    }
        //    json.AppendLine("\t\t\t}");
        //    json.AppendLine("\t\t}");
        //    json.AppendLine("\t},");

        //    /*
        //    {
        //        “cbbba5e3 - 298c - 49a7 - b384 - 35a6f9a8f1d0”: {
        //        “description”: “Campaign Requirement”,
        //        “items”: {
        //            “1”: “Outside Campaign Strike Weights”,
        //            “2”: “Programme not in Requirement”
        //          }
        //        }
        //    }
        //    */
        //    return json.ToString();
        //}

        /// <summary>
        /// Loads functional area data to repository from CSV
        /// </summary>
        /// <param name="inputFile"></param>
        /// <param name="languages"></param>
        /// <param name="funtionalAreaRepository"></param>
        private void LoadFunctionalAreasFromCSV(string inputFile, string[] languages, IFunctionalAreaRepository funtionalAreaRepository)
        {
            if (!File.Exists(inputFile))
            {
                return;
            }

            List <FunctionalArea> functionalAreas = new List <FunctionalArea>();
            Char delimiter = (Char)9;

            using (StreamReader reader = new StreamReader(inputFile))
            {
                int rowCount = 0;
                while (!reader.EndOfStream)
                {
                    rowCount++;
                    if (rowCount > 1)       // Ignore header
                    {
                        string[]  values    = reader.ReadLine().Split(delimiter);
                        FaultType faultType = new FaultType()
                        {
                            Id = Convert.ToInt32(values[0])
                        };
                        foreach (string language in languages)
                        {
                            faultType.Description.Add(language, values[1].Trim());
                        }
                        string functionalAreaDescription = values[2].Trim();

                        FunctionalArea functionalArea = null;
                        foreach (FunctionalArea currentFunctionalArea in functionalAreas)
                        {
                            if (currentFunctionalArea.Description[languages[0]].ToUpper() == functionalAreaDescription.ToUpper())
                            {
                                functionalArea = currentFunctionalArea;
                                break;
                            }
                        }

                        if (functionalArea == null)    // New functional area
                        {
                            functionalArea = new FunctionalArea()
                            {
                                Id = Guid.NewGuid()
                            };
                            foreach (string language in languages)
                            {
                                functionalArea.Description.Add(language, functionalAreaDescription);
                            }
                            functionalAreas.Add(functionalArea);
                        }
                        functionalArea.FaultTypes.Add(faultType);
                    }
                }
                reader.Close();
            }

            // Save
            foreach (FunctionalArea functionalArea in functionalAreas)
            {
                funtionalAreaRepository.Add(functionalArea);
            }
        }
Example #5
0
        private static void ApplyFunctionalAreaFaultTypesToRunModel(RunModel runModel, Run run, IFunctionalAreaRepository functionalAreaRepository)
        {
            if (run.FailureTypes == null || !run.FailureTypes.Any())
            {
                return;
            }

            var selectedFaultTypes = functionalAreaRepository.FindFaultTypes(run.FailureTypes);

            if (selectedFaultTypes != null && selectedFaultTypes.Any())
            {
                runModel.FaultTypes = selectedFaultTypes.Select(sft => new RunFaultTypeModel
                {
                    Id          = sft.Id,
                    Description = sft.Description?.FirstOrDefault(e => e.Key == "ENG").Value
                });
            }
        }
 public FunctionalAreaDomainModelHandler(IFunctionalAreaRepository functionalAreaRepository, ISqlServerTenantDbContext dbContext)
 {
     _functionalAreaRepository = functionalAreaRepository ?? throw new ArgumentNullException(nameof(functionalAreaRepository));
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
 }