Beispiel #1
0
        public static bool validateMemberOrganizationModel(MemberOrganizationModel MemberOrganizationModel)
        {
            var validationResults = new List <ValidationResult>();
            //validate MemberOrganizationModel
            var  validationContext = new ValidationContext(MemberOrganizationModel, serviceProvider: null, items: null);
            bool isValid           = System.ComponentModel.DataAnnotations.Validator.TryValidateObject(MemberOrganizationModel, validationContext, validationResults, true);

            return(isValid);
        }
Beispiel #2
0
        private IdentityResult AddSSOCoreAttributes(IdentityResult result, SiteMemberModel memberModel, string partnerName, bool getsAdditionalValues)
        {
            //Add core attributes
            result.Identity = memberModel.PrimaryEmailKey;
            result.AddAttribute("FirstName", memberModel.FirstName);
            result.AddAttribute("LastName", memberModel.LastName);
            result.AddAttribute("Email", memberModel.PrimaryEmailKey);
            result.AddAttribute("PartnerName", partnerName);

            if (getsAdditionalValues)
            {
                string oeCode = "000000", branchCode = "00", oeAndBranch, organizationName = "", organizationLogoName = "", isMemberBenefit = "false";
                //determine where a single org info is required to be provided
                MemberOrganizationModel determinedOrg = new MemberOrganizationModel();
                //Connection with remote Learner
                if (partnerName == "SaltIDP/RemoteLearner/PSP_Dev_ConnectionTo_MoodlePortal" || partnerName == "SaltIDP/RemoteLearner/PSP_Test_ConnectionTo_MoodlePortal" || partnerName == "SaltIDP/RemoteLearner/PSP_Stage_ConnectionTo_MoodlePortal" || partnerName == "SaltIDP/RemoteLearner/PSP_Prod_ConnectionTo_MoodlePortal")
                {
                    //pick determined org based on determined org id
                    if (memberModel.OrganizationIdForCourses != null)
                    {
                        determinedOrg = memberModel.Organizations.Find(o => o.OrganizationId.ToString() == memberModel.OrganizationIdForCourses);
                    }
                    else if (memberModel.Organizations.Count() == 1) //no org determined and there's a single org
                    {
                        determinedOrg = memberModel.Organizations[0];
                    }
                }
                else
                {
                    //pick the first org for Jive. Internships won't get in here since it sets getsAdditionalValues = false;
                    determinedOrg = memberModel.Organizations[0];
                }

                if (determinedOrg.OECode != null)
                {
                    oeCode = determinedOrg.OECode;
                }
                if (determinedOrg.BranchCode != null)
                {
                    branchCode = determinedOrg.BranchCode;
                }
                oeAndBranch          = oeCode + branchCode;
                organizationName     = determinedOrg.OrganizationName;
                organizationLogoName = determinedOrg.OrganizationLogoName;
                isMemberBenefit      = (!string.IsNullOrWhiteSpace(determinedOrg.OrganizationLogoName) && !determinedOrg.OrganizationLogoName.Equals("nologo", StringComparison.OrdinalIgnoreCase)).ToString();
                result.AddAttribute("OECode", oeCode);
                result.AddAttribute("OEBranch", oeAndBranch);
                result.AddAttribute("SchoolName", organizationName);
                result.AddAttribute("SchoolLogoName", organizationLogoName);
                result.AddAttribute("IsMemberBenefit", isMemberBenefit); //as far as business this is not used/set in courses, may need to confer with oleg though
                result.AddAttribute("MembershipId", memberModel.MembershipId);
            }

            return(result);
        }
Beispiel #3
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);
        }
Beispiel #4
0
        /// <summary>
        /// To the domain object for member organization.
        /// </summary>
        /// <param name="organizationContracts">member organization contracts.</param>
        /// <returns></returns>
        public static List <MemberOrganizationModel> ToDomainObject(this MemberOrganizationContract[] organizationContracts)
        {
            var toReturn = new List <MemberOrganizationModel>()
            {
            };

            if (organizationContracts != null)
            {
                foreach (var item in organizationContracts)
                {
                    var model = new MemberOrganizationModel();

                    //MemberOrganization Data
                    model.MemberId               = item.MemberID;
                    model.OrganizationId         = item.RefOrganizationID;
                    model.OrganizationExternalID = item.OrganizationExternalID;
                    model.ExpectedGraduationYear = item.ExpectedGraduationYear;
                    model.ReportingId            = item.SchoolReportingID;
                    model.EffectiveStartDate     = item.EffectiveStartDate;
                    model.EffectiveEndDate       = item.EffectiveEndDate;

                    model.IsPrimary  = true;
                    model.Brand      = !string.IsNullOrEmpty(item.OrganizationLogoName) ? item.OrganizationLogoName : "nologo";
                    model.SchoolType = item.RefSALTSchoolTypeID;

                    //RefOrganization Data
                    model.OrganizationName           = item.OrganizationName;
                    model.IsContracted               = item.IsContracted;
                    model.OECode                     = item.OECode;
                    model.BranchCode                 = item.BranchCode;
                    model.OrganizationLogoName       = item.OrganizationLogoName;
                    model.OrganizationAliases        = item.OrganizationAliases;
                    model.RefSALTSchoolTypeID        = item.RefSALTSchoolTypeID;
                    model.IsLookupAllowed            = item.IsLookupAllowed;
                    model.RefOrganizationTypeId      = item.RefOrganizationTypeID;
                    model.OrganizationTypeExternalId = item.OrganizationTypeExternalID;

                    toReturn.Add(model);
                }
            }

            return(toReturn);
        }
