示例#1
0
        public async Task <VmPage <VmScenarioSummary> > GetAll([FromQuery] ScenarioSummaryApiParams scenarioSummaryParams)
        {
            if (!ModelState.IsValid)
            {
                throw new HttpStatusCodeException(HttpStatusCode.BadRequest, ModelState.Errors());
            }

            var validFilters = scenarioSummaryParams.GetValidFilters();

            var sorts = scenarioSummaryParams.GetSorts();

            var results = await _scenarioWebService.GetAll(
                validFilters,
                sorts,
                scenarioSummaryParams.PageIndex,
                scenarioSummaryParams.PageLimit
                );

            return(new VmPage <VmScenarioSummary>
            {
                Items = VmScenarioSummary.Build(results),
                PageIndex = results.PageIndex,
                PageSize = results.PageSize,
                TotalCount = results.Total
            });
        }
示例#2
0
        public async Task <VmScenarioSummary> Get(int scenarioId, int clientId = 0)
        {
            if (scenarioId <= 0)
            {
                throw new HttpStatusCodeException(HttpStatusCode.BadRequest);
            }

            if (!_organisationDataProvider.ScenarioIds.Contains(scenarioId))
            {
                throw new HttpStatusCodeException(HttpStatusCode.Unauthorized);
            }

            var result = await _scenarioWebService.Get(clientId, scenarioId);

            return(VmScenarioSummary.Build(result));
        }
示例#3
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);
        }