public AccountService(AppDbContext appDbContext, IOptions <AppSettings> settings, IHttpContextAccessor httpContextAccessor, IOptions <EIDValidation> eidSettings, IMapper mapper, RandomStringGeneratorService randomStringGenerator, PasswordHashing hashing, IProfilePercentageCalculationService percentageCalculationService, IEmailService emailService, IUserIPAddress userIPAddress) { _appDbContext = appDbContext; _mapper = mapper; _randomStringGenerator = randomStringGenerator; _hashing = hashing; _percentageCalculationService = percentageCalculationService; _emailService = emailService; _settings = settings.Value; _eidSettings = eidSettings.Value; _httpContextAccessor = httpContextAccessor; _userIPAddress = userIPAddress; }
public async Task <CitizinType> CheckEID(string eid) { try { var appSetting = new EIDValidation() { user_name = _eidSettings.user_name, password = _eidSettings.password, gsb_apikey = _eidSettings.gsb_apikey, }; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } UserName: {_eidSettings.user_name} Password: {_eidSettings.password} GSB_APIKey: {_eidSettings.gsb_apikey}"); BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = "CitizenVerification_bind"; binding.Security.Mode = BasicHttpSecurityMode.Transport; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; EndpointAddress endpoint = new EndpointAddress("https://integrate-test.gsb.government.net.ae/ws/verifyCitizenEligibility_ICA.verifyCitizenEligibility_ICAsoaphttp/1.0"); CitizenVerification_pttClient verificationPttClient = new CitizenVerification_pttClient(binding, endpoint); verificationPttClient.ClientCredentials.UserName.UserName = appSetting.user_name; verificationPttClient.ClientCredentials.UserName.Password = appSetting.password; using (new OperationContextScope((IContextChannel)verificationPttClient.InnerChannel)) { HttpRequestMessageProperty requestMessageProperty = new HttpRequestMessageProperty(); requestMessageProperty.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(verificationPttClient.ClientCredentials.UserName.UserName + ":" + verificationPttClient.ClientCredentials.UserName.Password)); requestMessageProperty.Headers["GSB-APIKey"] = appSetting.gsb_apikey; OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = (object)requestMessageProperty; CitizenVerificationResponse verificationResponse1 = new CitizenVerificationResponse(); try { CitizenVerificationResponse verificationResponse2 = verificationPttClient.CitizenVerification(new CitizenVerificationRequest() { EmiratesIDNumber = eid }); if (verificationResponse2.VerificationResult == ResultType.Eligible) { return(CitizinType.Citizen); } if (verificationResponse2.VerificationResult == ResultType.NotEligible) { return(CitizinType.Expat); } if (verificationResponse2.VerificationResult == ResultType.NoDataFound) { return(CitizinType.NotFound); } throw new Exception("Unknown Verification Result received from the API."); } catch (Exception ex) { logger.Error(ex); return(CitizinType.APINotWorking); } } } catch (Exception ex) { logger.Error(ex); throw ex; } }