示例#1
0
        /// <summary>
        /// Редактировать профиль пользователя
        /// </summary>
        /// <param name="registrationUser">Данные, на которые нужно изменить профиль</param>
        /// <param name="userManager">Менеджер</param>
        /// <returns></returns>
        public async Task <ResultCrmDb> EditProfile(RegistrationUserArgs registrationUser, string userManager)
        {
            var result        = new ResultCrmDb();
            var userManagerId = userManager == null ? null : await _crmDbContext.User.Where(f => f.Account == userManager).FirstOrDefaultAsync();

            var user = await _crmDbContext.User.FirstOrDefaultAsync(f => f.Account == registrationUser.Account);

            if (user == null)
            {
                result.AddError("crm002", "Пользователя с таким аакаунтом не существует");
                result.Succeeded = false;
                return(result);
            }

            user.Email      = registrationUser.Email;
            user.Name       = registrationUser.Name;
            user.Surname    = registrationUser.Surname;
            user.Middlename = registrationUser.Middlename;
            user.Phone      = registrationUser.Phone;
            _crmDbContext.Update(user);
            await _crmDbContext.SaveChangesAsync();

            result.Succeeded = true;
            return(result);
        }
示例#2
0
        /// <summary>
        /// Регистрация пользователя в БД CRM
        /// </summary>
        /// <param name="registration"></param>
        /// <param name="userManager"></param>
        /// <returns></returns>
        public async Task <ResultCrmDb> RegistrationUser(RegistrationUserArgs registration, string userManager)
        {
            var result        = new ResultCrmDb();
            var userManagerId = await _crmDbContext.User.Where(f => f.Account == userManager).FirstOrDefaultAsync();

            var typeUserId = await _crmDbContext.TypeUser.Where(s => s.Sysname == "PLAYER").FirstOrDefaultAsync();

            var countUser = await _crmDbContext.User.CountAsync(c => c.Account.ToLower() == registration.Account.ToLower());

            if (countUser > 0)
            {
                result.Succeeded = false;
                result.AddError("crm001", "Пользователь с таким логином уже существует");
                return(result);
            }
            var user = new User();

            user.Account    = registration.Account;
            user.Email      = registration.Email;
            user.Name       = registration.Name;
            user.Surname    = registration.Surname;
            user.Middlename = registration.Middlename;
            user.TypeUser   = typeUserId;
            _crmDbContext.User.Add(user);
            await _crmDbContext.SaveChangesAsync();

            result.Succeeded = true;
            return(result);
        }
        public async Task <ResultCrmDb> EditUserAsync(RegistrationUserArgs args)
        {
            var           result     = new ResultCrmDb();
            var           errors     = 0;
            List <string> textErrors = new List <string>();

            try
            {
                if (string.IsNullOrWhiteSpace(args.Account))
                {
                    textErrors.Add("аккаунт пользователя не указан");
                    errors++;
                }
                if (string.IsNullOrWhiteSpace(args.Name))
                {
                    textErrors.Add("имя пользователя не указано");
                    errors++;
                }
                var editable = await _crmDbContext.user.FirstOrDefaultAsync(c => c.Account.ToLower() == args.Account.ToLower());

                if (editable == null)
                {
                    textErrors.Add("пользователь с таким логином отсутствует");
                    errors++;
                }
                if (errors > 0)
                {
                    throw new Exception();
                }
                editable.Email      = args.Email;
                editable.Phone      = args.Phone;
                editable.Name       = args.Name;
                editable.Surname    = args.Surname;
                editable.Middlename = args.Middlename;
                if (args.Password == args.ConfirmPassword && !string.IsNullOrWhiteSpace(args.Password))
                {
                    //запрос к is4 на смену пароля
                }
                _crmDbContext.user.Update(editable);
                await _crmDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                var err = "";

                if (errors > 0)
                {
                    err = string.Join(",\n", textErrors.ToArray());
                }
                else
                {
                    err = e.Message;
                }
                var patternError = $"Ошибка регистрации пользователя:\n {err}.";
                result.AddError("", $"{patternError}");
            }
            return(result);
        }
        public async Task <ResultCrmDb> RegisterUserAsync(RegistrationUserArgs args)
        {
            var           result     = new ResultCrmDb();
            var           errors     = 0;
            List <string> textErrors = new List <string>();

            try
            {
                if (string.IsNullOrWhiteSpace(args.Account))
                {
                    textErrors.Add("аккаунт пользователя не указан");
                    errors++;
                }
                if (string.IsNullOrWhiteSpace(args.Surname))
                {
                    textErrors.Add("Фамилия пользователя не указана");
                    errors++;
                }
                if (errors > 0)
                {
                    throw new Exception();
                }
                var countUser = await _crmDbContext.User.CountAsync(c => c.Account.ToLower() == args.Account.ToLower());

                if (countUser > 0)
                {
                    textErrors.Add("пользователь с таким логином уже существует");
                    errors++;
                }
                var user = new User();
                user.Account    = args.Account;
                user.Email      = args.Email;
                user.Phone      = args.Phone;
                user.Name       = args.Name;
                user.Surname    = args.Surname;
                user.Middlename = args.Middlename;
                await _crmDbContext.user.AddAsync(user);

                await _crmDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                var err = "";

                if (errors > 0)
                {
                    err = string.Join(",\n", textErrors.ToArray());
                }
                else
                {
                    err = e.Message;
                }
                var patternError = $"Ошибка регистрации пользователя:\n {err}.";
                result.AddError("", $"{patternError}");
            }
            return(result);
        }
        //public ResultCrmDb ChangePassword(RegistrationUserArgs account)
        //{
        //    var result = new ResultCrmDb();
        //    try
        //    {
        //        result = RestExtensions.SendPostAnonymous<ResultCrmDb>("", "", account);
        //    }
        //    catch (Exception e)
        //    {
        //        result.AddError("", e.Message);
        //    }
        //    return result;
        //}
        public ResultCrmDb EditUser(RegistrationUserArgs args)
        {
            var result = new ResultCrmDb();

            try
            {
                result = RestExtensions.SendPostAnonymous <ResultCrmDb>("", "", args);
            }
            catch (Exception e)
            {
                result.AddError("", e.Message);
            }
            return(result);
        }
        public async Task <IActionResult> EditProfile([FromBody] RegistrationUserArgs registration)
        {
            var result = await _managerProfile.EditProfile(registration, GetUserName());

            if (!result.Succeeded)
            {
                return(new ObjectResult(JsonConvert.SerializeObject(result.Errors))
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }

            return(Tools.CreateResult(true, "", ""));
        }
        /// <summary>
        /// Регистрация нового пользователя
        /// </summary>
        /// <param name="model">Модель параметров для регистрации</param>
        /// <returns></returns>
        public async Task <IActionResult> Register(RegistrationUserArgs model)
        {
            var user = new ApplicationUser {
                UserName = model.Account, Email = model.Email
            };

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

            if (!result.Succeeded)
            {
                return(Tools.CreateResult(false, "Ошибка регистрации пользователя", result));
            }

            result = await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.GivenName, user.UserName));

            if (!result.Succeeded)
            {
                return(Tools.CreateResult(false, "Ошибка регистрации пользователя", result));
            }

            var resultCrm = await _managerProfile.RegistrationUser(model, null);

            if (!resultCrm.Succeeded)
            {
                await _userManager.DeleteAsync(user);

                return(Tools.CreateResult(false, "Ошибка регистрации пользователя", resultCrm));
                //throw new UserMessageException(JsonConvert.SerializeObject(resultCrm.Errors));
            }
            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

            string codeurl = HttpUtility.UrlEncode(code);

            try
            {
                await SentResetPasswordEmail(user.Email, codeurl, "ConfirmEmail");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                _logger.LogError(e, e.Message);
            }

            return(Tools.CreateResult(true, "", new ResultCrmDb {
                Succeeded = true
            }));
        }
        public async Task <IActionResult> EditProfile([FromBody] RegistrationUserArgs registration)
        {
            if (registration.Account != GetUserName())
            {
                return new ObjectResult("Нет доступа")
                       {
                           StatusCode = 403
                       }
            }
            ;
            var result = await _managerProfile.EditProfile(registration, null);

            if (!result.Succeeded)
            {
                return(new ObjectResult(JsonConvert.SerializeObject(result.Errors))
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }
            return(Json(true));
        }
        /// <summary>
        /// Регистрация нового пользователя c с установкой им пароля
        /// </summary>
        /// <param name="model">Модель параметров для регистрации</param>
        /// <returns></returns>
        public async Task <IActionResult> RegisterAndSetPassword(RegistrationUserArgs model)
        {
            var user = new ApplicationUser {
                UserName = model.Account, Email = model.Email
            };

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

            if (!result.Succeeded)
            {
                return(Tools.CreateResult(false, "Ошибка регистрации пользователя", result));
            }

            result = await _userManager.AddClaimAsync(user, new Claim("given_name", user.UserName));

            if (!result.Succeeded)
            {
                return(Tools.CreateResult(false, "Ошибка регистрации пользователя", result));
            }

            var resultCrm = await _managerProfile.RegistrationUser(model, null);

            if (!resultCrm.Succeeded)
            {
                await _userManager.DeleteAsync(user);

                return(Tools.CreateResult(false, "Ошибка регистрации пользователя", resultCrm));
            }
            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

            await ConfirmEmail(model.Account, code);

            return(Tools.CreateResult(true, "", new ResultCrmDb {
                Succeeded = true
            }));
        }
 public async Task <IActionResult> RegistrationUserAndSetPassword([FromBody] RegistrationUserArgs registration)
 {
     return(await _registrationUserAdapter.RegisterAndSetPassword(registration));
 }
 public async Task <IActionResult> RegisterUser(RegistrationUserArgs args)
 {
     return(Tools.CreateResult(true, "", await _users.RegisterUserAsync(args)));
 }