Esempio n. 1
0
        /// <summary>
        /// Updates the specified member.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception">There was an error updating Individual record</exception>
        public MemberUpdateStatus Update(ASAMemberModel member)
        {
            const string logMethodName = ".Update(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");
            MemberUpdateStatus memberUpdateStatus = MemberUpdateStatus.Failure;

            try
            {
                memberUpdateStatus = IntegrationLoader.LoadDependency <ISaltServiceAgent>("saltServiceAgent").UpdateUser(member.ToDataContract());
            }
            catch (Exception ex)
            {
                String msg = String.Format("There was an error updating Individual record - {0}", ex.Message);
                throw new Exception(msg);
            }
            //Call async Qualtric's Target Audience API
            if (Common.Config.QTA_Process.ToLower() == "on" && memberUpdateStatus == MemberUpdateStatus.Success)
            {
                var         updatedMember = GetMember(Convert.ToInt32(member.MembershipId));
                QualtricsTA QTA           = new QualtricsTA();
                QTA.UpdateUser(updatedMember);
            }

            Log.Debug(logMethodName + "End Method");
            return(memberUpdateStatus);
        }
Esempio n. 2
0
        /// <summary>
        /// Delete the specified member from SALT db and ActiveDirectory.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns>bool</returns>
        /// <exception cref="System.Exception">There was an error deleteing Member record</exception>
        public bool DeleteMember(ASAMemberModel member)
        {
            const string logMethodName = ".DeleteMember(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");
            bool result = false;

            //delete SALT db information.
            result = SaltServiceAgent.DeleteUser(Convert.ToInt32(member.MembershipId));
            if (0 == false.CompareTo(result))
            {
                Log.Error(logMethodName + "Error deleting member from SALT DB");
                //when debugging, for some reason it step into the if and highlights this line, but it does not throw the error.
                //if you comment out the the construction of the error then the debugger will not step in here.
                throw new WebFaultException <string>("Failed to delete member", System.Net.HttpStatusCode.BadRequest);
            }

            //delete Active Directory Account.
            try
            {
                result = IntegrationLoader.LoadDependency <ISecurityAdapter>("securityAdapter").DeleteMember(member.Emails[0].EmailAddress);
            }
            catch (Exception ex)
            {
                Log.Error(logMethodName + "Error deleting member from AD", ex);
                throw new WebFaultException <string>("Failed to delete member", System.Net.HttpStatusCode.BadRequest);
            }

            Log.Debug(logMethodName + "End Method");
            return(result);
        }
Esempio n. 3
0
        public IList <vMemberQuestionAnswerModel> GetMemberQuestionAnswer(string memberId, string sourceID)
        {
            const string logMethodName = " -getMemberQuestionAnswer(string memberId)";
            List <vMemberQuestionAnswerModel> listMemberQuestionAnswer = new List <vMemberQuestionAnswerModel>();

            try
            {
                ASAMemberModel currentUser = GetMemberFromContext();
                if (_asaMemberAdapter.IsCurrentUser(memberId))
                {
                    int MemberID = int.Parse(memberId);
                    int SourceID = int.Parse(sourceID);
                    listMemberQuestionAnswer = _asaMemberAdapter.GetMemberQuestionAnswer(MemberID, SourceID).ToList();
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized", System.Net.HttpStatusCode.Unauthorized);
                }
            }
            catch (Exception ex)
            {
                Log.Error(logMethodName + ": Raised an exception executing your request +> ", ex);
            }
            Log.Debug(logMethodName + "End Method");
            return(listMemberQuestionAnswer.ToList());
        }
Esempio n. 4
0
        public bool DeleteMember(string memberId)
        {
            const string logMethodName = ".DeleteMember(ASAMemberModel memberIn) - ";

            Log.Debug(logMethodName + "Begin Method");

            bool result = false;

            //Check the incoming memberId against what's in the incoming model
            ASAMemberModel currentUser = GetMemberFromContext();

            if (_asaMemberAdapter.IsCurrentUser(memberId))
            {
                try
                {
                    result = _asaMemberAdapter.DeleteMember(currentUser);
                }
                catch (Exception e)
                {
                    Log.Error("Exception deleteing member", e);
                    throw;
                }
            }
            else
            {
                throw new WebFaultException <string>("Not Authorized", System.Net.HttpStatusCode.Unauthorized);
            }

            Log.Debug(logMethodName + "End Method");
            return(result);
        }
Esempio n. 5
0
        public bool SendEmailToMember(string chatTranscript)
        {
            bool emailSuccess = false;

            ASAMemberModel currentUser = GetMemberFromContext();

            MailMessage message = new MailMessage("*****@*****.**", currentUser.Emails[0].EmailAddress);

            //validate chat transcript
            if (!CrossSiteScriptValidator.IsValidObject(chatTranscript))
            {
                Log.Error("Failed CrossSiteScriptValidator: Possible cross site attack intercepted and save for inspection [ ", chatTranscript + " ]");
                message.Dispose();
                return(emailSuccess);
            }

            string messageBody = chatTranscript;

            message.Body       = messageBody;
            message.IsBodyHtml = true;
            message.Subject    = "Your Chat Transcript With Hope";

            emailSuccess = UtilityFunctions.SendEmail(message);

            return(emailSuccess);
        }
Esempio n. 6
0
        public ASAMemberModel GetMemberFromContext()
        {
            Log.Debug("START GetMemberFromContext");
            //TODO: perform any input validation here.
            ASAMemberModel member = null;

            try
            {
                var activeDirectoryKey = _asaMemberAdapter.GetActiveDirectoryKeyFromContext();

                if (!string.IsNullOrWhiteSpace(activeDirectoryKey))
                {
                    member = _asaMemberAdapter.GetMember(new Guid(activeDirectoryKey));
                }
            }
            catch
            {
            }

            if (member == null)
            {
                member = new ASAMemberModel();
                member.ErrorList.Add(new ErrorModel("User not found"));
            }
            else
            {
                member.ProfileQAs = _asaMemberAdapter.GetAllProfileQAs(int.Parse(member.MembershipId));
            }

            Log.Debug("END GetMemberFromContext");
            return(member);
        }
