Пример #1
0
        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)
            });
        }
Пример #2
0
        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})");
        }
Пример #3
0
        /// <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);
                }
            }
        }
Пример #4
0
        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);
        }