Exemplo n.º 1
0
        public string CreateUsuario(UsuarioViewModel model)
        {
            var rolesList = model.ArrayRoles != null?model.ArrayRoles.Split(',').ToList() : new List <string>();

            if (ValidarUsuario(model))
            {
                try
                {
                    Random r                  = new Random();
                    int    randNum            = r.Next(1000000);
                    string sixDigitNumber     = randNum.ToString("D6");
                    var    encripted_password = Encrypter.Encryption(sixDigitNumber, Parametro.GetValue("3DESKey"));
                    _logger.LogInformation("Contraseña encriptada correctamente.");
                    var usuario = new Usuario()
                    {
                        Apellido   = model.Apellido,
                        Nombre     = model.Nombre,
                        Email      = model.Email,
                        Contrasena = encripted_password
                    };

                    var result = _uow.UsuarioRepository.Create(usuario);
                    _uow.UsuarioRepository.Save();

                    foreach (var rol in rolesList)
                    {
                        var usuarioRol = new UsuarioRol()
                        {
                            RolId     = int.Parse(rol),
                            UsuarioId = result.UsuarioId
                        };
                        _uow.UsuarioRolRepository.Create(usuarioRol);
                        _uow.UsuarioRolRepository.Save();
                    }
                    var tokenGuid = Guid.NewGuid().ToString();
                    var token     = new UsuarioToken()
                    {
                        UsuarioId       = result.UsuarioId,
                        FechaExpiracion = DateTime.Now.AddMinutes(Convert.ToDouble(Helper.Parametro.GetValue("TiempoExpiracionTokenMail"))),
                        Usado           = false,
                        Token           = tokenGuid
                    };
                    MailUsuarioModel mailModel = new MailUsuarioModel()
                    {
                        TokenUrl        = tokenGuid,
                        Password        = sixDigitNumber,
                        UsuarioApellido = result.Apellido,
                        UsuarioNombre   = result.Nombre,
                        Email           = result.Email,
                        Usuario         = result.Email,
                        EsAdministrador = _uow.UsuarioRolRepository.AllIncluding(x => x.Rol).Any(x => x.UsuarioId == result.UsuarioId && x.Rol.Codigo == Helper.EstadosHelper.UsuarioDefault.ADM.ToString())
                    };

                    sender.SendMailNewUsuario(mailModel);
                    var tokenCreated = _uow.UsuarioTokenRepository.Create(token);
                    _uow.UsuarioRepository.Save();
                    _logger.LogInformation("Envio de email correctamente");
                    _logger.LogInformation("Usuario creado correctamente. Nombre de usuario: <{0}> - Roles asignados: <{1}>.", model.Nombre + " " + model.Apellido, rolesList);
                    return("Usuario creado correctamente.");
                }
                catch (Exception ex)
                {
                    _logger.LogErrorException(ex,
                                              "Ocurrió un error al crear usuario. Nombre de usuario: <{0}> - Roles asignados: <{1}>.",
                                              model.Nombre + " " + model.Apellido, rolesList.ToString());
                    throw new CreateRecordException("Ocurrió un error al crear el usuario", ex);
                }
            }
            else
            {
                _logger.LogError(
                    "[ERROR VALIDACION EN SERVER] - Ocurrió un error al crear usuario. Uno o mas datos son incorrectos.");
                return("FailModel");
            }
        }