Esempio n. 7
0
        /// <summary>
        /// Will call the Qualtric's Target Audience API createUser.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        internal void CreateUserProcess(ASAMemberModel member)
        {
            const string logMethodName = ".CreateUserProcess(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");

            string QTA_Process = Common.Config.QTA_Process;

            if (QTA_Process.ToLower() == "on")
            {
                Log.Info(logMethodName + "Qualtrics TA Process on - request attempt will be made");

                //https://survey.qualtrics.com/WRAPI/Contacts/api.php?Request=createContact&Format=JSON&Version=2.3&User=APIDevelopment&Token=ZyEeqfR9oFI9bTOu1tzWNWQ43my7elCNXBe6Ql8b&LibraryID=GR_6r0To7ELRwsmMfP&ListID=CG_dbUMDRYesJ0MCot&[email protected]&FirstName=Todd&LastName=Leslie&ExternalDataRef=Id12346&ED[Contact]=true&ED[Org0]=Org-99999&ED[Org1]=Org-77777&ED[Org2]=Org-55555&ED[Org3]=Org-33333&ED[Org4]=Org-11111&ED[Org5]=&ED[Org6]=&ED[Org7]=&ED[Org8]=&ED[Org9]=
                String urlToRequest = BuildUrlString("createContact");
                urlToRequest += BuildDataString(member);

                Log.Debug(logMethodName + "Request - " + urlToRequest);

                HttpsRequestProvider httpsRequestProvider = new HttpsRequestProvider();
                string responseString = httpsRequestProvider.sendRequestToQualtricsTA(urlToRequest);
            }
            else
            {
                Log.Info(logMethodName + "Qualtrics TA Process off - request not made");
            }

            Log.Debug(logMethodName + "End Method");
        }
Esempio n. 8
0
        /// <summary>
        /// Creates the specified member.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        public RegistrationResultModel Create(ASAMemberModel member)
        {
            const string logMethodName = ".Create(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");

            RegistrationResultModel toReturn = null;

            try
            {
                var email        = member.Emails.First().EmailAddress;
                var updateResult = SaltServiceAgent.RegisterUser(member.ToUserRegistrationDataContract());

                toReturn = new RegistrationResultModel()
                {
                    Member       = updateResult.Member.ToDomainObject(),
                    CreateStatus = (MemberUpdateStatus)updateResult.CreateStatus
                };

                //the site membership code will delete the account in active directory
                //if an exception is raised.
                if (toReturn.CreateStatus == MemberUpdateStatus.InvalidOrganization)
                {
                    throw new Exception("The organization entered was invalid");
                }
                else if (toReturn.CreateStatus == MemberUpdateStatus.IncompleteProfile)
                {
                    throw new Exception("The user profile is incomplete");
                }
                else if (toReturn.CreateStatus == MemberUpdateStatus.Failure)
                {
                    throw new Exception("An exception has occured creating the user");
                }
                else if (toReturn.CreateStatus == MemberUpdateStatus.Duplicate)
                {
                    throw new Exception("The user already exists in the system.");
                }
            }
            catch (Exception x)
            {
                Log.Error(string.Format(logMethodName + "Error inserting new Individual record for member: MemberAccountId={0}, Email={1}, StackTrace={2}"
                                        , member.MembershipId != null ? member.MembershipId.ToString() : "null"
                                        , member.Emails != null && member.Emails.Count > 0 && !string.IsNullOrEmpty(member.Emails[0].EmailAddress) ? member.Emails[0].EmailAddress : "null"
                                        , x));
                throw x;
            }

            //Call async Qualtric's Target Audience API
            if (Common.Config.QTA_Process.ToLower() == "on")
            {
                QualtricsTA QTA = new QualtricsTA();
                QTA.CreateUser(toReturn.Member);
            }

            Log.Debug(logMethodName + "End Method");

            return(toReturn);
        }
Esempio n. 9
0
        public void AccountController_GetManageAccountModel_ValidateValues_Test()
        {
            AccountController ac = new AccountController();

            //set test values into ASAMemberModel
            ASAMemberModel amModel = new ASAMemberModel();

            SetASAMemberModelValues(amModel);

            //values that should be set on Model
            string emailAddressPrimary = "*****@*****.**";

            string firstName   = "FirstName";
            string lastName    = "LastName";
            string newPassword = "******";
            string password    = "******";
            short  yearOfBirth = 1975;

            string phoneNumber     = "1-619-555-1212";
            string phoneNumberType = "Mobile";

            string oeCode           = "123456";
            string branchCode       = "12";
            string organizationName = "ASA University";
            int    expectedGraduationYearDefault = 2001;

            // Wrap an already existing instance
            PrivateObject accessor = new PrivateObject(ac);

            // Call a private method
            ManageAccountModel maModel = (ManageAccountModel)accessor.Invoke("GetManageAccountModel", amModel);

            Assert.AreEqual(emailAddressPrimary, maModel.EmailAddress);
            Assert.AreEqual(emailAddressPrimary, maModel.UserName);

            Assert.AreEqual(phoneNumber, maModel.PhoneNumber);
            Assert.AreEqual(phoneNumberType, maModel.PhoneNumberType);

            Assert.AreEqual(oeCode, maModel.OECode);
            Assert.AreEqual(branchCode, maModel.BranchCode);
            Assert.AreEqual(organizationName, maModel.OrganizationName);

            Assert.AreEqual(newPassword, maModel.ConfirmPassword);
            Assert.AreEqual(newPassword, maModel.NewPassword);
            Assert.AreEqual(password, maModel.Password);

            Assert.AreEqual(firstName, maModel.FirstName);
            Assert.AreEqual(lastName, maModel.LastName);
            Assert.IsTrue(maModel.IsCommunityActive);
            Assert.AreEqual(expectedGraduationYearDefault, maModel.ExpectedGraduationYear);
            Assert.AreEqual(null, maModel.USPostalCode);
            Assert.AreEqual(null, maModel.SALTSchoolTypeID);
            Assert.AreEqual(yearOfBirth, maModel.YOB);

            Assert.IsFalse(maModel.AddressValidated);
        }
