예제 #1
0
        public async Task <ActionResult <CompactionTemperatureSummaryResult> > GetTemperatureSummary(
            [FromQuery] Guid projectUid,
            [FromQuery] Guid?filterUid)
        {
            Log.LogInformation($"{nameof(GetTemperatureSummary)}: " + Request.QueryString);

            var validationResult = await ValidateFilterAgainstProjectExtents(projectUid, filterUid);

            if (!validationResult.isValidFilterForProjectExtents)
            {
                return(Ok(new CompactionTemperatureSummaryResult()));
            }

            var projectId       = GetLegacyProjectId(projectUid);
            var projectSettings = GetProjectSettingsTargets(projectUid);

            var filter = validationResult.filterResult == null?GetCompactionFilter(projectUid, filterUid) : Task.FromResult(validationResult.filterResult);

            await Task.WhenAll(projectId, projectSettings, filter);

            var temperatureSettings = SettingsManager.CompactionTemperatureSettings(projectSettings.Result, false);
            var liftSettings        = SettingsManager.CompactionLiftBuildSettings(projectSettings.Result);

            var request = new TemperatureRequest(projectId.Result, projectUid, null, temperatureSettings, liftSettings, filter.Result, -1, null, null, null);

            request.Validate();

            try
            {
                var result = await RequestExecutorContainerFactory
                             .Build <SummaryTemperatureExecutor>(LoggerFactory,
                                                                 configStore : ConfigStore, trexCompactionDataProxy : TRexCompactionDataProxy, customHeaders : CustomHeaders,
                                                                 userId : GetUserId(), fileImportProxy : FileImportProxy)
                             .ProcessAsync(request) as TemperatureSummaryResult;

                var temperatureSummaryResult = new CompactionTemperatureSummaryResult(result);
                Log.LogInformation($"{nameof(GetTemperatureSummary)} result: " + JsonConvert.SerializeObject(temperatureSummaryResult));

                await SetCacheControlPolicy(projectUid);

                return(Ok(temperatureSummaryResult));
            }
            catch (ServiceException exception)
            {
                Log.LogError($"{nameof(GetTemperatureSummary)}: {exception.GetResult.Message} ({exception.GetResult.Code})");
                return(BadRequest(new ContractExecutionResult(exception.GetResult.Code, exception.GetResult.Message)));
            }
            finally
            {
                Log.LogInformation($"{nameof(GetTemperatureSummary)} returned: " + Response.StatusCode);
            }
        }
예제 #2
0
        public void CreateTemperatureSummaryResult_Should_return_null_object_When_TotalAreaCoveredSqMeters_is_null()
        {
            var temperatureSummaryResult = new TemperatureSummaryResult(
                new TemperatureTargetData
            {
                MinTemperatureMachineTarget = 1,
                MaxTemperatureMachineTarget = 2,
                TargetVaries = false
            },
                3, 0, 5, 6, 7);
            var result = new CompactionTemperatureSummaryResult(temperatureSummaryResult);

            Assert.IsNotNull(result);
            Assert.AreEqual(ContractExecutionResult.DefaultMessage, result.Message);
            Assert.IsNull(result.SummaryData);
        }
예제 #3
0
        public void CreateTemperatureSummaryResult_Should_return_full_object_When_TotalAreaCoveredSqMeters_is_not_null()
        {
            var temperatureSummaryResult = new TemperatureSummaryResult(
                new TemperatureTargetData
            {
                MinTemperatureMachineTarget = 1,
                MaxTemperatureMachineTarget = 2,
                TargetVaries = false
            },
                3, 3256.4, 4, 5, 6);

            var result = new CompactionTemperatureSummaryResult(temperatureSummaryResult);

            Assert.IsNotNull(result);
            Assert.AreEqual(ContractExecutionResult.DefaultMessage, result.Message);

            Assert.AreEqual(3256.4, result.SummaryData.TotalAreaCoveredSqMeters);
            Assert.AreEqual(5, result.SummaryData.PercentEqualsTarget);
            Assert.AreEqual(4, result.SummaryData.PercentGreaterThanTarget);
            Assert.AreEqual(6, result.SummaryData.PercentLessThanTarget);
            Assert.IsNotNull(result.SummaryData.TemperatureTarget);
            Assert.AreEqual(0.1, result.SummaryData.TemperatureTarget.MinTemperatureMachineTarget);
            Assert.AreEqual(0.2, result.SummaryData.TemperatureTarget.MaxTemperatureMachineTarget);
        }