Exemple #1
0
        private async Task RefreshTokens(CancellationToken cancellationToken)
        {
            _log.LogInformation("Refreshing Tokens");
            var mappings = await _mappingStorage.GetAllMappings(cancellationToken);

            foreach (var mapping in mappings)
            {
                try
                {
                    var externalToken = await RenewExternalToken(mapping, cancellationToken);

                    if (!mapping.PEXExternalAPIToken.Equals(externalToken, StringComparison.InvariantCultureIgnoreCase))
                    {
                        mapping.PEXExternalAPIToken = externalToken;
                        mapping.LastRenewedUtc      = DateTime.UtcNow;
                        await _mappingStorage.UpdateAsync(mapping, cancellationToken);
                    }
                    if (!_inUseExternalApiTokens.Contains(mapping.PEXExternalAPIToken))
                    {
                        _inUseExternalApiTokens.Add(mapping.PEXExternalAPIToken);
                    }
                }
                catch (Exception ex)
                {
                    _log.LogError(ex,
                                  $"Exception during renew external token for business {mapping.PEXBusinessAcctId}. {ex}");
                }
            }
        }
        public async Task <ActionResult> CreateAplosToken(string sessionId, [FromBody] AplosTokenRequestModel model, CancellationToken cancellationToken)
        {
            if (!Guid.TryParse(sessionId, out var sessionGuid))
            {
                return(BadRequest());
            }

            PexOAuthSessionModel session = await _pexOAuthSessionStorage.GetBySessionGuidAsync(sessionGuid, cancellationToken);

            if (session == null)
            {
                return(Unauthorized());
            }

            Pex2AplosMappingModel mapping = await _pex2AplosMappingStorage.GetByBusinessAcctIdAsync(session.PEXBusinessAcctId, cancellationToken);

            if (!string.IsNullOrWhiteSpace(model.AplosClientId))
            {
                mapping.AplosClientId = model.AplosClientId;
            }

            if (!string.IsNullOrWhiteSpace(model.AplosPrivateKey))
            {
                mapping.AplosPrivateKey = model.AplosPrivateKey;
            }

            bool result = await _aplosIntegrationService.ValidateAplosApiCredentials(mapping, cancellationToken);

            if (!result)
            {
                return(BadRequest());
            }

            await _pex2AplosMappingStorage.UpdateAsync(mapping, cancellationToken);

            return(Ok());
        }
        public async Task <IActionResult> SaveSettings(string sessionId, [FromBody] MappingSettingsModel settings, CancellationToken cancellationToken)
        {
            if (!Guid.TryParse(sessionId, out var sessionGuid))
            {
                return(BadRequest());
            }

            var session = await _pexOAuthSessionStorage.GetBySessionGuidAsync(sessionGuid, cancellationToken);

            if (session == null)
            {
                return(Unauthorized());
            }

            var pexAcctId = session.PEXBusinessAcctId;

            var mapping = await _pex2AplosMappingStorage.GetByBusinessAcctIdAsync(pexAcctId, cancellationToken);

            mapping.UpdateFromSettings(settings);

            await _pex2AplosMappingStorage.UpdateAsync(mapping, cancellationToken);

            return(Ok());
        }