Esempio n. 10
0
        //public static bool ValidateMemberId(string memberId)
        //{
        //        bool bValid = false;
        //        ASAMemberModel member = new ASAMemberModel();
        //        member.MembershipId = memberId;
        //        if (memberId != null && member.IsValid("Member Id"))
        //        {
        //            bValid = true;
        //        }

        //        return bValid;
        //}

        //public static bool ValidateInputSurveyList(SurveyListModel sList)
        //{
        //    bool bValid = false;
        //    if (sList != null && sList.Surveys != null)
        //    {
        //        bValid = true;
        //        foreach (SurveyModel survey in sList.Surveys)
        //        {
        //            bValid &= survey.IsValid();
        //            if (!bValid)
        //                break;
        //        }
        //    }

        //    return bValid;
        //}

        public static bool ValidateASAMember(ASAMemberModel member)
        {
            bool bValid = false;

            if (member != null)
            {
                bValid = member.IsValid();
            }
            return(bValid);
        }
Esempio n. 11
0
        public ASAMemberModel AccountMaintenance(ASAMemberModel memberIn)
        {
            String logMethodName = ".AccountMaintenance(ASAMemberModel memberIn) - ";

            Log.Debug(logMethodName + "Begin Method");


            Log.Debug(logMethodName + "End Method");
            return(memberIn);
        }
Esempio n. 12
0
        /// <summary>
        /// setup a task to call Qualtric's Target Audience API updateUser, so we don't have to wait for it to finish.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        public void UpdateUser(ASAMemberModel member)
        {
            const string logMethodName = ".UpdateUser(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");

            Task.Factory.StartNew(() => { UpdateUserProcess(member); });

            Log.Debug(logMethodName + "End Method");
        }
Esempio n. 13
0
        private void SetASAMemberModelValues(ASAMemberModel amModel)
        {
            //values to be set on Model
            string emailAddressPrimary   = "*****@*****.**";
            string emailAddressSecondary = "secondaryEmailAddress";

            bool   isCommunityActive = true;
            string firstName         = "FirstName";
            string lastName          = "LastName";
            string newPassword       = "******";
            string password          = "******";
            short  yearOfBirth       = 1975;

            string phoneNumber     = "1-619-555-1212";
            string phoneNumberType = "Mobile";

            string oeCode                 = "123456";
            string branchCode             = "12";
            string organizationName       = "ASA University";
            int    expectedGraduationYear = 2001;

            amModel.Emails = new List <MemberEmailModel> {
                new MemberEmailModel {
                    EmailAddress = emailAddressPrimary,
                    IsPrimary    = true
                },
                new MemberEmailModel {
                    EmailAddress = emailAddressSecondary,
                    IsPrimary    = false
                }
            };

            amModel.Phones = new List <MemberPhoneModel> {
                new MemberPhoneModel {
                    PhoneNumber = phoneNumber,
                    Type        = phoneNumberType
                }
            };

            amModel.Organizations = new List <MemberOrganizationModel> {
                new MemberOrganizationModel {
                    OECode                 = oeCode,
                    BranchCode             = branchCode,
                    OrganizationName       = organizationName,
                    ExpectedGraduationYear = expectedGraduationYear
                }
            };

            amModel.IsCommunityActive = isCommunityActive;
            amModel.FirstName         = firstName;
            amModel.LastName          = lastName;
            amModel.NewPassword       = newPassword;
            amModel.Password          = password;
            amModel.YearOfBirth       = yearOfBirth;
        }
Esempio n. 14
0
        /// <summary>
        /// Will call the Qualtric's Target Audience API getContactByInfoFields if user exists
        /// then updateContact will be call otherwise createContact will be called.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        internal void UpdateUserProcess(ASAMemberModel member)
        {
            const string logMethodName = ".UpdateUserProcess(ASAMemberModel member) - ";

            Log.Debug(logMethodName + "Begin Method");

            string QTA_Process = Common.Config.QTA_Process;

            if (QTA_Process.ToLower() == "on")
            {
                Log.Info(logMethodName + "Qualtrics TA Process on - request attempt will be made");

                //"https://survey.qualtrics.com/WRAPI/Contacts/api.php?Request=getContactByInfoFields&Format=JSON&Version=2.3&User=APIDevelopment&Token=ZyEeqfR9oFI9bTOu1tzWNWQ43my7elCNXBe6Ql8b&ExternalDataRef=1934";
                String urlToRequest = BuildUrlString("getContactByInfoFields");
                String dataPart     = String.Format("&ExternalDataRef={0}", member.MembershipId);
                urlToRequest += dataPart;

                Log.Debug(logMethodName + "Request - " + urlToRequest);

                HttpsRequestProvider httpsRequestProvider = new HttpsRequestProvider();
                string responseString = httpsRequestProvider.sendRequestToQualtricsTA(urlToRequest);

                //covert response to JSON object
                JObject responseAsJSON = new JObject();
                responseAsJSON = JObject.Parse(responseString);

                string returnStatus = responseAsJSON["Meta"].Any() ? (string)responseAsJSON["Meta"]["Status"] : String.Empty;
                string contactId    = responseAsJSON["Result"].Any() ? (string)responseAsJSON["Result"][0]["ContactId"] : String.Empty;

                if (returnStatus == "Success" && contactId != String.Empty) //update existing user
                {
                    //https://survey.qualtrics.com/WRAPI/Contacts/api.php?Request=updateContact&Format=JSON&Version=2.3&User=APIDevelopment&Token=ZyEeqfR9oFI9bTOu1tzWNWQ43my7elCNXBe6Ql8b&LibraryID=GR_6r0To7ELRwsmMfP&ListID=CG_dbUMDRYesJ0MCot&ContactID=_0HA3IIsMONMkCkR&Email=somename%2540example.com

                    urlToRequest  = BuildUrlString("updateContact");
                    dataPart      = String.Format("&ContactID={0}", contactId);
                    dataPart     += BuildDataString(member);
                    urlToRequest += dataPart;

                    Log.Debug(logMethodName + "Request - " + urlToRequest);

                    responseString = httpsRequestProvider.sendRequestToQualtricsTA(urlToRequest);
                }
                else
                {
                    //no user found so insert/create one.
                    CreateUserProcess(member);
                }
            }
            else
            {
                Log.Info(logMethodName + "Qualtrics TA Process off - request not made");
            }

            Log.Debug(logMethodName + "End Method");
        }
