Example #1
0
        public GetProfileResponse GetCustomerProfileforHPID(UserAuthenticationInterchange UserAuthInterchange, TokenDetails sessionTokenDetails, bool RetainOldValues, APIMethods apiRetainOldValues)
        {
            logger.Info($"GetCustomerProfileforHPID={sessionTokenDetails.AccessToken}");
            GetProfileResponse response     = new GetProfileResponse();
            TokenDetails       sessionToken = sessionTokenDetails;


            // try to get HPID profile with existing session token
            CustomerIds idS = new CustomerIds();

            if (GetProfileBySessionToken(response, sessionToken, idS))
            {
                return(GetCustomerProfileFromHPIDAndDatabase(response, UserAuthInterchange, sessionToken, idS, RetainOldValues, apiRetainOldValues));
            }

            // if get profile failed not by expired token, but because of other errors, then do not use refresh token
            if (!response.ErrorList.Contains(Responses.Faults.HPIDInvalidToken))
            {
                return(response);
            }

            // if profile it recognized by access token, then do not use refresh token
            if (sessionToken.tokenScopeType == TokenScopeType.apiProfileGetByTokenCall)
            {
                response.ErrorList.Clear();
                response.ErrorList.Add(Responses.Faults.InvalidCredentials);
                return(response);
            }


            // try to get HPID profile with refresh token
            return(GetProfileByRefreshToken(response, sessionToken, UserAuthInterchange.UserId, UserAuthInterchange.CallerId));
        }
        public void TestXmlToCursorOrIn()
        {
            var northwind = GetContext();
            var ids1      = OrderIds.Take(50).ToArray();
            var ids2      = CustomerIds.Take(50).ToArray();
            var list      = northwind.Orders
                            .Where(order => ids1.Contains(order.OrderID) || ids2.Contains(order.Customer.CustomerID))
                            .ToList();

            Assert.AreEqual(483, list.Count);
        }
        public void TestXmlToCursorMultiple()
        {
            var northwind   = GetContext();
            var orderIds    = OrderIds.Take(160).ToArray();
            var customerIds = CustomerIds.ToArray();

            var list = northwind.Orders
                       .Where(order => orderIds.Contains(order.OrderID) && customerIds.Contains(order.Customer.CustomerID))
                       .ToList();

            Assert.AreEqual(160, list.Count);
        }
        public void NestedJoinWithXmlToCursorRewriteTest()
        {
            var northwind = this.GetContext();
            var query     = northwind.OrderDetails
                            .Join(northwind.Orders, x => x.OrderID, x => x.OrderID, (o, d) => new { Order = o, OrderDetail = d })
                            .Join(northwind.Products, x => x.Order.ProductID, x => x.ProductID, (x, p) => new { Order = x.Order, OrderDetail = x.OrderDetail, Product = p })
                            .Where(x => CustomerIds.Contains(x.OrderDetail.Customer.CustomerID))
                            .Select(x => new {
                OrderID   = x.Order.OrderID,
                ProductID = x.Product.ProductID,
                Freight   = x.OrderDetail.Freight
            });

            query.ToList();
        }
