コード例 #1
0
        public Tuple <bool, string> FixMissingUserProfiles()
        {
            bool   success = true;
            string result  = String.Empty;

            var missingProfiles = _departmentMembersRepository.GetAllMissingUserProfiles();

            foreach (var missingProfile in missingProfiles)
            {
                try
                {
                    var user = _usersService.GetUserById(missingProfile.UserId);

                    UserProfile profile = new UserProfile();
                    profile.UserId          = user.UserId;
                    profile.MembershipEmail = user.Email;

                    var webProfile = ProfileBase.Create(user.UserName, true);

                    if (webProfile != null)
                    {
                        var firstName = webProfile.GetPropertyValue("FirstName").ToString();
                        var lastName  = webProfile.GetPropertyValue("LastName").ToString();

                        if (!String.IsNullOrWhiteSpace(firstName) && !String.IsNullOrWhiteSpace(lastName))
                        {
                            profile.FirstName = firstName;
                            profile.LastName  = lastName;
                        }
                        else
                        {
                            var name = webProfile.GetPropertyValue("Name").ToString();

                            if (!String.IsNullOrWhiteSpace(name))
                            {
                                profile.FirstName = name;
                            }
                        }
                    }
                    else
                    {
                        profile.FirstName = "Unknown";
                        profile.LastName  = "User";
                    }

                    _userProfileService.SaveProfile(missingProfile.DepartmentId, profile);
                }
                catch (Exception ex)
                {
                    success = false;
                    result  = ex.ToString();
                }
            }

            var departmentIds = missingProfiles.Select(x => x.DepartmentId).Distinct();

            foreach (var departmentId in departmentIds)
            {
                _userProfileService.ClearAllUserProfilesFromCache(departmentId);
                var profiles = _userProfileService.GetAllProfilesForDepartment(departmentId);
            }

            return(new Tuple <bool, string>(success, result));
        }