Esempio n. 15
0
        private static IMemberProfileData createNewMemberProfile(IMemberProfileData profile, Dictionary <String, Object> providerKeys)
        {
            AsaMemberAdapter adapter = new AsaMemberAdapter();
            ASAMemberModel   member  = ConvertProfileToASAMember(profile, providerKeys);

            member = adapter.Create(member).Member;

            profile = ConvertASAMembertoProfile(member, providerKeys);

            return(profile);
        }
Esempio n. 16
0
        private static ASAMemberModel ConvertProfileToASAMember(IMemberProfileData profile, Dictionary <String, Object> providerKeys = null)
        {
            const string logMethodName = ".ConvertProfileToASAMember(IMemberProfileData profile, Dictionary<String, Object> providerKeys = null) - ";

            _log.Debug(logMethodName + "Begin Method");
            var model = new ASAMemberModel();

            //The memberID for the framework is the ADKey in avectra and AD
            model.ActiveDirectoryKey = profile.ActiveDirectoryKey.ToString();

            model.LegalFirstName    = profile.FirstName;
            model.LastName          = profile.LastName;
            model.FirstName         = profile.FirstName;
            model.DisplayName       = profile.DisplayName;
            model.Source            = profile.Source;
            model.YearOfBirth       = profile.YearOfBirth;
            model.USPostalCode      = profile.USPostalCode;
            model.SALTSchoolTypeID  = profile.SALTSchoolTypeID;
            model.MembershipId      = profile.MemberId.ToString();
            model.GradeLevel        = profile.GradeLevel;
            model.EnrollmentStatus  = profile.EnrollmentStatus;
            model.InvitationToken   = profile.InvitationToken;
            model.IsCommunityActive = profile.IsCommunityActive;
            model.WelcomeEmailSent  = profile.WelcomeEmailSent;

            model.ContactFrequency = profile.ContactFrequency;
            model.Emails           = new List <MemberEmailModel>
            {
                new MemberEmailModel()
                {
                    EmailAddress = profile.EmailAddress,
                    IsPrimary    = true
                }
            };

            if (profile.Organizations != null)
            {
                foreach (MemberOrganizationData organizationData in profile.Organizations)
                {
                    MemberOrganizationModel mom = new MemberOrganizationModel();
                    mom.OrganizationId         = organizationData.OrganizationId;
                    mom.OECode                 = organizationData.OECode;
                    mom.BranchCode             = organizationData.BranchCode;
                    mom.ExpectedGraduationYear = organizationData.ExpectedGraduationYear;
                    mom.IsOrganizationDeleted  = organizationData.IsOrganizationDeleted;

                    model.Organizations.Add(mom);
                }
            }

            _log.Debug(logMethodName + "End Method");

            return(model);
        }
Esempio n. 17
0
        private bool SaveSSNToAvectra(ASAMemberModel member, string ssn)
        {
            return(true);
            //_log.Debug("START SaveSSNToAvectra");

            ////save this person's PersonId from ODS to Avectra
            //bool ssnSaved = _memberAdapter.UpdateSSN(member, ssn);

            //_log.Debug("END SaveSSNToAvectra");
            //return ssnSaved;
        }
Esempio n. 18
0
        public SelfReportedLoanListModel GetLoans(string ssn)
        {
            _log.Debug(string.Format("START ASA.Web.Services.LoanService.GetLoan(): ssn={0}", !string.IsNullOrEmpty(ssn)?ssn:"null"));
            HttpHeadersHelper.SetNoCacheResponseHeaders(WebOperationContext.Current);

            SelfReportedLoanListModel loans         = null;
            IAsaMemberAdapter         memberAdapter = null;

            memberAdapter = new AsaMemberAdapter();

            if (LoanValidation.ValidateInputSsn(ssn))
            {
                _log.Debug("calling GetActiveDirectoryKeyFromContext now.");
                int?           id     = memberAdapter.GetMemberIdFromContext();
                ASAMemberModel member = memberAdapter.GetMember(id.Value);

                if (_loanAdapter == null)
                {
                    _log.Error(_loanAdapterExceptionMessage);
                    loans = new SelfReportedLoanListModel();
                    ErrorModel error = new ErrorModel(_loanAdapterExceptionMessage, "Web Loan Service");
                    _log.Error("ASA.Web.Services.LoanService.GetLoan(): " + _loanAdapterExceptionMessage);
                    loans.ErrorList.Add(error);
                }
                else if (member != null)// we should never try to retrieve loans for someone who isn't found as the logged-in member from context.
                {
                    loans = _loanAdapter.GetLoans(ssn, member);
                }

                if (loans == null)
                {
                    _log.Debug("No loans were retrieved for this SSN: " + ssn);
                    loans = new SelfReportedLoanListModel();
                    loans.ErrorList.Add(new ErrorModel("No Loans were retrieved for this SSN."));
                }
            }
            else
            {
                loans = new SelfReportedLoanListModel();
                ErrorModel error = new ErrorModel("Invalid search criteria", "Web Loan Service");
                _log.Warn("ASA.Web.Services.LoanService.GetLoan(): Invalid search criteria");
                loans.ErrorList.Add(error);
            }

            _log.Debug(string.Format("END ASA.Web.Services.LoanService.GetLoan(): ssn={0}", !string.IsNullOrEmpty(ssn) ? ssn : "null"));
            return(loans);
        }