Example #5
0
        public GetProfileResponse GetCustomerProfileforHPIDTEST(UserAuthenticationInterchange UserAuthInterchange, TokenDetails sessionTokenDetails, bool RetainOldValues, APIMethods apiRetainOldValues)
        {
            GetProfileResponse response          = new GetProfileResponse();
            AccessCredentials  accessCredentials = new AccessCredentials();

            accessCredentials.AppVersion = "1.0.0.0";
            accessCredentials.CallerId   = "TESTLOGIN1.0.0.0";
            accessCredentials.LoginDate  = DateTime.UtcNow;
            response.Credentials         = accessCredentials;

            CustomerProfile customerProfile = new CustomerProfile();
            CustomerData    customerData    = new CustomerData()
            {
                Locale      = TranslationUtils.Locale(UserAuthInterchange.LanguageCode, UserAuthInterchange.CountryCode), ActiveHealth = true, Country = "US",
                CompanyName = "HP", DisplayName = "Ramdeo Angh", EmailAddress = "*****@*****.**",
                FirstName   = "Ramdeo", LastName = "Angh"
            };

            customerProfile.Country      = customerData.Country;
            customerProfile.CompanyName  = customerData.CompanyName;
            customerProfile.DisplayName  = customerData.DisplayName;
            customerProfile.EmailAddress = customerData.EmailAddress;
            customerProfile.ActiveHealth = customerData.ActiveHealth;
            customerProfile.Locale       = customerData.Locale;
            customerProfile.FirstName    = customerData.FirstName;
            customerProfile.LastName     = customerData.LastName;



            response.CustomerProfileObject = customerProfile;
            response.LoginDate             = DateTime.UtcNow;

            sessionTokenDetails                  = new TokenDetails();
            sessionTokenDetails.AccessToken      = (Guid.NewGuid().ToString());
            sessionTokenDetails.RefreshToken     = (Guid.NewGuid().ToString());
            sessionTokenDetails.RefreshTokenType = (int)TokenScopeType.userLogin;


            TokenDetails sessionToken = sessionTokenDetails;


            // try to get HPID profile with existing session token
            CustomerIds idS = new CustomerIds();

            idS.HPIDid = "INNOVATIONPORTAL12345!@#$%";

            return(GetCustomerProfileFromHPIDAndDatabase(response, UserAuthInterchange, sessionToken, idS, RetainOldValues, apiRetainOldValues));
        }
        public override int GetHashCode()
        {
            int hashCode = 1711926547;

            if (CustomerIds != null)
            {
                hashCode += CustomerIds.GetHashCode();
            }

            if (LocationIds != null)
            {
                hashCode += LocationIds.GetHashCode();
            }

            return(hashCode);
        }
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (obj == this)
            {
                return(true);
            }

            return(obj is SearchSubscriptionsFilter other &&
                   ((CustomerIds == null && other.CustomerIds == null) || (CustomerIds?.Equals(other.CustomerIds) == true)) &&
                   ((LocationIds == null && other.LocationIds == null) || (LocationIds?.Equals(other.LocationIds) == true)));
        }
