private TokenState TokenState(AvihangTokens avihangTokens) { if (avihangTokens == null) { return(Framework.Utility.TokenState.Empty); } else { TimeSpan timeSpan = DateTime.Now - (DateTime)avihangTokens.UpdatedDate; if (timeSpan.TotalSeconds + 300 < (avihangTokens.ttl) * 60 * 60) { return(Framework.Utility.TokenState.Ok); } else { return(Framework.Utility.TokenState.Expired); } } }
public async Task <AvihangTokens> GetToken(int terminalId) { AuthResponse authResponse = new AuthResponse(); AvihangTokens avihangTokens = new AvihangTokens(); try { avihangTokens = _avihangTokensRepository.GetByTerminalId(terminalId.ToString()).Result; if (TokenState(avihangTokens) != Framework.Utility.TokenState.Ok) { var providers = _providersRepository.GetById((int)ProviderType.Avihang).Result; var providerApis = _providerApisRepository.GetByProviderId((int)ProviderType.Avihang).Result; string ApiUrl = providerApis.Where(a => a.Id == (int)AvihangApis.Token).FirstOrDefault().Url; string Uri = $"{(providers.BaseUrl.EndsWith("/") ? providers.BaseUrl : providers.BaseUrl + "/")}{(ApiUrl.StartsWith("/") ? ApiUrl.Remove(0, 1) : ApiUrl)}"; BaseApiHeader header = new BaseApiHeader(Uri, 1, "application/json"); AuthRequest authRequest = new AuthRequest(providers.UserName, providers.Password, terminalId); var preResponse = _factory.GetChannel().CallWebApi <BaseApiHeader, AuthRequest>(header, authRequest); avihangTokens.ResDate = DateTime.Now; authResponse = Utilities.JsonTextToModel <AuthResponse>(preResponse.Content); authResponse.CopyPropertiesTo(avihangTokens); authResponse.info.CopyPropertiesTo(avihangTokens); avihangTokens.TerminalId = terminalId.ToString(); authResponse.info.terminalId = terminalId; await _avihangTokensRepository.Add(avihangTokens); await _avihangTokensRepository.CommitAsync(); } } catch (Exception ex) { _logService.LogText(ex.Message); throw; } return(avihangTokens); }