Esempio n. 19
0
        public ASAMemberModel Logon(bool logon, string emailAddress)
        {
            const string logMethodName = ".Logon(bool logon, string emailAddress - ";

            Log.Debug(logMethodName + "Begin Method");

            ASAMemberModel member = null;

            if (logon)
            {
                member = GetMemberByEmail(emailAddress);

                if (member != null)
                {
                    Log.Debug(logMethodName + "Member found, creating sesion cookies");
                    //creates WTFSession.NewSession() & authentication cookie
                    IntegrationLoader.LoadDependency <ISiteMembership>("siteMembership").SignIn(emailAddress);

                    if (System.Web.HttpContext.Current.Request.Cookies.AllKeys.Contains("IndividualId"))
                    {
                        HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["IndividualId"];
                        cookie.Domain  = "saltmoney.org";
                        cookie.Expires = DateTime.Now.AddDays(-1);
                        System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                    }
                    if (System.Web.HttpContext.Current.Request.Cookies.AllKeys.Contains("MemberId"))
                    {
                        HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["MemberId"];
                        cookie.Domain  = "saltmoney.org";
                        cookie.Expires = DateTime.Now.AddDays(-1);
                        System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                    }

                    UpdateLastLoginTimestamp(Convert.ToInt32(member.MembershipId));
                }
            }
            else
            {
                member = new ASAMemberModel();
            }

            Log.Debug(logMethodName + "End Method");
            return(member);
        }
Esempio n. 20
0
        private bool MatchingPersonFound(ASAMemberModel member, GetPersonResponse getPersonResponse)
        {
            _log.Debug("START MatchingPersonFound");
            bool bMatched = false;

            if (getPersonResponse != null &&
                getPersonResponse.PersonCanonicalList != null &&
                getPersonResponse.PersonCanonicalList.Length > 0
                )
            {
                _log.Debug("The getPersonResponse returned is constructed correctly.");
                foreach (PersonCanonicalType p in getPersonResponse.PersonCanonicalList)
                {
                    //compare this person's LastName and DOB with those on the member object.
                    if (p.PersonTier2 != null && p.PersonTier2.PersonInfoType != null)
                    {
                        _log.Debug("PersonInfoType was found");
                        if (member.DOB != null && p.PersonTier2.PersonInfoType.DateOfBirth != null) //can only compare these if they're not null
                        {
                            _log.Debug(string.Format("ODS: First={0}, Last={1}, DOB={2}",
                                                     !string.IsNullOrEmpty(p.PersonTier2.PersonInfoType.FirstName)?p.PersonTier2.PersonInfoType.FirstName.ToUpper():"",
                                                     !string.IsNullOrEmpty(p.PersonTier2.PersonInfoType.LastName)?p.PersonTier2.PersonInfoType.LastName.ToUpper():"",
                                                     p.PersonTier2.PersonInfoType.DateOfBirth.ToString())
                                       );
                            _log.Debug(string.Format("MRM: First={0}, Last={1}, DOB={2}",
                                                     !string.IsNullOrEmpty(member.FirstName) ? member.FirstName.ToUpper() : "",
                                                     !string.IsNullOrEmpty(member.LastName) ? member.LastName.ToUpper() : "",
                                                     member.DOB.ToString())
                                       );
                            if (string.Compare(p.PersonTier2.PersonInfoType.LastName.ToUpper(), member.LastName.ToUpper()) == 0 &&
                                string.Compare(p.PersonTier2.PersonInfoType.FirstName.ToUpper(), member.FirstName.ToUpper()) == 0 &&
                                DateTime.Compare((DateTime)p.PersonTier2.PersonInfoType.DateOfBirth, (DateTime)member.DOB) == 0) //found match
                            {
                                bMatched = true;
                                break;
                            }
                        }
                    }
                }
            }

            _log.Debug("END MatchingPersonFound");
            return(bMatched);
        }
Esempio n. 21
0
        public SelfReportedLoanListModel GetLoans(string ssn, ASAMemberModel member)
        {
            _log.Debug("START GetLoans");
            SelfReportedLoanListModel srlList = null;

            if (member != null) //TODO: Mehdi && member.Source != SourceType.SELF_REGISTERED_NO_MATCH)
            {
                ////the following hardcoded values are only for when you're being lazy and dont want to find a person to test GetPerson, MatchingPersonFound, and GetLoan
                //member.FirstName = "Dwayne";
                //member.LastName = "Baker";
                //member.DOB = new DateTime(1976,1,30);
                //member.IndividualId = "967A954B-AB09-4713-9B6E-2067B8C3F992";
                //ssn = "803450294";

                // See if person is in ODS for this SSN
                GetPersonRequest  getPersonRequest  = TranslateLoanModel.MapSSNToGetPersonRequest(ssn);
                GetPersonResponse getPersonResponse = _proxyPerson.GetPerson(getPersonRequest);

                // if person was retrieved, do they match the FName, LName, and DOB from context?
                bool personMatchFound = MatchingPersonFound(member, getPersonResponse);

                if (personMatchFound)
                {
                    _log.Debug("personMatchFound.");
                    // save this person's SSN from ODS to Avectra
                    bool ssnSaved = SaveSSNToAvectra(member, ssn);

                    if (ssnSaved)
                    {
                        // go get this person's Loans from ODS
                        GetLoanRequest  getRequest = TranslateLoanModel.MapSsnToGetRequest(ssn, Config.LoanServiceMaxEntities);
                        GetLoanResponse response   = _proxyLoan.GetLoan(getRequest);
                        srlList = TranslateLoanModel.MapGetResponseToModel(response, member.IndividualId);
                    }
                }
                else
                {
                    _log.Debug("NOT personMatchFound.");
                }
            }

            _log.Debug("END GetLoans");
            return(srlList);
        }
