Beispiel #1
0
        //[Authorize(Roles = "ADMIN")] // Solo administradores podrán guardar información
        private async Task <bool> Guardar_Usuario_Async()
        {
            _dataInput = MODEL_USUARIO;
            var valor = false;

            if (ModelState.IsValid)
            {
                var userList = _userManager.Users.Where(u => u.Email.Equals(MODEL_USUARIO.Email)).ToList();
                if (userList.Count.Equals(0))
                {
                    var strategy = _context.Database.CreateExecutionStrategy();
                    await strategy.ExecuteAsync(async() =>
                    {
                        using (var transaction = _context.Database.BeginTransaction())
                        {
                            try
                            {
                                var usuarioaspnet = new IdentityUser
                                {
                                    UserName    = MODEL_USUARIO.Email,
                                    Email       = MODEL_USUARIO.Email,
                                    PhoneNumber = MODEL_USUARIO.PhoneNumber
                                };
                                var result = await _userManager.CreateAsync(usuarioaspnet, MODEL_USUARIO.Password);
                                if (result.Succeeded)
                                {
                                    await _userManager.AddToRoleAsync(usuarioaspnet, MODEL_USUARIO.Role);
                                    var dataUser      = _userManager.Users.Where(u => u.Email.Equals(MODEL_USUARIO.Email)).ToList().Last();
                                    var imagenByte    = await _lCargarImagen.ByteAvatarImageAsync(MODEL_USUARIO.AvatarImage, _environment, "images/user_icon.png");
                                    var Nuevo_Usuario = new MODELO_USUARIO
                                    {
                                        USER_NOMBRE   = _dataInput.Name,
                                        USER_APELLIDO = _dataInput.LastName,
                                        USER_EMAIL    = _dataInput.Email,
                                        USER_RUT      = _dataInput.NID,
                                        USER_IMAGE    = imagenByte,
                                        USER_PASS     = _dataInput.Password,
                                        USER_ROL      = _dataInput.Role,
                                        USER_ID_USER  = dataUser.Id,
                                        USER_CELULAR  = _dataInput.PhoneNumber
                                    };
                                    await _context.AddAsync(Nuevo_Usuario);
                                    _context.SaveChanges();
                                    transaction.Commit();
                                    _dataInput = null;
                                    valor      = true;
                                }
                                else
                                {
                                    foreach (var item in result.Errors)
                                    {
                                        _dataInput.ErrorMessage = item.Description;
                                    }
                                    valor = false;
                                    transaction.Rollback();
                                }
                            }
                            catch (Exception ex)
                            {
                                _dataInput.ErrorMessage = ex.Message;
                                transaction.Rollback();
                                valor = false;
                            }
                        }
                    });
                }
                else
                {
                    _dataInput.ErrorMessage = $"El Correo {MODEL_USUARIO.Email} ya se encuentra Registrado";
                }
            }
            else
            {
                foreach (var modelState in ModelState.Values)
                {
                    foreach (var error in modelState.Errors)
                    {
                        _dataInput.ErrorMessage += error.ErrorMessage;
                    }
                }
                valor = false;
            }
            return(valor);
        }
Beispiel #2
0
        //[Authorize(Roles = "ADMIN")] // Solo administradores podrán guardar información
        private async Task <bool> Actualizar_Usuario_Async()
        {
            var valor = false;

            byte[] imageByte = null;
            var    strategy  = _context.Database.CreateExecutionStrategy();
            await strategy.ExecuteAsync(async() => {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        var identityUser = _userManager.Users.Where(u => u.Id.Equals(_DataUser2.ID)).ToList().Last();

                        identityUser.UserName    = MODEL_USUARIO.Email;
                        identityUser.Email       = MODEL_USUARIO.Email;
                        identityUser.PhoneNumber = MODEL_USUARIO.PhoneNumber;


                        _context.Update(identityUser);
                        await _context.SaveChangesAsync();

                        if (MODEL_USUARIO.AvatarImage == null)
                        {
                            imageByte = _DataUser2.Image;
                        }
                        else
                        {
                            imageByte = await _lCargarImagen.ByteAvatarImageAsync(MODEL_USUARIO.AvatarImage, _environment, "");
                        }

                        var ds_user = new MODELO_USUARIO
                        {
                            USER_ID       = _DataUser2.Id,
                            USER_NOMBRE   = MODEL_USUARIO.Name,
                            USER_APELLIDO = MODEL_USUARIO.LastName,
                            USER_RUT      = MODEL_USUARIO.NID,
                            USER_CELULAR  = MODEL_USUARIO.PhoneNumber,
                            USER_EMAIL    = MODEL_USUARIO.Email,
                            USER_ID_USER  = _DataUser2.ID,
                            USER_PASS     = MODEL_USUARIO.Password,
                            USER_IMAGE    = imageByte,
                        };
                        var usuario_pass = await _userManager.FindByIdAsync(_DataUser2.ID);
                        var code         = await _userManager.GeneratePasswordResetTokenAsync(usuario_pass);
                        var resultado    = await _userManager.ResetPasswordAsync(usuario_pass, code, MODEL_USUARIO.Password);
                        _context.Update(ds_user);
                        _context.SaveChanges();
                        if (_DataUser2.Role != MODEL_USUARIO.Role)
                        {
                            await _userManager.RemoveFromRoleAsync(identityUser, _DataUser2.Role);
                            await _userManager.AddToRoleAsync(identityUser, MODEL_USUARIO.Role);
                        }
                        transaction.Commit();
                        valor = true;
                    }
                    catch (Exception ex)
                    {
                        _dataInput.ErrorMessage = ex.Message;
                        transaction.Rollback();
                        valor = false;
                    }
                }
            });

            return(valor);
        }