Example #8
0
        private GetProfileResponse GetProfileByRefreshToken(GetProfileResponse response, TokenDetails sessionToken, int UserID, string calledId)
        {
            // try to get IsacUsers record and refresh token
            response.ErrorList.Clear();
            User isaacUser = userUtils.GetRefreshToken(calledId, sessionToken);

            if (isaacUser == null || string.IsNullOrEmpty(isaacUser.RefreshToken))
            {
                ExecuteLogout(response, UserID, QueryUtils.GetMD5(sessionToken.AccessToken), calledId);
                response.ErrorList.Add(Responses.Faults.HPIDSessionTimeout);
                return(response);
            }


            // renew access token to HPID using refresh token
            sessionToken.RefreshToken     = isaacUser.RefreshToken;
            sessionToken.RefreshTokenType = Convert.ToInt32(isaacUser.RefreshTokenType);

            //fetch clientId from DB
            UserAuthentication hppAuth = null;

            DatabaseWrapper.databaseOperation(response, (context, query) =>
            {
                hppAuth = query.GetHPPToken(context, UserID, calledId);
            }, readOnly: true);

            string clientId = hppAuth?.ClientId;

            sessionToken = hpidUtils.GetHPIDSessionToken((int)TokenScopeType.userRefreshToken, "", sessionToken.RefreshToken, response, clientId, sessionToken.RefreshTokenType);

            if (sessionToken == null || string.IsNullOrEmpty(sessionToken.AccessToken))
            {
                ExecuteLogout(response, UserID, QueryUtils.GetMD5(sessionToken.AccessToken), calledId);
                response.ErrorList.Add(Responses.Faults.HPIDSessionTimeout);
                return(response);
            }

            // try to get HPID profile using renewed access token
            CustomerIds idS = new CustomerIds();

            if (GetProfileBySessionToken(response, sessionToken, idS))
            {
                return(GetProfileDataFromDatabase(response, isaacUser));
            }

            return(response);
        }
        public void GetCustomerProfileByAuthenticationTest_Success()
        {
            bool IsNewCustomer             = false;
            CustomerHPIDUtils custUtils    = new CustomerHPIDUtils();
            RoleUtils         rlUtils      = new RoleUtils();
            TokenDetails      sessionToken = new TokenDetails();

            sessionToken.AccessToken = "sessionToken";
            hpidUtilsMock.Setup(x => x.GetHPIDSessionToken(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <GetProfileResponse>(), It.IsAny <string>(), It.IsAny <int>())).Returns(sessionToken);
            hpidUtilsMock.Setup(x => x.GetIdsAndProfile(It.IsAny <CustomerIds>(), It.IsAny <string>(), It.IsAny <GetProfileResponse>())).
            Callback((CustomerIds i, string u, GetProfileResponse r) =>
            {
                i = new CustomerIds()
                {
                    HPIDid = "hpidid", HPPid = "hppid"
                };
                r.CustomerProfileObject = new CustomerProfile();
            }).Returns(true);


            User aProfile = new User()
            {
                EmailConsent = true
            };

            List <RoleMapping> roleMappings = new List <RoleMapping>();
            RoleMapping        role         = new RoleMapping();

            role.RoleId        = 1;
            role.RoleMappingId = 1;
            role.UserId        = 1;
            role.CreatedDate   = DateTime.UtcNow;
            roleMappings.Add(role);
            aProfile.RoleMappings = roleMappings;
            isacMock.Setup(x => x.FindOrInsertHPIDProfile(It.IsAny <ResponseBase>(), It.IsAny <RequestFindOrInsertHPIDProfile>(), out IsNewCustomer)).Returns(aProfile);



            GetProfileResponse response = custUtils.GetCustomerProfileByAuthentication(new UserAuthenticationInterchange(), It.IsAny <bool>(), "access", "url", It.IsAny <APIMethods>());

            Assert.IsTrue(response.ErrorList.Count == 0);
            Assert.IsTrue(response.CustomerProfileObject.EmailConsent.Equals(EmailConsentType.Y.ToString()));
        }
