/// <summary>
        /// Metodo para guardar los cambios hechos a los datos del usuario
        /// </summary>
        private async void guardardatos()
        {
            DialogService       dialog  = new DialogService();
            MetroDialogSettings botones = new MetroDialogSettings();

            botones.AffirmativeButtonText = StringResources.lblYes;
            botones.NegativeButtonText    = StringResources.lblNo;

            MessageDialogResult result = await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgConfirmacion, botones, MessageDialogStyle.AffirmativeAndNegative);

            if (result == MessageDialogResult.Affirmative)
            {
                //si no se modifico el campo de contraseña pasaremos a guardar los demas datos
                //pero si se modifico haremos las validaciones correspondientes
                if (string.IsNullOrEmpty(_contraseña) || string.IsNullOrEmpty(_confirmarContraseña))
                {
                    //declaramos el objeto para encriptar el usuario
                    Encriptacion encriptar = new Encriptacion();
                    //declaramos un objeto de tipo usuarios
                    objUsuario nuevosdatos = new objUsuario();

                    //pasamos los valores
                    nuevosdatos.usuario  = encriptar.encript(_usuario);
                    nuevosdatos.nombre   = _nombre;
                    nuevosdatos.password = Contraseña;
                    nuevosdatos.APaterno = _Apaterno;
                    nuevosdatos.AMaterno = _Amaterno;
                    nuevosdatos.Correo   = _correo;
                    nuevosdatos.Pathnsf  = _patnsf;
                    //datos por default
                    nuevosdatos.usql = "´©³¶´¦³";
                    nuevosdatos.psql = "´‰“sqrr";

                    //insertamos los cambios a la BD
                    int DatosUsuarios = DataManagerControlDocumentos.UpdateUsuario(nuevosdatos);

                    //obtenemos los roles que tiene un usuario
                    Usuario Dusuario = new Usuario();
                    Dusuario.NombreUsuario = nuevosdatos.usuario;

                    //borramos todos los roles que tenga un usuario
                    int borrar = DataManagerControlDocumentos.DeleteRol_Usuario(nuevosdatos.usuario);

                    //agregamos los roles
                    foreach (var item in ListaTotdosRoles)
                    {
                        if (item.selected == true)
                        {
                            Model.ControlDocumentos.Rol ObjRol = new Model.ControlDocumentos.Rol();

                            //asignamos los valores
                            ObjRol.id_rol     = item.id_rol;
                            ObjRol.id_usuario = nuevosdatos.usuario;

                            //insertamos los cambios en la BD
                            int id_rolusuario = DataManagerControlDocumentos.SetRol_Usuario(ObjRol);
                        }
                    }

                    IList RolesUsuario = DataManager.GetRoles(Dusuario.NombreUsuario);
                    Dusuario.Roles = new List <Model.Rol>();

                    foreach (var item in RolesUsuario)
                    {
                        System.Type tipo = item.GetType();
                        Model.Rol   rol  = new Model.Rol();
                        rol.idRol     = (int)tipo.GetProperty("ID_ROL").GetValue(item, null);
                        rol.NombreRol = (string)tipo.GetProperty("NOMBRE_ROL").GetValue(item, null);

                        //los agregamos a la propiedad de roles
                        Dusuario.Roles.Add(rol);
                    }

                    //eliminar todos los registros de perfil y privilegio.
                    DataManager.DeLete_PerfilUsuario(encriptar.encript(_usuario));
                    DataManager.DeletePrivilegiosUsuario(encriptar.encript(_usuario));

                    //si el usuario tiene rol de dueño de documento o administrador de CIT
                    if (Module.UsuarioIsRol(Dusuario.Roles, 2) || Module.UsuarioIsRol(Dusuario.Roles, 3))
                    {
                        Dusuario.PerfilCIT = true;
                    }
                    //si el usuario tiene rol de ingeniero
                    if (Module.UsuarioIsRol(Dusuario.Roles, 4) || Module.UsuarioIsRol(Dusuario.Roles, 5) || Module.UsuarioIsRol(Dusuario.Roles, 6) || Module.UsuarioIsRol(Dusuario.Roles, 7))
                    {
                        Dusuario.PerfilData        = true;
                        Dusuario.PerfilQuotes      = true;
                        Dusuario.PerfilRawMaterial = true;
                        Dusuario.PerfilStandarTime = true;
                        Dusuario.PerfilTooling     = true;
                        Dusuario.PerfilUserProfile = true;
                        Dusuario.PerfilRGP         = true;
                    }
                    //si el usuario tiene rol de administrador de sistema
                    if (Module.UsuarioIsRol(Dusuario.Roles, 1))
                    {
                        Dusuario.PerfilCIT         = true;
                        Dusuario.PerfilData        = true;
                        Dusuario.PerfilHelp        = true;
                        Dusuario.PerfilQuotes      = true;
                        Dusuario.PerfilRawMaterial = true;
                        Dusuario.PerfilStandarTime = true;
                        Dusuario.PerfilTooling     = true;
                        Dusuario.PerfilUserProfile = true;
                        Dusuario.PerfilRGP         = true;
                    }

                    //agregamos los perfiles y privilegios correspondientes
                    DataManager.Set_PerfilUsuario(Dusuario);
                    DataManager.Set_PrivilegiosUsuario(Dusuario);

                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgCambiosRealizados);

                    //obtenemos la ventana anterior
                    var window = Application.Current.Windows.OfType <MetroWindow>().LastOrDefault();

                    if (window != null)
                    {
                        //Cerramos la pantalla actual
                        window.Close();
                    }
                }
                else
                {
                    //verificamos que la longitud de la contraseña sea  mayor o igual que 6
                    if (_contraseña.Length >= 6)
                    {
                        //verificamos que los campos de contraseña y confirmar contraseña sean iguales
                        if (_contraseña.Equals(_confirmarContraseña))
                        {
                            //declaramos el objeto con el cual se encripta la contraseña
                            Encriptacion encriptar = new Encriptacion();

                            //declaramos un objeto de tipo usuarios
                            objUsuario nuevosdatos = new objUsuario();

                            //pasaremos los valores
                            nuevosdatos.usuario  = encriptar.encript(_usuario);
                            nuevosdatos.nombre   = _nombre;
                            nuevosdatos.APaterno = _Apaterno;
                            nuevosdatos.AMaterno = _Amaterno;
                            nuevosdatos.Correo   = _correo;
                            nuevosdatos.password = encriptar.encript(_contraseña);
                            nuevosdatos.Pathnsf  = _patnsf;
                            nuevosdatos.usql     = "´©³¶´¦³";
                            nuevosdatos.psql     = "´‰“sqrr";

                            //insertamos los datos a la BD
                            int datosusuario = DataManagerControlDocumentos.UpdateUsuario(nuevosdatos);

                            Usuario Dusuario = new Usuario();
                            Dusuario.NombreUsuario = nuevosdatos.usuario;

                            //borramos todos los roles que tenga un usuario
                            int borrar = DataManagerControlDocumentos.DeleteRol_Usuario(nuevosdatos.usuario);

                            foreach (var item in ListaTotdosRoles)
                            {
                                if (item.selected == true)
                                {
                                    Model.ControlDocumentos.Rol ObjRol = new Model.ControlDocumentos.Rol();

                                    ObjRol.id_rol     = item.id_rol;
                                    ObjRol.id_usuario = nuevosdatos.usuario;

                                    //le agregamos el rol a cada usuario
                                    int id_RolUsuario = DataManagerControlDocumentos.SetRol_Usuario(ObjRol);
                                }
                            }

                            //obtenemos los roles del usuario
                            IList RolesUsuario = DataManager.GetRoles(Dusuario.NombreUsuario);
                            Dusuario.Roles = new List <Model.Rol>();

                            foreach (var item in RolesUsuario)
                            {
                                System.Type tipo = item.GetType();
                                Model.Rol   rol  = new Model.Rol();
                                rol.idRol     = (int)tipo.GetProperty("ID_ROL").GetValue(item, null);
                                rol.NombreRol = (string)tipo.GetProperty("NOMBRE_ROL").GetValue(item, null);

                                //los agregamos a la propiedad de roles
                                Dusuario.Roles.Add(rol);
                            }
                            //borramos el perfil y los privilegios que tenga el usuario
                            DataManager.DeLete_PerfilUsuario(encriptar.encript(_usuario));
                            DataManager.DeletePrivilegiosUsuario(encriptar.encript(_usuario));

                            //si el usuario tiene rol de dueño de documento o administrador de CIT
                            if (Module.UsuarioIsRol(Dusuario.Roles, 2) || Module.UsuarioIsRol(Dusuario.Roles, 3))
                            {
                                Dusuario.PerfilCIT = true;
                            }
                            //si el usuario tiene rol de ingeniero
                            if (Module.UsuarioIsRol(Dusuario.Roles, 4) || Module.UsuarioIsRol(Dusuario.Roles, 5) || Module.UsuarioIsRol(Dusuario.Roles, 6) || Module.UsuarioIsRol(Dusuario.Roles, 7))
                            {
                                Dusuario.PerfilData        = true;
                                Dusuario.PerfilQuotes      = true;
                                Dusuario.PerfilRawMaterial = true;
                                Dusuario.PerfilStandarTime = true;
                                Dusuario.PerfilTooling     = true;
                                Dusuario.PerfilUserProfile = true;
                                Dusuario.PerfilRGP         = true;
                            }
                            //si el usuario tiene rol de administrador
                            if (Module.UsuarioIsRol(Dusuario.Roles, 1))
                            {
                                Dusuario.PerfilCIT         = true;
                                Dusuario.PerfilData        = true;
                                Dusuario.PerfilHelp        = true;
                                Dusuario.PerfilQuotes      = true;
                                Dusuario.PerfilRawMaterial = true;
                                Dusuario.PerfilStandarTime = true;
                                Dusuario.PerfilTooling     = true;
                                Dusuario.PerfilUserProfile = true;
                                Dusuario.PerfilRGP         = true;
                            }

                            //asignamos los perfiles y los privilegios correspondientes
                            DataManager.Set_PerfilUsuario(Dusuario);
                            DataManager.Set_PrivilegiosUsuario(Dusuario);

                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgCambiosRealizados);

                            //obtenemos la ventana anterior
                            var window = Application.Current.Windows.OfType <MetroWindow>().LastOrDefault();

                            if (window != null)
                            {
                                //Cerramos la pantalla actual
                                window.Close();
                            }
                        }
                        else
                        {
                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaDiferente);
                        }
                    }
                    else
                    {
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaCorta);
                    }
                }
            }
        }
        public async void guardarUsuario()
        {
            //Incializamos los servicios de dialog.
            DialogService dialog = new DialogService();

            //Declaramos un objeto de tipo MetroDialogSettings al cual le asignamos las propiedades que contendra el mensaje modal.
            MetroDialogSettings setting = new MetroDialogSettings();

            setting.AffirmativeButtonText = StringResources.lblYes;
            setting.NegativeButtonText    = StringResources.lblNo;

            //Ejecutamos el método para mostrar el mensaje. El resultado lo asignamos a una variable local.
            MessageDialogResult result = await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgConfirmacion, setting, MessageDialogStyle.AffirmativeAndNegative);

            if (result == MessageDialogResult.Affirmative)
            {
                //Valida que los campos no estén vacíos.
                if (Validar() & ValidarSelected())
                {
                    // Asignamos el valor de la constraseña random
                    _contraseña = this.GenerarPasswordAleatoria();

                    if (_contraseña.Length >= 6)
                    {
                        //Declaramos un objeto con el cual se realiza la encriptación
                        Encriptacion encriptar = new Encriptacion();
                        //Declaramos un objeto de tipo usuarios
                        objUsuario objUsuario = new objUsuario();

                        //Asignamos los valores al objeto
                        objUsuario.usuario  = encriptar.encript(_usuario);
                        objUsuario.nombre   = _nombre;
                        objUsuario.APaterno = _aPaterno;
                        objUsuario.AMaterno = _aMaterno;
                        objUsuario.password = encriptar.encript(_contraseña);
                        objUsuario.Correo   = Correo;
                        objUsuario.Pathnsf  = "";

                        //datos por default
                        objUsuario.usql = "´©³¶´¦³";
                        objUsuario.psql = "´‰“sqrr";

                        //Valida que el nombre de usuario no se repita
                        string validate = DataManagerControlDocumentos.ValidateUsuario(objUsuario);

                        //si no se repite
                        if (validate == null)
                        {
                            // Nos aseguramos que sean iguales
                            _confirmarContraseña = _contraseña;

                            //si las contraseñas son iguales
                            if (_contraseña.Equals(_confirmarContraseña))
                            {
                                //ejecutamos el método para insertar un registro a la tabla
                                string usuario = DataManagerControlDocumentos.SetUsuario(objUsuario);

                                // Declaramos la ruta para asignarle una foto de usuario por default
                                string url_foto = @"\\MXAGSQLSRV01\documents__\ESPECIFICOS\img\defaultuser.jpg";

                                // Declaramos valor para el campo
                                bool is_available_email = true;
                                bool temporal_password  = true;

                                // Ejecutamos el método para insertar los registros a la tabla TBL_USER_DETAILS
                                DataManagerControlDocumentos.Insert_UserDetail(objUsuario.usuario, url_foto, is_available_email, temporal_password);

                                Usuario _usuario = new Usuario();
                                _usuario.NombreUsuario = usuario;

                                //si el usuario es diferente de vacío
                                if (usuario != string.Empty)
                                {
                                    //Recorremos la lista de roles
                                    foreach (var item in _listaRol)
                                    {
                                        //si el rol fue seleccionado
                                        if (item.selected == true)
                                        {
                                            Model.ControlDocumentos.Rol objRol = new Model.ControlDocumentos.Rol();

                                            objRol.id_rol     = item.id_rol;
                                            objRol.id_usuario = usuario;

                                            //Agregamos el rol de cada usuario
                                            int id_rolUsuario = DataManagerControlDocumentos.SetRol_Usuario(objRol);
                                        }
                                    }

                                    //Obtenemos los roles del usuario nuevo
                                    IList Roles = DataManager.GetRoles(_usuario.NombreUsuario);
                                    _usuario.Roles = new List <Model.Rol>();
                                    foreach (var item in Roles)
                                    {
                                        System.Type tipo = item.GetType();
                                        Model.Rol   rol  = new Model.Rol();
                                        rol.idRol     = (int)tipo.GetProperty("ID_ROL").GetValue(item, null);
                                        rol.NombreRol = (string)tipo.GetProperty("NOMBRE_ROL").GetValue(item, null);

                                        //los agregamos a la propiedad de roles
                                        _usuario.Roles.Add(rol);
                                    }
                                    //si el usuario tiene rol de administrador de CIT o dueño de documento
                                    if (Module.UsuarioIsRol(_usuario.Roles, 2) || Module.UsuarioIsRol(_usuario.Roles, 3))
                                    {
                                        //usuario es admin del cit o dueño del documento
                                        _usuario.PerfilCIT = true;
                                    }
                                    //si el usuario tiene rol de ingeniero
                                    if (Module.UsuarioIsRol(_usuario.Roles, 4) || Module.UsuarioIsRol(_usuario.Roles, 5) || Module.UsuarioIsRol(_usuario.Roles, 6) || Module.UsuarioIsRol(_usuario.Roles, 7))
                                    {
                                        //usuario tiene rol de ingeniero

                                        _usuario.PerfilUserProfile = true;
                                        _usuario.PerfilData        = true;
                                        _usuario.PerfilQuotes      = true;
                                        _usuario.PerfilRawMaterial = true;
                                        _usuario.PerfilStandarTime = true;
                                        _usuario.PerfilTooling     = true;
                                        _usuario.PerfilRGP         = true;
                                    }
                                    //si el usuario tiene rol de administrador del sistema
                                    if (Module.UsuarioIsRol(_usuario.Roles, 1))
                                    {
                                        //Es administrador
                                        _usuario.PerfilCIT         = true;
                                        _usuario.PerfilData        = true;
                                        _usuario.PerfilHelp        = true;
                                        _usuario.PerfilQuotes      = true;
                                        _usuario.PerfilRawMaterial = true;
                                        _usuario.PerfilStandarTime = true;
                                        _usuario.PerfilTooling     = true;
                                        _usuario.PerfilUserProfile = true;
                                        _usuario.PerfilRGP         = true;
                                    }

                                    //agregamos los perfiles y privilegios correspondientes
                                    DataManager.Set_PerfilUsuario(_usuario);
                                    DataManager.Set_PrivilegiosUsuario(_usuario);

                                    //se muestra un mensaje de cambios realizados.
                                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgUsuarioAlta);

                                    //Obtenemos la ventana actual.
                                    var window = Application.Current.Windows.OfType <MetroWindow>().LastOrDefault();

                                    //Verificamos que la pantalla sea diferente de nulo.
                                    if (window != null)
                                    {
                                        //Cerramos la pantalla
                                        window.Close();
                                    }

                                    // Declaramos el cuerpo y título del correo
                                    string title = "Tu usuario ha sido creado";
                                    string body  = "";

                                    // Declaramos lista vacía para el parámetro
                                    ObservableCollection <Archivo> ListaVacia = new ObservableCollection <Archivo>();

                                    // Declaramos el objeto
                                    Usuario UserCreated = new Usuario();

                                    // Obtenemos el nuevo usuario creado
                                    UserCreated = DataManager.GetUsuario(objUsuario.usuario);

                                    // Declaramos lista para guardar el nuevo usuario
                                    List <objUsuario> ListaUserCreated = new List <objUsuario>();
                                    objUsuario        userCreado       = new objUsuario();
                                    // Igualamos valores
                                    userCreado.Correo   = UserCreated.Correo;
                                    userCreado.nombre   = UserCreated.Nombre;
                                    userCreado.APaterno = UserCreated.ApellidoPaterno;
                                    userCreado.AMaterno = UserCreated.ApellidoMaterno;
                                    userCreado.Details  = UserCreated.Details;
                                    ListaUserCreated.Add(userCreado);

                                    // Cargamos el cuerpo del correo
                                    body  = "<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le envío su usuario y contraseña:</P>";
                                    body += "<P><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usuario:</STRONG> " + encriptar.desencript(_usuario.NombreUsuario) + "</P>";
                                    body += "<P><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contraseña:</STRONG> " + _contraseña + "</P>";
                                    body += "<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Favor de respetar minúsculas y mayúsculas.</P>";
                                    body += "<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Para el acceso a la plataforma, favor de ingresar a la siguiente ruta:</P>";
                                    body += "<P><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TodosP/R@aul/Deploy</STRONG></P>";
                                    body += "<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;En dicha carpeta se encuentra un archivo llamado View.exe. Favor de ejecutarlo.</P>";

                                    // Abrimos ventana para notificar
                                    NotificarAViewModel vmNotificar   = new NotificarAViewModel(User, body, ListaVacia, ListaUserCreated, title, "ALTA_USUARIO", 0);
                                    WNotificarA         ventanaCorreo = new WNotificarA();
                                    ventanaCorreo.DataContext = vmNotificar;
                                    ventanaCorreo.ShowDialog();
                                }
                                else
                                {
                                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgUsuarioAltaError);
                                }
                            }
                            else
                            {
                                await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaDiferente);
                            }
                        }
                        else
                        {
                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgUsuarioExistente);
                        }
                    }
                    else
                    {
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaCorta);
                    }
                }
                else
                {
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgFillFlields);
                }
            }
        }