/// <summary>
        /// Método que guarda la información del Maestro Herramnetal.
        /// </summary>
        /// <returns></returns>
        private string InsertMaestro()
        {
            MaestroHerramental obj = new MaestroHerramental();

            //se asigna el valor del checkbox
            if (IsSelected)
            {
                obj.activo = true;
            }
            else
            {
                obj.activo = false;
            }
            //Asignamos los valores
            obj.Codigo           = Codigo;
            obj.descripcion      = Descripcion;
            obj.fecha_creacion   = DateTime.Now.ToShortDateString();
            obj.fecha_cambio     = DateTime.Now.ToShortDateString();
            obj.usuario_cambio   = encriptar.desencript(usuario.NombreUsuario);
            obj.usuario_creacion = encriptar.desencript(usuario.NombreUsuario);
            obj.id_clasificacion = SelectedClasificacion.IdClasificacion;
            obj.id_plano         = 0;

            //Ejecutamos el método para insertar el maestro herramental
            return(DataManager.SetMaestroHerramentales(obj));
        }
        public PUserViewModel(Usuario ModelUsuario)
        {
            user           = ModelUsuario;
            Usuario        = encriptar.desencript(user.NombreUsuario);
            Nombre         = user.Nombre;
            ApellidPaterno = user.ApellidoPaterno;
            ApellidMaterno = user.ApellidoMaterno;

            if (Module.UsuarioIsRol(user.Roles, 2))
            {
                Consultar = true;
            }
            CreateMenuItems();
        }
        /// <summary>
        /// Método para obtener  todos los registros de la tabla Usuarios.
        /// </summary>
        /// <returns>Retorns nulo si hay error.</returns>
        public IList GetUsuario(string usuario)
        {
            Encriptacion encriptar = new Encriptacion();

            try
            {
                //Establecemos la conexión a la BD.
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    string texto_normal = encriptar.desencript(usuario);

                    //Realizamos la consulta y se guardan en una lista, para retornar el resultado.
                    var Lista = (from u in Conexion.Usuarios
                                 where u.Bloqueado == false &&
                                 u.Usuario.Contains(usuario) ||
                                 u.Nombre.Contains(texto_normal) ||
                                 u.APaterno.Contains(texto_normal) ||
                                 u.AMaterno.Contains(texto_normal) ||
                                 u.Correo.Contains(texto_normal)

                                 orderby u.Nombre ascending
                                 select new
                    {
                        u.Usuario,
                        u.Password,
                        u.Nombre,
                        u.APaterno,
                        u.AMaterno,
                        u.Estado,
                        u.Usql,
                        u.Psql,
                        u.Bloqueado,
                        u.Correo,
                        u.Pathnsf
                    }).ToList();
                    //se retorna la lista
                    return(Lista);
                }
            }
            catch (Exception)
            {
                //Si hay algún error, se retorna un nulo.
                return(null);
            }
        }
        /// <summary>
        /// Método para guardar la nueva información
        /// </summary>
        public async void guardardatosnvacontrasenia()
        {
            //Incializamos los servicios de dialog.
            DialogService dialog = new DialogService();

            //Declaramos un objeto con el cual se realiza la encriptación
            Encriptacion encriptar = new Encriptacion();

            if (!string.IsNullOrEmpty(Contraseña) && !string.IsNullOrEmpty(ConfirmarContraseña))
            {
                // Validamos la longuitud de la contraseña
                if (Contraseña.Length >= 7 && ConfirmarContraseña.Length >= 7)
                {
                    // Validamos que sean iguales
                    if (Contraseña == ConfirmarContraseña)
                    {
                        // Validamos que la contraseña nueva sea diferente a la anterior
                        if (ConfirmarContraseña != encriptar.desencript(User.Password))
                        {
                            // Actualizamos el registro de la contraseña en la tabla Usuarios
                            DataManagerControlDocumentos.UpdatePass(User.NombreUsuario, encriptar.encript(Contraseña));

                            // Declaramos el valor a 0
                            bool temporal_password = false;

                            // Actualizar el valor de temporal password
                            DataManager.Update_TemporalPassword(User.NombreUsuario, temporal_password);

                            //Obtenemos la pantalla actual, y casteamos para que se tome como tipo MetroWindow.
                            var window = System.Windows.Application.Current.Windows.OfType <MetroWindow>().LastOrDefault();

                            // Cambiamos la variable a verdadero
                            CierrePantalla = true;

                            //Mensaje de que la contrase;a se guardo correctamente
                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaGuardada);

                            //Verificamos que la pantalla sea diferente de nulo
                            if (window != null)
                            {
                                //Cerramos la pantalla
                                window.Close();
                            }
                        }
                        else
                        {
                            //Mensaje para notificar que  la contraseña no debe de ser igual a la anterior.
                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaNoValida);
                        }
                    }
                    else
                    {
                        // Mensaje para notificar que las constraseñas no coinciden.
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgContraseñaActualDiferente);
                    }
                }
                else
                {
                    // Mensaje para notificar que las constraseñas necesita más carácteres.
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgErrorContraseña);

                    //msgErrorContraseña
                }
            }
            else
            {
                // Mensaje para notificar que las constraseñas necesita más carácteres
                await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgErrorContraseña);

                //msgErrorContraseña
            }
        }
        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);
                }
            }
        }