Example #10
0
        private GetProfileResponse GetCustomerProfileFromHPIDAndDatabase(GetProfileResponse response, UserAuthenticationInterchange hppAuthInterchange, TokenDetails sessionToken, CustomerIds idS, bool RetainOldValues, APIMethods apiRetainOldValues)
        {
            User profile = null;
            List <RoleMapping> roleMappings = null;

            try
            {
                // check is done based on profile, customerId is also generated for a new profile
                bool IsNewCustomer = false;

                RequestFindOrInsertHPIDProfile requestFindOrInsertHPID = new RequestFindOrInsertHPIDProfile();
                requestFindOrInsertHPID.Locale =
                    string.IsNullOrEmpty(response?.CustomerProfileObject?.Locale)?TranslationUtils.Locale(hppAuthInterchange.LanguageCode, hppAuthInterchange.CountryCode):response?.CustomerProfileObject?.Locale;
                requestFindOrInsertHPID.HPIDprofileId      = idS.HPIDid;
                requestFindOrInsertHPID.HPPprofileId       = idS.HPPid;
                requestFindOrInsertHPID.tokenDetails       = sessionToken;
                requestFindOrInsertHPID.clientId           = hppAuthInterchange.ClientId;
                requestFindOrInsertHPID.apiRetainOldValues = apiRetainOldValues;
                requestFindOrInsertHPID.EmailAddrees       = response?.CustomerProfileObject?.EmailAddress;
                requestFindOrInsertHPID.CompanyName        = response?.CustomerProfileObject?.CompanyName;
                requestFindOrInsertHPID.ActiveHealth       = response.CustomerProfileObject.ActiveHealth;
                requestFindOrInsertHPID.FirstName          = response?.CustomerProfileObject?.FirstName;
                requestFindOrInsertHPID.LastName           = response.CustomerProfileObject.LastName;



                profile = userUtils.FindOrInsertHPIDProfile(response, requestFindOrInsertHPID, out IsNewCustomer);

                if (response.ErrorList.Count > 0)
                {
                    return(response);
                }

                if (profile.RoleMappings.Count == 0)
                {
                    roleMappings = roleUtils.InsertRoleMapping(response, profile.UserId);
                }
                else
                {
                    roleMappings = profile.RoleMappings.ToList();
                }


                hppAuthInterchange.UserId = Convert.ToInt32(profile.UserId);
                hppAuthInterchange.Token  = sessionToken.AccessToken;
                hppAuthInterchange.IsHPID = true;



                // Register profile & session token in database
                customerUtils.InsertOrUpdateHPPToken(response, (UserAuthentication)hppAuthInterchange, RetainOldValues);

                List <int>       roleids   = roleMappings.Select(r => r.RoleId).ToList();
                List <UserRoles> userRoles = new List <UserRoles>();

                RESTAPIGetRolesResponse rolesResponse = new RESTAPIGetRolesResponse();

                statusUtils.GetRoles(rolesResponse);

                if (rolesResponse.RolesList.Count != 0)
                {
                    var rolResponseList = rolesResponse.RolesList.Where(r => roleids.Contains(r.RoleId)).ToList();
                    foreach (var roles in rolResponseList)
                    {
                        userRoles.Add(new UserRoles()
                        {
                            Id = roles.RoleId, Name = roles.RoleName
                        });
                    }
                }


                response.Credentials = new AccessCredentials()
                {
                    UserID       = Convert.ToInt32(profile.UserId),
                    SessionToken = QueryUtils.GetMD5(sessionToken.AccessToken),
                    CallerId     = hppAuthInterchange.CallerId,
                    Token        = sessionToken.AccessToken,
                    Roles        = userRoles
                };

                response = GetProfileDataFromDatabase(response, profile);
                response.CustomerProfileObject.IsNewCustomer = IsNewCustomer;
                response.LoginDate = hppAuthInterchange.LoginDate;
            }
            catch (Exception ex)
            {
                response.ErrorList.Add(new Fault("GetCustomerProfileFailed", ex.Message));
            }

            return(response);
        }
