public static SmScenarioSummary Build(ScenarioSummary entity) { return(new SmScenarioSummary { ScenarioId = entity.ScenarioId, ScenarioName = entity.ScenarioName, Status = (ScenarioSummaryStatusType)entity.ScenarioSummaryStatusTypeId, LastGroupType = (FunctionGroupType)entity.LastGroupTypeId, LastFunctionInstanceId = entity.LastFunctionInstanceId, FunctionInstanceCount = entity.FunctionInstanceCount, FunctionInstanceCountTotal = entity.FunctionInstanceCountTotal, ProductTotal = entity.ProductTotal, ProductCount = entity.ProductCount, RecommendationCount = entity.RecommendationCount, AttemptCountMin = entity.AttemptCountMin, AttemptCountAvg = entity.AttemptCountAvg, AttemptCountMax = entity.AttemptCountMax, Duration = entity.Duration, SuccessCount = entity.SuccessCount, ErrorCount = entity.ErrorCount, LastRunDate = entity.LastRunDate, //New scenario list elements ProductsCost = entity.ProductsCost, ProductsAcceptedCost = entity.ProductsAcceptedCost, ProductsAcceptedCount = entity.ProductsAcceptedCount, ProductsRejectedCount = entity.ProductsRejectedCount, ProductsRevisedCount = entity.ProductsRevisedCount, ProductsAcceptedPercentage = entity.ProductsAcceptedPercentage, ProductsRejectedPercentage = entity.ProductsRejectedPercentage, ProductsRevisedPercentage = entity.ProductsRevisedPercentage, ProductsEstimatedProfit = entity.ProductsEstimatedProfit, ProductsEstimatedSales = entity.ProductsEstimatedSales, ProductsAverageDepth = entity.ProductsAverageDepth, ProductsMarkdownCost = entity.ProductsMarkdownCost, ProductsTerminalStock = entity.ProductsTerminalStock, OrganisationId = entity.OrganisationId, Scenario = SmScenario.Build(entity.Scenario) }); }
public void Construct(ScenarioSummary summary) { Instantiate(this.rowPrefab, this.rowContainer) .Construct(I18N.Instance.Get("ui_summary_rounds"), summary.Rounds.ToString()); Instantiate(this.rowPrefab, this.rowContainer) .Construct(I18N.Instance.Get("ui_summary_damage_dealt"), $"{summary.DamageDealt:F0} ({summary.DamagePerRound:F0})"); Instantiate(this.rowPrefab, this.rowContainer) .Construct(I18N.Instance.Get("ui_summary_damage_taken"), $"{summary.DamageTaken:F0} ({summary.DamageTakenPerRound:F0})"); Instantiate(this.rowPrefab, this.rowContainer) .Construct(I18N.Instance.Get("ui_summary_healing"), $"{summary.Healing:F0} ({summary.HealingPerRound:F0})"); }
/// <summary> /// パスからシナリオ情報を取得する /// </summary> /// <param name="path">シナリオのディレクトリ、またはアーカイブファイルの絶対パス</param> /// <returns>シナリオ情報</returns> public static ScenarioSummary GetScenarioSummary(string path) { var scenarioMetaData = GetScenarioMetaData(path); // Summary.wsmを取りに行く SummaryWsmBinary wsmBinary; try { wsmBinary = GetSummaryWsmBinary(scenarioMetaData); } catch (FileNotFoundException) { wsmBinary = null; } catch (Exception ex) { throw ex; } // Summary.xmlを取りに行く SummaryXmlBinary xmlBinary; try { xmlBinary = GetSummaryXmlBinary(scenarioMetaData); } catch (FileNotFoundException) { xmlBinary = null; } catch (Exception ex) { throw ex; } // Summary.wsmもSummary.xmlも見つからない場合は例外を投げる if (wsmBinary == null && xmlBinary == null) { throw new InvalidScenarioException($"The Summary file (Summary.wsm, Summary.xml) was not found in the path '{path}'."); } // 複数のSummaryファイルが見つかった時はSummary.wsmを優先する if (wsmBinary != null) { try { using (SummaryWsmBinaryReader wsmReader = new SummaryWsmBinaryReader(wsmBinary)) { SummaryWsm summaryWsm = wsmReader.Read(); ScenarioSummary scenarioSummary = ConvertToScenarioSummary(summaryWsm, scenarioMetaData); return(scenarioSummary); } } catch (Exception ex) { throw new InvalidScenarioException($"Failed to read Summary.wsm with path '{path}'.", ex); } } else { try { var xmlReader = new SummaryXmlBinaryReader(xmlBinary); var summaryXml = xmlReader.Read(); var scenarioSummary = ConvertToScenarioSummary(summaryXml, scenarioMetaData); return(scenarioSummary); } catch (Exception ex) { throw new InvalidScenarioException($"Failed to read Summary.xml with path '{path}'.", ex); } } }
public void GetReturnsNewPartitionScenarioSummary() { // Arrange var scenarioEntity = new Scenario { ScenarioId = 100, ScenarioName = "ScenarioName", OrganisationId = 111, Week = 100, ScheduleMask = 255, ScheduleWeekMin = 100, ScheduleWeekMax = 107, ScheduleStageMin = 1, ScheduleStageMax = 4, StageMax = 4, StageOffsetMax = 8, PriceFloor = null, MarkdownCountStartWeek = 800, DefaultMarkdownType = 255, AllowPromoAsMarkdown = false, MinimumPromoPercentage = 0M }; var summaryEntity = new ScenarioSummary { Scenario = scenarioEntity, ScenarioId = scenarioEntity.ScenarioId, ScenarioName = scenarioEntity.ScenarioName, Duration = 0, ErrorCount = 0, RecommendationCount = 0, ProductCount = 2, LastRunDate = null, SuccessCount = 0, ProductTotal = 0, AttemptCountAvg = 0, AttemptCountMax = 0, AttemptCountMin = 0, LastFunctionInstanceId = null, FunctionInstanceCount = 1, FunctionInstanceCountTotal = 1, LastGroupTypeId = (int)Common.Enums.FunctionGroupType.Partition, LastGroupTypeName = Common.Enums.FunctionGroupType.Partition.ToString(), ScenarioSummaryStatusTypeName = ScenarioSummaryStatusType.New.ToString(), ScenarioSummaryStatusTypeId = ScenarioSummaryStatusType.New }; var expected = new VmScenarioSummary { CustomerId = scenarioEntity.OrganisationId, ScenarioId = scenarioEntity.ScenarioId, ScenarioName = scenarioEntity.ScenarioName, Status = ScenarioSummaryStatusType.New, Duration = summaryEntity.Duration, PartitionErrorCount = summaryEntity.ErrorCount, PartitionSuccessCount = summaryEntity.SuccessCount, PartitionCount = summaryEntity.FunctionInstanceCount, PartitionTotal = summaryEntity.FunctionInstanceCountTotal, LastRunDate = summaryEntity.LastRunDate, RecommendationCount = summaryEntity.RecommendationCount, TotalNumberRecommendedProducts = summaryEntity.ProductCount, PriceFloor = scenarioEntity.PriceFloor, Week = scenarioEntity.Week, ScheduleMask = scenarioEntity.ScheduleMask, StageMax = scenarioEntity.StageMax, StageOffsetMax = scenarioEntity.StageOffsetMax, ScheduleWeekMin = scenarioEntity.ScheduleWeekMin, ScheduleWeekMax = scenarioEntity.ScheduleWeekMax, ScheduleStageMin = scenarioEntity.ScheduleStageMin, ScheduleStageMax = scenarioEntity.ScheduleStageMax, MarkdownCountStartWeek = scenarioEntity.MarkdownCountStartWeek }; var scenarioRepository = new Mock <IScenarioRepository>(); var scenarioSummaryRepository = new Mock <IScenarioSummaryRepository>(); var scenarioHierarchyFilterRepository = new Mock <IScenarioHierarchyFilterRepository>(); var scenarioProductFilterRepository = new Mock <IScenarioProductFilterRepository>(); var scenarioWebService = new ScenarioWebService(scenarioRepository.Object, scenarioSummaryRepository.Object, scenarioProductFilterRepository.Object, scenarioHierarchyFilterRepository.Object); scenarioSummaryRepository.Setup(x => x.GetSingle(scenarioEntity.OrganisationId, scenarioEntity.ScenarioId)).ReturnsAsync(summaryEntity); var scenarioController = new ScenarioController(_hierarchyServiceMock.Object, scenarioWebService, _recommendationServiceMock.Object, _fileUploadServiceMock.Object, _organisationDataProvider.Object); // Act var actual = scenarioController.Get(scenarioEntity.ScenarioId, scenarioEntity.OrganisationId).Result; // Assert actual.ShouldBeEquivalentTo(expected); }