Example #1
0
        /// <summary>
        /// Общий обработчик для получения модели профиля пользователя.
        /// </summary>
        /// <param name="profile">Найденный профиль.</param>
        /// <param name="portalUser">Пользователь.</param>
        /// <param name="currentUserName">Имя пользователя для сопряжения.</param>
        /// <returns>Модель профиля пользователя.</returns>
        protected async Task <PortalUserProfileModel> ProcessProfile(PortalUserProfile profile, PortalUser portalUser, string currentUserName)
        {
            var fileRepository = StartEnumServer.Instance.GetRepository <IStoredFileRepository>();

            var model = new PortalUserProfileModel();

            var mapper = StartEnumServer.Instance.GetMapper();

            mapper.Map(portalUser, model);

            if (profile != null)
            {
                mapper.Map(profile, model);
                if (profile.AvatarID != null)
                {
                    model.AvatarUrl = await fileRepository.GetFileUrl(profile.AvatarID.Value);
                }
            }

            if (!string.IsNullOrWhiteSpace(currentUserName) && !string.Equals(portalUser.UserName, currentUserName, StringComparison.OrdinalIgnoreCase))
            {
                var user = await StartEnumServer.Instance.GetRepository <IPortalUserRepository>()
                           .GetByName(currentUserName);

                if (user != null)
                {
                    model.IsFollowing = await StartEnumServer.Instance.GetRepository <IUserFollowingMapRepository>()
                                        .IsFollowing(user.PortalUserID, portalUser.PortalUserID);
                }
            }

            return(model);
        }
Example #2
0
        /// <summary>
        /// Реализация исполнения шага.
        /// </summary>
        /// <param name="state">Параметры шага.</param>
        /// <returns>Результат действия.</returns>
        public override async Task <StepResult> Execute(AccountRegisterParams state)
        {
            var logger = StartEnumServer.Instance.GetLogger();

            logger.LogInfo <AccountRegisterStep>(
                $"Старт обработки регистрации пользователя {state.Request.UserName} из ip={state.Request.Ip}",
                new LoggerParameter("ClientIp", state.Request.Ip),
                new LoggerParameter("Login", state.Request.UserName),
                new LoggerParameter("Email", state.Request.Email));
            if (!await CheckPassword(state))
            {
                return(Success());
            }

            if (!await CheckEmail(state))
            {
                return(Success());
            }

            var user = new Users.Auth.IdentityUser
            {
                UserName   = state.Request.UserName,
                Email      = state.Request.Email,
                FirstName  = state.Request.FirstName,
                LastName   = state.Request.LastName,
                MiddleName = state.Request.MiddleName
            };

            if (string.IsNullOrWhiteSpace(user.FirstName))
            {
                user.FirstName = String.Empty;
            }

            if (string.IsNullOrWhiteSpace(user.LastName))
            {
                user.LastName = String.Empty;
            }

            if (!await CheckUser(state, user))
            {
                return(Success());
            }

            var result = await _userManager.CreateAsync(user, state.Request.Password);

            var iProfileRepository = StartEnumServer.Instance.GetRepository <IPortalUserProfileRespository>();

            var profile = new PortalUserProfile();

            profile.PortalUserID        = user.PortalUserID;
            profile.StatusText          = string.Empty;
            profile.PortalUserProfileID = Guid.NewGuid();

            await iProfileRepository.SaveNew(profile);

            if (result.Succeeded)
            {
                state.Response = new AccountRegistredResponse
                {
                    UserId   = user.PortalUserID,
                    UserName = state.Request.UserName
                };
            }
            else
            {
                state.Response = new ErrorRegistrationResponse(string.Join(" ", result.Errors));
            }

            return(Success());
        }