Example #11
0
        private bool GetProfileBySessionToken(GetProfileResponse response, TokenDetails sessionToken, CustomerIds idS)
        {
            if (sessionToken == null || string.IsNullOrEmpty(sessionToken.AccessToken))
            {
                response.ErrorList.Add(Responses.Faults.InvalidCredentials);
                return(false);
            }

            return(hpidUtils.GetIdsAndProfile(idS, sessionToken.AccessToken, response));
        }
        public bool GetIdsAndProfile(CustomerIds ids, string token, GetProfileResponse response)
        {
            JObject respObj = null;

            log.Debug($"GetIdsAndProfile: START token={token}");
            var client = new HttpClient();

            client.DefaultRequestHeaders.TryAddWithoutValidation("content-type", "application/x-www-form-urlencoded");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            Stopwatch timer      = new Stopwatch();
            string    respResult = null;

            try
            {
                timer.Start();
                var resp = client.GetAsync(profileURL).Result;
                timer.Stop();

                respResult = resp.Content.ReadAsStringAsync().Result;
                respObj    = JObject.Parse(respResult);

                if (!CheckServiceResponse(respObj, response))
                {
                    log.Debug($"GetIdsAndProfile: get profile failed");
                    return(false);
                }
            }
            catch (TimeoutException ex)
            {
                log.Debug($"GetIdsAndProfile: Errortype=TimeoutException,Exception={ex.Message}");
                response.ErrorList.Add(new Fault(Faults.HPIDTimeoutError, ex));
                return(false);
            }
            catch (Exception ex)
            {
                log.Debug($"GetIdsAndProfile: Errortype=Exception,Exception={ex.Message}");
                response.ErrorList.Add(new Fault(Faults.HPIDInternalError, ex));
                return(false);
            }
            finally
            {
                timer.Stop();
                // Log the outbound service call details in ExtServiceLogs table
                ExtServiceLogs.LogExtServiceCallDetails(client?.DefaultRequestHeaders?.Authorization?.ToString(),
                                                        HttpVerbs.Get, "HPID", profileURL?.ToString(), null, respObj?.ToString(), (int)timer.ElapsedMilliseconds, false);
            }

            // get HPIDid profile ID if missing, it means that profile is broken
            ids.HPIDid = (string)respObj["id"];
            if (string.IsNullOrEmpty(ids.HPIDid))
            {
                response.ErrorList.Add(Faults.HPIDInvalidResponse);
                log.Debug($"GetIdsAndProfile: Errortype=HPIDid profile ID if missing");
                return(false);
            }
            ;


            // get HPPid profile ID - if missing, it means that user is just logged
            ids.HPPid = (string)respObj["hpp_id"];


            // get profile data
            // ===========================================================================
            CustomerProfile profile = new CustomerProfile();

            profile.EmailConsent = EmailConsentType.N.ToString();
            profile.PrimaryUse   = PrimaryUseType.Item002.ToString();


            try { profile.FirstName = (string)respObj["name"]["givenName"]; } catch (Exception ex) { profile.FirstName = null; log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-FirstName, exception={ex.Message}"); }
            try { profile.LastName = (string)respObj["name"]["familyName"]; } catch (Exception ex) { profile.LastName = null; log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-LastName, exception={ex.Message}"); }
            profile.UserName    = (string)respObj["userName"];
            profile.Country     = (string)respObj["countryResidence"];
            profile.CompanyName = (string)respObj["hpp_organizationName"];
            try { profile.Language = GetProperLanguageCode(((string)respObj["locale"]).Substring(0, 2)); } catch (Exception ex) { profile.Language = null; log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-Language, exception={ex.Message}"); }
            try { profile.Locale = (string)respObj["locale"]; } catch (Exception ex) { profile.Locale = null; log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-Locale, exception={ex.Message}"); }
            try { profile.DisplayName = (string)respObj["displayName"]; } catch (Exception ex) { profile.DisplayName = null; log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-DisplayName, exception={ex.Message}"); }
            try { profile.Gender = (string)respObj["gender"]; } catch (Exception ex) { profile.Gender = null; log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-Gender, exception={ex.Message}"); }
            profile.Id = (string)respObj["id"];
            //Get Address details
            try
            {
                JToken jStatus = respObj.SelectToken("$.addresses");
                if (jStatus != null && jStatus.Count() > 0)
                {
                    profile.Addresses = new List <Address>();
                    foreach (var i in jStatus)
                    {
                        Address add = i.ToObject <Address>();
                        profile.Addresses.Add(add);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-addresses, exception={ex.Message}");
            }

            //Get phone numbers
            try
            {
                JToken jStatus = respObj.SelectToken("$.phoneNumbers");
                if (jStatus != null && jStatus.Count() > 0)
                {
                    profile.PhoneNumbers = new List <PhoneNumber>();
                    foreach (var i in jStatus)
                    {
                        PhoneNumber ph = i.ToObject <PhoneNumber>();
                        profile.PhoneNumbers.Add(ph);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-phoneNumbers, exception={ex.Message}");
            }

            // use primary email
            try
            {
                JToken jStatus = respObj.SelectToken("$.emails");
                if (jStatus != null && jStatus.Count() > 0)
                {
                    foreach (var i in jStatus)
                    {
                        Email eml = i.ToObject <Email>();
                        if (eml.primary)
                        {
                            profile.EmailAddress = eml.value;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-email, exception={ex.Message}");
            };

            //use primary address
            try
            {
                JToken jStatus = respObj.SelectToken("$.addresses");
                if (jStatus != null && jStatus.Count() > 0)
                {
                    foreach (var i in jStatus)
                    {
                        Address adr = i.ToObject <Address>();
                        if (Convert.ToBoolean(adr.Primary))
                        {
                            profile.City = adr.Locality;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.Debug($"GetIdsAndProfile: Errortype=HPID response parse-address, exception={ex.Message}");
            };


            response.CustomerProfileObject = profile;

            return(true);
        }