Exemple #1
0
        private Either <MeasurementError, MeasurementDto> RunMeasurementIntegration(long installationExternalId)
        {
            bool isOutdated = _measurementCore.IsOutdatedByInstallationExternalId(installationExternalId);

            if (!isOutdated)
            {
                return(_measurementCore.GetByExternalId(installationExternalId));
            }
            var command           = MeasurementGetByInstallationExternalIdCommand.Create(installationExternalId);
            var integrationResult = _measurementIntegration.GetMeasurementByInstallationId(command);

            // TODO flatMap on Either
            if (integrationResult.IsLeft)
            {
                return(Either <MeasurementError, MeasurementDto> .Left <MeasurementError, MeasurementDto>(integrationResult.GetLeft));
            }
            return(_measurementCore.Update(integrationResult.Get));
        }
 // TODO includeWind, indexType
 public static GetMeasurementByInstallationIdRequest FromCommand(MeasurementGetByInstallationExternalIdCommand command)
 => GetMeasurementByInstallationIdRequest.Create(command.InstallationExternalId);
Exemple #3
0
 public Either <MeasurementError, MeasurementCreateCommand> GetMeasurementByInstallationId(MeasurementGetByInstallationExternalIdCommand command)
 {
     return(TracedOperation.CallSync
            (
                _logger,
                ClientOperationType.GetMeasurementByInstallationId,
                command,
                () => SynchronizeHttpCall // TODO move this to `TracedOperationClass` cos like that it kills a purpose of this class xD
                (
                    _airlyClient.GetMeasurementByInstallationId(AirMonitorToAirlyClientMeasurementAdapter.FromCommand(command))
                )
            )
            .Map(AirlyClientToAirMonitorMeasurementAdapter.FromApi)
            .Peek(createCommand => createCommand.ExternalId = command.InstallationExternalId)
            .MapLeft(AirlyClientToAirMonitorMeasurementAdapter.ErrorFromResponse));
 }