Esempio n. 22
0
        public bool UpsertQuestionAnswer(QuestionAnswerReponseModel choicesResponse)
        {
            const string logMethodName = "- QuestionAnswerResponse(QuestionAnswerReponseModel choicesResponse) - ";

            Log.Debug(logMethodName + "Begin Method");

            bool result = false;

            try
            {
                ASAMemberModel currentUser = GetMemberFromContext();
                if (_asaMemberAdapter.IsCurrentUser(choicesResponse.memberId))
                {
                    if (MemberProfileResponseValidation.validateMemberQAResponse(choicesResponse))
                    {
                        result = _asaMemberAdapter.UpsertQuestionAnswer(choicesResponse.memberId, choicesResponse.choicesList);
                    }
                    else
                    {
                        throw new System.ComponentModel.DataAnnotations.ValidationException();
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized", System.Net.HttpStatusCode.Unauthorized);
                }
            }
            catch (ValidationException validatEx)
            {
                string errMsg = validatEx.Message;
                if (choicesResponse.choicesList.Count == 0)
                {
                    errMsg = string.Format("{0}: choicesResponse failed validation {1}", "Exception executing your request in UpsertQuestionAnswer", "object choicesResponse.choicesList must have length greater than zero " + errMsg + ". Call exited without change.");
                }
                Log.Error(errMsg, validatEx.StackTrace);
            }
            catch (Exception ex)
            {
                Log.Error("Exception executing your request in UpsertQuestionAnswer:", ex);
            }
            Log.Debug(logMethodName + "End Method");
            return(result);
        }
Esempio n. 23
0
        private ASAMemberModel UpdateProfileModel(ASAMemberModel model)
        {
            String logMethodName = ".UpdateProfileModel(ASAMemberModel model) - ";

            _log.Debug(logMethodName + "Begin Method");
            AsaMemberAdapter adapter = new AsaMemberAdapter();

            try
            {
                adapter.Update(model);
            }
            catch (Exception ex)
            {
                throw new DataProviderException("Unable to update member profile", ex);
            }
            _log.Debug(logMethodName + "End Method");

            return(model);
        }
Esempio n. 24
0
        /// <summary>
        /// To the user registration data contract.
        /// </summary>
        /// <param name="member">The member.</param>
        /// <returns></returns>
        public static UserRegistrationContract ToUserRegistrationDataContract(this  ASAMemberModel member)
        {
            IList <MemberOrganizationContract> organizationList = new List <MemberOrganizationContract>();

            if (member.Organizations != null && member.Organizations.Count > 0)
            {
                foreach (var organization in member.Organizations)
                {
                    organizationList.Add(new MemberOrganizationContract()
                    {
                        OrganizationId         = organization.OrganizationId,
                        OECode                 = organization.OECode,
                        BranchCode             = organization.BranchCode,
                        ExpectedGraduationYear = organization.ExpectedGraduationYear.HasValue && organization.ExpectedGraduationYear > 1899 ? organization.ExpectedGraduationYear : 1900,
                        SchoolReportingID      = organization.ReportingId
                    });
                }
            }
            else
            {
                organizationList.Add(new MemberOrganizationContract()
                {
                    OECode = "000000", BranchCode = "00", ExpectedGraduationYear = 1899
                });
            }

            return(new UserRegistrationContract()
            {
                FirstName = member.FirstName,
                LastName = member.LastName,
                ActiveDirectoryKey = member.MembershipId,
                InvitationToken = member.InvitationToken,
                EmailAddress = member.Emails[0].EmailAddress,
                IsContactAllowed = !member.ContactFrequency,
                EnrollmentStatus = member.EnrollmentStatus,
                GradeLevel = member.GradeLevel,
                YearOfBirth = member.YearOfBirth,
                Password = member.Password,
                RegistrationSourceId = Convert.ToInt32(member.Source),
                MemberOrganizations = organizationList.ToArray()
            });
        }
Esempio n. 25
0
        public override IMemberProfileData UpdateMemberProfile(IMemberProfileData profile, Dictionary <String, Object> providerKeys = null)
        {
            String logMethodName = ".UpdateMemberProfile(IMemberProfileData profile, Dictionary<String, Object> providerKeys = null) - ";

            _log.Debug(logMethodName + "Begin Method");
            ASAMemberModel model = ConvertProfileToASAMember(profile, providerKeys);

            model.ActiveDirectoryKey = profile.Id.ToString();

            UpdateProfileModel(model);
            ClearCachedModel(profile.MemberId);

            AsaMemberAdapter adapter = new AsaMemberAdapter();

            profile = ConvertASAMembertoProfile(adapter.GetMemberByEmail(profile.EmailAddress));

            _log.Debug(logMethodName + "End Method");

            return(profile);
        }
Esempio n. 26
0
 /// <summary>
 /// To the member data contract.
 /// </summary>
 /// <param name="member">The member.</param>
 /// <returns></returns>
 public static MemberContract ToDataContract(this ASAMemberModel member)
 {
     return(new MemberContract()
     {
         FirstName = member.FirstName,
         LastName = member.LastName,
         EmailAddress = member.Emails.First().EmailAddress,
         MemberId = new AsaMemberAdapter().GetMemberIdFromContext(),
         ActiveDirectoryKey = new Guid(member.ActiveDirectoryKey),
         IsContactAllowed = !member.ContactFrequency,
         EnrollmentStatusCode = member.EnrollmentStatus,
         GradeLevelCode = member.GradeLevel,
         MemberOrganizations = member.Organizations.Any() ? member.Organizations.ToDataContract().ToArray() : null,
         DisplayName = member.DisplayName,
         CommunityDisplayName = member.CommunityDisplayName,
         IsCommunityActive = member.IsCommunityActive,
         WelcomeEmailSent = member.WelcomeEmailSent,
         USPostalCode = member.USPostalCode,
         YearOfBirth = member.YearOfBirth.HasValue && member.YearOfBirth > 0 ? member.YearOfBirth : null as short?
     });
 }
Esempio n. 27
0
 public SelfReportedLoanListModel GetLoans(string ssn, ASAMemberModel member)
 {
     return(MockJsonLoader.GetJsonObjectFromFile <SelfReportedLoanListModel>("LoanService", "{SSN}"));
 }
Esempio n. 28
0
        public static MemberProfileData ConvertASAMembertoProfile(ASAMemberModel model, Dictionary <String, Object> providerKeys = null)
        {
            String logMethodName = ".ConvertASAMembertoProfile(ASAMemberModel model, Dictionary<String, Object> providerKeys = null) - ";

            _log.Debug(logMethodName + "Begin Method");
            if (model != null)
            {
                MemberProfileData           member         = new MemberProfileData();
                Dictionary <String, Object> myProviderKeys =
                    new Dictionary <string, object>
                {
                    { "EnrollmentStatus", model.EnrollmentStatus },
                };


                //QC 4500: add any keys that are passed-in to the collection we're using here so they get passed back out.
                if (providerKeys != null && providerKeys.Keys != null)
                {
                    foreach (string key in providerKeys.Keys)
                    {
                        if (!myProviderKeys.ContainsKey(key))
                        {
                            myProviderKeys.Add(key, providerKeys[key]);
                        }
                    }
                }

                member.FirstName        = model.FirstName;
                member.LastName         = model.LastName;
                member.DisplayName      = model.DisplayName;
                member.Source           = model.Source;
                member.YearOfBirth      = Convert.ToInt16(model.YearOfBirth);
                member.USPostalCode     = model.USPostalCode;
                member.SALTSchoolTypeID = Convert.ToInt16(model.SALTSchoolTypeID);

                member.MemberId = Convert.ToInt32(model.MembershipId);

                member.ContactFrequency = model.ContactFrequency;

                // MembershipId on the avectra profile is a friendly string meant for customer service use. This is translated to MembershipAccountId in the MemberProfileData instance.
                // Note that MembershipId within the Wtf API refers to the internal unique identifier for the user cross system.
                // This identifier is not safe to send to the client for securty reasons so the friendly accuount ID in the form of MembershipAccountId is used instead.
                member.MembershipStartDate = model.MembershipStartDate;

                member.EmailAddress       = model.Emails[0].EmailAddress;
                member.GradeLevel         = model.GradeLevel;
                member.EnrollmentStatus   = model.EnrollmentStatus;
                member.ActiveDirectoryKey = !string.IsNullOrWhiteSpace(model.ActiveDirectoryKey)
                                                ? new Guid(model.ActiveDirectoryKey)
                                                : Guid.Empty;
                member.ProviderKeys = myProviderKeys;
                Guid systemId;
                if (member.ActiveDirectoryKey == Guid.Empty &&
                    myProviderKeys.ContainsKey("ActiveDirectoryKey") &&
                    myProviderKeys["ActiveDirectoryKey"] != null && Guid.TryParse(myProviderKeys["ActiveDirectoryKey"].ToString(), out systemId) && systemId != Guid.Empty
                    )
                {
                    member.ActiveDirectoryKey = systemId;
                }

                _log.Debug(logMethodName + "End Method");

                return(member);
            }
            else
            {
                _log.Debug(logMethodName + "End Method");


                return(null);
            }
        }
Esempio n. 29
0
        private ASAMemberModel RetrieveASAMemberModel(Object memberId, Dictionary <String, Object> providerKeys = null)
        {
            ASAMemberModel model        = null;
            Object         membershipId = null;
            //Minor hack on top of the email hack to ensure the correct ID's are being used for storage of objects into other stores
            //BIG TODO : Cleaner implmentation of get user that allows both email and ID to work without conflicting calls and types
            //will likely require some kind of credential key object.
            String memberIdKey = "ASAMemberId[" + memberId.ToString() + "]";

            if (memberId.ToString().IndexOf('@') == -1)
            {
                membershipId = memberId;
            }
            else
            {
                if (HttpContext.Current.Items[memberIdKey] != null)
                {
                    membershipId = HttpContext.Current.Items[memberIdKey];
                }
            }

            String logMethodName = ".RetrieveASAMemberModel(Object memberId, Dictionary<String, Object> providerKeys = null) - ";

            _log.Debug(logMethodName + "Begin Method");
            _log.Debug(logMethodName + "Getting ASAMemberModel for memberId : " + memberId);

            String modelKey       = "ASAMemberModel[" + membershipId + "]";
            String modelLoadedKey = "ASAMemberModelLoaded[" + membershipId + "]";

            Boolean modelLoaded = false;

            if (membershipId != null && HttpContext.Current.Items[modelLoadedKey] != null)
            {
                Boolean.TryParse(HttpContext.Current.Items[modelLoadedKey].ToString(), out modelLoaded);
            }

            if (modelLoaded)
            {
                _log.Debug(logMethodName + "Trying to load from Request persistence.");

                model = HttpContext.Current.Items[modelKey] as ASAMemberModel;

                _log.Debug(logMethodName + "ASAMemberModel Loaded from Request persistence");
            }
            else
            {
                _log.Debug(logMethodName + "ASAMemberModel NOT FOUND in Request persistence. Querying Avectra.");

                AsaMemberAdapter adapter = new AsaMemberAdapter();
                //TODO - JHL: Added for demo only
                if (memberId.ToString().IndexOf('@') == -1)
                {
                    Guid systemId;

                    if (Guid.TryParse(memberId.ToString(), out systemId) && systemId != Guid.Empty)
                    {
                        _log.Debug(logMethodName + "Calling AsaMemberAdapter.GetMember(Guid systemId) - memberId = '" + systemId.ToString() + "'");
                        model = adapter.GetMember(systemId);

                        if (model != null)
                        {
                            if (!HttpContext.Current.Items.Contains("MembershipId"))
                            {
                                HttpContext.Current.Items.Add("MembershipId", model.MembershipId);
                            }
                        }
                        _log.Debug(logMethodName + "Call to AsaMemberAdapter.GetMember(Guid systemId) COMPLETED - memberId = '" + systemId.ToString() + "'");
                    }
                    else if (providerKeys != null)
                    {
                        if (providerKeys["IndividualId"] != null)
                        {
                            _log.Debug(logMethodName + "Calling AsaMemberAdapter.GetMember(Guid systemId) - individualId = '" + systemId.ToString() + "'");
                            model = adapter.GetMember(new Guid((string)providerKeys["IndividualId"]));
                            _log.Debug(logMethodName + "Call to AsaMemberAdapter.GetMember(Guid systemId) COMPLETED - individualId = '" + systemId.ToString() + "'");
                        }
                        else if (providerKeys["ActiveDirectoryKey"] != null && Guid.TryParse(providerKeys["ActiveDirectoryKey"].ToString(), out systemId) && systemId != Guid.Empty)
                        {
                            _log.Debug(logMethodName + "Calling AsaMemberAdapter.GetMember(Guid systemId) - memberId from ProviderKeys = '" + systemId.ToString() + "'");
                            model = adapter.GetMember(systemId);
                            _log.Debug(logMethodName + "Call to AsaMemberAdapter.GetMember(Guid systemId) COMPLETED - memberId from ProviderKeys= '" + systemId.ToString() + "'");
                        }
                    }
                }
                else
                {
                    _log.Debug(logMethodName + "Calling AsaMemberAdapter.GetMemberByEmail(String email) - email = '" + memberId.ToString() + "'");
                    model = adapter.GetMemberByEmail(memberId.ToString());
                    _log.Debug(logMethodName + "Call to AsaMemberAdapter.GetMemberByEmail(String email) COMPLETED - email = '" + memberId.ToString() + "'");
                }

                //cov-10328 - check for nulls
                if (model != null)
                {
                    membershipId = model.ActiveDirectoryKey;

                    memberIdKey    = "ASAMemberId[" + model.Emails.FirstOrDefault(m => m.IsPrimary == true).EmailAddress + "]";
                    modelKey       = "ASAMemberModel[" + membershipId.ToString() + "]";
                    modelLoadedKey = "ASAMemberModelLoaded[" + membershipId.ToString() + "]";

                    HttpContext.Current.Items[memberIdKey]    = memberId;
                    HttpContext.Current.Items[modelKey]       = model;
                    HttpContext.Current.Items[modelLoadedKey] = true;

                    _log.Debug(logMethodName + "ASAMemberModel Loaded into Request persistence");
                }
                else
                {
                    //allocate empty model
                    model = new ASAMemberModel();
                    _log.Warn(logMethodName + "ASAMemberModel NOT Loaded into Request persistence");
                }
            }

            _log.Debug(logMethodName + "End Method");
            return(model);
        }
Esempio n. 30
0
        /// <summary>
        /// Build the constant parts of the url string for Quatrics TA call.
        /// </summary>
        /// <returns>string to containing the common data components of url parameter list</returns>
        public string BuildDataString(ASAMemberModel member)
        {
            string emailAddress = member.PrimaryEmailKey;
            string firstName    = member.FirstName;
            string lastName     = member.LastName;
            string membershipId = member.MembershipId;
            string contact      = member.ContactFrequency == true ? "no" : "yes"; //do not contact true-no(do not contact) false-yes(contact)

            List <string> listOfOrganizationNames = new List <string>();
            List <string> listOfOrganizationTypes = new List <string>();

            foreach (MemberOrganizationModel organization in member.Organizations)
            {
                listOfOrganizationNames.Add(organization.OrganizationName);
                listOfOrganizationTypes.Add(organization.OrganizationTypeExternalId);
            }

            //need to have ten organization names and types in the array
            string[] organizationNames = new string[10];
            string[] organizationTypes = new string[10];

            for (int i = 0; i < 10; i++)
            {
                if (i < listOfOrganizationNames.Count)
                {
                    organizationNames[i] = listOfOrganizationNames[i];
                    organizationTypes[i] = listOfOrganizationTypes[i];
                }
                else
                {
                    organizationNames[i] = string.Empty;
                    organizationTypes[i] = string.Empty;
                }
            }

            string dataPart = String.Format("&Email={0}&FirstName={1}&LastName={2}&ExternalDataRef={3}&ED[Contact]={4}&ED[Org0]={5}&ED[Org0Type]={6}&ED[Org1]={7}&ED[Org1Type]={8}&ED[Org2]={9}&ED[Org2Type]={10}&ED[Org3]={11}&ED[Org3Type]={12}&ED[Org4]={13}&ED[Org4Type]={14}&ED[Org5]={15}&ED[Org5Type]={16}&ED[Org6]={17}&ED[Org6Type]={18}&ED[Org7]={19}&ED[Org7Type]={20}&ED[Org8]={21}&ED[Org8Type]={22}&ED[Org9]={23}&ED[Org9Type]={24}",
                                            emailAddress,
                                            firstName,
                                            lastName,
                                            membershipId,
                                            contact,
                                            organizationNames[0],
                                            organizationTypes[0],
                                            organizationNames[1],
                                            organizationTypes[1],
                                            organizationNames[2],
                                            organizationTypes[2],
                                            organizationNames[3],
                                            organizationTypes[3],
                                            organizationNames[4],
                                            organizationTypes[4],
                                            organizationNames[5],
                                            organizationTypes[5],
                                            organizationNames[6],
                                            organizationTypes[6],
                                            organizationNames[7],
                                            organizationTypes[7],
                                            organizationNames[8],
                                            organizationTypes[8],
                                            organizationNames[9],
                                            organizationTypes[9]);

            return(dataPart);
        }