/// <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); }
/// <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); }
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()); }
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); }
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); }
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); }
/// <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"); }
/// <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); }
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); }
//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); }
public ASAMemberModel AccountMaintenance(ASAMemberModel memberIn) { String logMethodName = ".AccountMaintenance(ASAMemberModel memberIn) - "; Log.Debug(logMethodName + "Begin Method"); Log.Debug(logMethodName + "End Method"); return(memberIn); }
/// <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"); }
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; }
/// <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"); }
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); }
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); }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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() }); }
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); }
/// <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? }); }
public SelfReportedLoanListModel GetLoans(string ssn, ASAMemberModel member) { return(MockJsonLoader.GetJsonObjectFromFile <SelfReportedLoanListModel>("LoanService", "{SSN}")); }
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); } }
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); }
/// <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); }