Beispiel #5
0
        public ASAMemberModel RegisterMember(ASAMemberModel memberIn, bool logon = false)
        {
            const string logMethodName = ".RegisterMember(ASAMemberModel memberIn) - ";

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

            bool validModel = ASAMemberValidation.ValidateASAMember(memberIn);

            if (validModel)
            {
                //If no organization has been supplied check to see if a school has been supplied; this is for backwards compatibility,
                //if no organization or school, allocate one and set to No School Selected
                if (memberIn.Organizations == null || memberIn.Organizations.Count == 0)
                {
                    if (memberIn.Schools == null || memberIn.Schools.Count == 0)
                    {
                        MemberOrganizationModel mom = new MemberOrganizationModel()
                        {
                            OECode = "000000", BranchCode = "00"
                        };
                        memberIn.Organizations = new List <MemberOrganizationModel>()
                        {
                            mom
                        };
                        Log.Info(logMethodName + String.Format("Organization manually added for member: {0}. Set to No School Selected", memberIn.Emails[0].EmailAddress));
                    }
                    else
                    {
                        MemberOrganizationModel mom = new MemberOrganizationModel()
                        {
                            OECode = memberIn.Schools[0].OECode, BranchCode = memberIn.Schools[0].BranchCode, ExpectedGraduationYear = memberIn.ExpectedGraduationYear
                        };
                        memberIn.Organizations = new List <MemberOrganizationModel>()
                        {
                            mom
                        };
                        Log.Info(logMethodName + String.Format("Organization copied from school model for member: {0}.", memberIn.Emails[0].EmailAddress));
                    }
                }

                //only 2 items should be entered per registration and they should not be the same
                if (memberIn.Organizations.Count == 2)
                {
                    //will count the unique organization ids, should be 2, if 1 then they are the same, remove one
                    if (1 == memberIn.Organizations.GroupBy(o => o.OrganizationId).Count())
                    {
                        memberIn.Organizations.RemoveAt(1);
                        Log.Info(logMethodName + String.Format("Duplicate Organization removed for member: {0} and continuing to process", memberIn.Emails[0].EmailAddress));
                    }
                }

                if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Session != null)
                {
                    Log.Debug(logMethodName + "ClearSession being called at the beginning of Regsitration process");
                    Utility.BaseSession.ClearSession();
                }

                MemberCreationStatus createStatus;

                var member = new ASAMemberModel();

                if (_asaMemberAdapter.GetMemberByEmail(memberIn.Emails[0].EmailAddress) != null)
                {
                    var error = new ErrorModel("Error. It looks like you already have a SALT account. Visit saltmoney.org to login or to recover your password.", "WEB ASAMember Service");
                    error.Code = "DuplicateUserName";
                    member.ErrorList.Add(error);
                    Log.Debug(logMethodName + "End Method");
                    return(member);
                }

                var authInfo = new MemberAuthInfo
                {
                    Username = memberIn.Emails[0].EmailAddress,
                    Email    = memberIn.Emails[0].EmailAddress,
                    Password = memberIn.Password,
                };

                var profile = new MemberProfileData
                {
                    ContactFrequency = memberIn.ContactFrequency,
                    FirstName        = memberIn.FirstName,
                    LastName         = memberIn.LastName,
                    EmailAddress     = memberIn.Emails[0].EmailAddress,
                    Source           = memberIn.Source,
                    InvitationToken  = memberIn.InvitationToken,
                    YearOfBirth      = memberIn.YearOfBirth,
                };

                if (memberIn.Organizations.Any())
                {
                    profile.Organizations = new MemberOrganizationList <MemberOrganizationData>();
                    foreach (MemberOrganizationModel organization in memberIn.Organizations)
                    {
                        MemberOrganizationData item = new MemberOrganizationData();
                        item.OrganizationId         = organization.OrganizationId;
                        item.OECode                 = organization.OECode;
                        item.BranchCode             = organization.BranchCode;
                        item.ExpectedGraduationYear = organization.ExpectedGraduationYear;
                        item.ReportingId            = organization.ReportingId;
                        item.IsOrganizationDeleted  = organization.IsOrganizationDeleted;
                        profile.Organizations.Add(item);
                    }
                }

                var newMember = IntegrationLoader.LoadDependency <ISiteMembership>("siteMembership").CreateMember(authInfo, profile, out createStatus);

                if (createStatus != MemberCreationStatus.Success)
                {
                    var error = new ErrorModel("Error. Unable to complete your registration. Please check your information and try again.", "ASAMember Service");
                    error.Code = "GenericError";
                    member.ErrorList.Add(error);
                    Log.Debug(logMethodName + "End Method");
                    return(member);
                }

                if (logon)
                {
                    memberIn = _asaMemberAdapter.Logon(logon, memberIn.Emails[0].EmailAddress);
                    _asaMemberAdapter.SetMemberIdCookie(memberIn.MembershipId);
                }
            }

            return(memberIn);
        }