private void irDashboard() { //Obtenemos la pantalla actual, y casteamos para que se tome como tipo MetroWindow. var window = Application.Current.Windows.OfType <MetroWindow>().LastOrDefault(); //Cerramos la pantalla. window.Close(); DashboardViewModel context; FDashBoard pDashBoard = new FDashBoard(); context = new DashboardViewModel(ModelUsuario); context.ModelUsuario = ModelUsuario; //NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primeva vez y tenernos en donde descanzar la primera pantalla. context.Pagina = pDashBoard; //Asignamos al DataContext de la PantallaHome el context creado anteriormente. pDashBoard.DataContext = context; //Declaramos la pantalla en la que descanzan todas las páginas. Layout masterPage = new Layout(); //Asingamos el DataContext. masterPage.DataContext = context; //Ejecutamos el método el cual despliega la pantalla. masterPage.ShowDialog(); }
async void Btn_ingresar_Click(object sender, RoutedEventArgs e) { LoginDialogSettings settings = new LoginDialogSettings(); settings.ColorScheme = MetroDialogOptions.ColorScheme; settings.PasswordWatermark = "Password"; settings.UsernameWatermark = "Username"; settings.InitialPassword = "******"; settings.InitialUsername = "******"; settings.AffirmativeButtonText = StringResources.lblBtnLogin; //Abrimos el mensaje modal para que el usuario ingrese sus credenciales, el resultado lo guardamos en una variable local. LoginDialogData result = await this.ShowLoginAsync(StringResources.ttlAuthentication, StringResources.lblEnterCredentials, settings); //Comparamos si el resultado es distinto de nulo. Si es igual a nulo quiere decir que el usuario cancelo la captura o cerró inesperadamente la pantalla. if (result != null) { //Incializamos los servicios de dialog. DialogService dialog = new DialogService(); //Declaramos un objeto de tipo ProgressDialogController, el cual servirá para recibir el resultado el mensaje progress. ProgressDialogController AsyncProgress; //Ejecutamos el método para enviar un mensaje de espera mientras se comprueban los datos. AsyncProgress = await dialog.SendProgressAsync(StringResources.lblLogIn, ""); //Declaramos un objeto con el cual se realiza la encriptación Services.Encriptacion encriptar = new Services.Encriptacion(); //Ejecutamos el método para encriptar tanto el usuario como la contraseña y los guardamos en variables locales respectivamente. string usuario = encriptar.encript(result.Username); string contrasena = encriptar.encript(result.Password); //Ejecutamos el método para verificar las credenciales, el resultado lo asignamos a un objeto local de tipo Usuario. Usuario usuarioConectado = await DataManager.GetLogin(usuario, contrasena); //Verificamos el resultado, si es direfente de nulo quiere decir que el logueo fué correcto, si es igual a nulo quiere decir que el usuario no existe con las credenciales proporcionadas. if (usuarioConectado != null) { //Ejecutamos el método para cerrar el mensaje de espera. await AsyncProgress.CloseAsync(); //Verificamos si el usuario no esta bloqueado. if (usuarioConectado.Block) { //Enviamos un mensaje para indicar que el usuario está bloqueado. MessageDialogResult message = await this.ShowMessageAsync(StringResources.lblInformation, StringResources.lblUserNotActive); } else { SpeechSynthesizer _SS = new SpeechSynthesizer(); _SS.Volume = 100; _SS.Rate = 1; _SS.SpeakAsync("Welcome, " + usuarioConectado.Nombre + ", To Process Design Engineering Program"); //Enviamos un mensaje de bienvenida al usuario. MessageDialogResult message = await this.ShowMessageAsync(StringResources.lblWelcome, usuarioConectado.Nombre); //Obtenemos la fecha del servidor DateTime date_now = DataManagerControlDocumentos.Get_DateTime(); //Ejecutamos el método para desbloquear el sistema, si se venció la fecha final DataManagerControlDocumentos.DesbloquearSistema(date_now); //Obtenemos los detalles del usuario logueado. usuarioConectado.Details = DataManager.GetUserDetails(usuarioConectado.NombreUsuario); //Verificamos si esta cargada la foto, sino asignamos una por default. if (string.IsNullOrEmpty(usuarioConectado.Details.PathPhoto)) { usuarioConectado.Details.PathPhoto = System.Configuration.ConfigurationManager.AppSettings["PathDefaultImage"]; } //Insertamos el ingreso a la bitácora. DataManager.InserIngresoBitacora(Environment.MachineName, usuarioConectado.Nombre + " " + usuarioConectado.ApellidoPaterno + " " + usuarioConectado.ApellidoMaterno); //Validamos si el usuario nuevo tiene la contraseña random if (usuarioConectado.Details.Temporal_Password == true) { //Cargamnos las vista de ModificarContrasena ModificarContrasena vistacontrasena = new ModificarContrasena(); //Cargamnos el modelo de CambiarContraseniaViewModel CambiarContraseniaViewModel vmcambiarconatraseña = new CambiarContraseniaViewModel(usuarioConectado); //Asingamos el DataContext. vistacontrasena.DataContext = vmcambiarconatraseña; //Mostramos la ventana de modificacion de contraseña vistacontrasena.ShowDialog(); //Verificamos el valor de la variable CierrePantalla, si en la View Model de CambiarContrasenia la variable es false, dejamos continual el proceso if (vmcambiarconatraseña.CierrePantalla == false) { return; } } #region Configuración del correo electrónico //Verificamos si esta configurado el correo electrónico en la plataforma. //if (!usuarioConectado.Details.IsAvailableEmail || !System.IO.File.Exists(usuarioConectado.Pathnsf)) //{ // //Configuramos las opciones del mesaje de pregunta. // MetroDialogSettings settings = new MetroDialogSettings(); // settings.AffirmativeButtonText = StringResources.lblYes; // settings.NegativeButtonText = StringResources.lblNo; // //Preguntamos al usuario si lo quiere configurar en estos momentos. // MessageDialogResult resultMSG = await this.ShowMessageAsync(StringResources.ttlAtencion + usuarioConectado.Nombre, StringResources.msgConfiguracionCorreo, MessageDialogStyle.AffirmativeAndNegative, settings); // //Verificamos la respuesta del usuario, si es afirmativa iniciamos el proceso de configuración. // if (resultMSG == MessageDialogResult.Affirmative) // { // settings = new MetroDialogSettings(); // settings.AffirmativeButtonText = StringResources.ttlOkEntiendo; // await this.ShowMessageAsync(usuarioConectado.Nombre + StringResources.msgParaTuInf, StringResources.msgProcesoConfiguracion, MessageDialogStyle.Affirmative, settings); // ProgressDialogController AsyncProgressConfigEmail; // AsyncProgressConfigEmail = await dialog.SendProgressAsync(StringResources.ttlEspereUnMomento + usuarioConectado.Nombre + "...", StringResources.msgEstamosConfigurando); // ConfigEmailViewModel configEmail = new ConfigEmailViewModel(usuarioConectado); // // Se reciben valores de las 2 propiedades del objeto // DO_PathMail respuestaConfigEmail = await configEmail.setEmail(); // await AsyncProgressConfigEmail.CloseAsync(); // if (respuestaConfigEmail.respuesta) // { // // Actualizamos el path de usuario en la misma sesión // usuarioConectado.Pathnsf = respuestaConfigEmail.rutamail; // settings.AffirmativeButtonText = StringResources.ttlGenial; // await this.ShowMessageAsync(StringResources.msgPerfecto + usuarioConectado.Nombre, StringResources.msgCuentaConfigurada, MessageDialogStyle.Affirmative, settings); // } // else // { // await this.ShowMessageAsync(StringResources.ttlOcurrioError, StringResources.msgErrorVincular); // } // } //} #endregion if (Module.UsuarioIsRol(usuarioConectado.Roles, 2)) { DashboardViewModel context; FDashBoard pDashBoard = new FDashBoard(); context = new DashboardViewModel(usuarioConectado); context.ModelUsuario = usuarioConectado; //NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primera vez y tenernos en donde descanzar la primera pantalla. context.Pagina = pDashBoard; //Asignamos al DataContext de la PantallaHome el context creado anteriormente. pDashBoard.DataContext = context; //Declaramos la pantalla en la que descanzan todas las páginas. Layout masterPage = new Layout(); //Asingamos el DataContext. masterPage.DataContext = context; //Ejecutamos el método el cual despliega la pantalla. masterPage.ShowDialog(); } else { Home PantallaHome = new Home(usuarioConectado.NombreUsuario); //Creamos un objeto UsuarioViewModel, y le asignamos los valores correspondientes, a la propiedad Pagina se le asigna la pantalla inicial de Home. UsuarioViewModel context = new UsuarioViewModel(usuarioConectado, PantallaHome); context.ModelUsuario = usuarioConectado; //NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primeva vez y tenernos en donde descanzar la primera pantalla. context.Pagina = PantallaHome; //Asignamos al DataContext de la PantallaHome el context creado anteriormente. PantallaHome.DataContext = context; //Declaramos la pantalla en la que descanzan todas las páginas. Layout masterPage = new Layout(); //Asingamos el DataContext. masterPage.DataContext = context; //Ejecutamos el método el cual despliega la pantalla. masterPage.ShowDialog(); } //Una vez que el usuario hizo clic en aceptar el mensaje de bienvenida, se procede con la codificación de la presentación de la pantalla inicial. //Creamos un objeto de tipo Home, la cual es la pantalla inicial del sistema. //Home PantallaHome = new Home(usuarioConectado.NombreUsuario); //Creamos un objeto UsuarioViewModel, y le asignamos los valores correspondientes, a la propiedad Pagina se le asigna la pantalla inicial de Home. //UsuarioViewModel context = new UsuarioViewModel { ModelUsuario = usuarioConectado, Pagina = PantallaHome }; //UsuarioViewModel context = new UsuarioViewModel(usuarioConectado, PantallaHome); //context.ModelUsuario = usuarioConectado; ////NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primeva vez y tenernos en donde descanzar la primera pantalla. //context.Pagina = PantallaHome; ////Asignamos al DataContext de la PantallaHome el context creado anteriormente. //PantallaHome.DataContext = context; ////Declaramos la pantalla en la que descanzan todas las páginas. //Layout masterPage = new Layout(); ////Asingamos el DataContext. //masterPage.DataContext = context; ////Ejecutamos el método el cual despliega la pantalla. //masterPage.ShowDialog(); ////Si el usuario es administrador, le mostramos la pantalla de Dashboard. //if (Module.UsuarioIsRol(usuarioConectado.Roles, 2)) //{ // FDashBoard pDashBoard = new FDashBoard(); // DashboardViewModel wm = new DashboardViewModel(pDashBoard, usuarioConectado); // pDashBoard.DataContext = wm; // //Declaramos la pantalla en la que descanzan todas las páginas. // Layout masterPage1 = new Layout(); // //Asingamos el DataContext. // masterPage1.DataContext = wm; // //Ejecutamos el método el cual despliega la pantalla. // masterPage1.ShowDialog(); //} //else //{ //} } } else { //Ejecutamos el método para cerrar el mensaje de espera. await AsyncProgress.CloseAsync(); //Enviamos un mensaje indicando que las credenciales escritas son incorrectas. MessageDialogResult message = await this.ShowMessageAsync(StringResources.ttlAlerta, StringResources.lblPasswordIncorrect); } } }