예제 #1
0
        //controlador del botón cerrar evento clic
        private async void ButCerrarSesion_Clicked(object sender, EventArgs e)
        {
            CtrlUsuario ControlUsuario = new CtrlUsuario();
            await ControlUsuario.EliminarUsuarioActualAsync();//es para eliminar el usuario el momento que cierre sesión

            App.Current.Logout();
        }
예제 #2
0
        public void CarregaDataGridView()
        {
            try
            {
                using (Conexao.GetInstance)
                {
                    Conexao.Abrir();

                    ICRUD <Usuario> ControllerUsuario = new CtrlUsuario(Conexao.GetInstance);

                    dgv_usuariosCadastrados.DataSource = ControllerUsuario.Listar();
                    qq.DataSource = ControllerUsuario.Listar();
                    qq.Columns["IdAcesso"].Visible  = false;
                    qq.Columns["Porta"].Visible     = false;
                    qq.Columns["IdUsuario"].Visible = false;
                    qq.Columns["SMTP"].Visible      = false;

                    ControllerUsuario.Dispose();
                    Conexao.Fechar();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
예제 #3
0
파일: frm_login.cs 프로젝트: osmorais/MEMCH
        private void btn_login_Click(object sender, EventArgs e)
        {
            try
            {
                usuario.login = txb_nome_usuario.Text;
                usuario.senha = txb_senha_acesso.Text;

                usuario.senha = SHA.GenerateSHA512String(usuario.senha);
                //ControleInterno controle = new ControleInterno();
                //controle.autenticar(ref usuario);

                IOperadorREST op       = new OperadorJson();
                CtrlUsuario   controle = new CtrlUsuario();
                Conexao       conexao  = new Conexao()
                {
                    host = "10.1.1.3"
                };

                var currentUsuario = controle.consultar <Usuario>(usuario, op, conexao);

                if (currentUsuario.id == 0)
                {
                    throw new Exception("Usuário inexistente.");
                }

                frm_dashboard formulario = new frm_dashboard(currentUsuario);
                formulario.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
예제 #4
0
 //buscar usuario logueado
 protected async Task <ClsUsuarioActual> BuscarUsuarioActualAsync()//este metodo es para buscar el usuario que está logeado en la base de datos local
 {
     try
     {
         CtrlUsuario ObjCtrlUsuario = new CtrlUsuario();
         return(await ObjCtrlUsuario.GetUsuarioActual());
     }
     catch
     {
         return(null);
     }
 }
예제 #5
0
        private void btn_cadastrar_novo_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txb_nome_usuario.Text))
            {
                txb_nome_usuario.Text = "Usuario";
            }
            if (!string.IsNullOrWhiteSpace(txb_login_usuario.Text) &&
                !string.IsNullOrWhiteSpace(txb_senha_acesso.Text) &&
                !string.IsNullOrWhiteSpace(txb_email.Text) &&
                txb_senha_acesso.Text == txb_confirmar_senha.Text)
            {
                Pessoa pessoa = new Pessoa();
                pessoa.nome = txb_nome_usuario.Text;
                pessoa.cpf  = txb_cpf_usuario.Text;

                Usuario usuario = new Usuario();
                usuario.pessoa = pessoa;
                usuario.senha  = txb_senha_acesso.Text;
                usuario.login  = txb_login_usuario.Text;
                usuario.email  = txb_email.Text;

                usuario.senha = SHA.GenerateSHA512String(usuario.senha);
                try
                {
                    //ControleInterno controle = new ControleInterno();
                    //controle.criarUsuario(usuario);

                    IOperadorREST op       = new OperadorJson();
                    CtrlUsuario   controle = new CtrlUsuario();
                    Conexao       conexao  = new Conexao()
                    {
                        host = "10.1.1.3"
                    };

                    usuario = controle.cadastrar <Usuario>(usuario, op, conexao);

                    MessageBox.Show("Cadastro realizado com Sucesso!");
                    Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Por favor, tente novamente!");
            }
        }
예제 #6
0
        public void btmeditar_Click(object sender, EventArgs e)
        {
            try
            {
                frmManterUsuarios ManterUsuario = new frmManterUsuarios();

                var row = qq.CurrentRow;

                using (Conexao.GetInstance)
                {
                    Conexao.Abrir();

                    Usuario ModelUsuario = new Usuario();

                    ICRUD <Usuario> ControllerUsuario = new CtrlUsuario(Conexao.GetInstance);

                    var codigo = row.Cells["IdUsuario"].Value;
                    ModelUsuario = ControllerUsuario.PesquisarCodigo(Convert.ToInt32(codigo));

                    ManterUsuario._txtLogin.Text         = ModelUsuario.Login.ToString();
                    ManterUsuario._drpTipo.Text          = ModelUsuario.AcessoDescricao.ToString();
                    ManterUsuario._txtSenha.Text         = ModelUsuario.Senha.ToString();
                    ManterUsuario._txtConfirmaSenha.Text = ModelUsuario.Senha.ToString();
                    ManterUsuario._txtTelefone.Text      = ModelUsuario.Telefone.ToString();
                    ManterUsuario._txtEmail.Text         = ModelUsuario.Email.ToString();
                    ManterUsuario._txtSMTP.Text          = ModelUsuario.SMTP.ToString();
                    ManterUsuario._txtPortaSMTP.Text     = ModelUsuario.Porta.ToString();
                    if (ModelUsuario.Status == true)
                    {
                        ManterUsuario._chkStatus.Checked = true;
                    }
                    else
                    {
                        ManterUsuario._chkStatus.Checked = false;
                    }

                    ControllerUsuario.Dispose();
                    Conexao.Fechar();
                }

                ManterUsuario.Show();
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #7
0
        private async void BtnListar_Clicked(object sender, EventArgs e)
        {
            try
            {
                CtrlUsuario manager = new CtrlUsuario();                         //instanciar controlador
                var         res     = await manager.Consultar(TxtIdPerfil.Text); //llamada al metodo consultar pasando como parámetro el idperfil ingresado en la caja de texto

                if (res != null)                                                 //si la respuesta es no nulo
                {
                    lstUsuarios.ItemsSource = res;                               //cargar en el lista los objetos consultados en la base de datos
                }
            }
            catch (Exception e1)//control de errores
            {
                await DisplayAlert("Mensaje", e1.Message, "ok");
            }
        }
예제 #8
0
        private void recuperar(Usuario usuario)
        {
            IOperadorREST op       = new OperadorJson();
            CtrlUsuario   controle = new CtrlUsuario();
            Conexao       conexao  = new Conexao()
            {
                host = "10.1.1.3"
            };

            usuario = controle.consultar <Usuario>(usuario, op, conexao);

            CtrlConexao controleConexao = new CtrlConexao();

            usuario.conexoes = controleConexao.listar <Conexao>(usuario, op, this.conexao);

            this.usuario = usuario;
        }
예제 #9
0
        private void btentrar_Click(object sender, EventArgs e)
        {
            Tuple <ulong, ulong?, string> result = new Tuple <ulong, ulong?, string>(0, null, String.Empty);

            try
            {
                using (Conexao.GetInstance)
                {
                    Conexao.Abrir();
                    ICRUD <Usuario> ControllerUsuario = new CtrlUsuario(Conexao.GetInstance);
                    Usuario         ModelUsuario      = new Usuario();
                    ModelUsuario.Login = user.Text;
                    ModelUsuario.Senha = senha.Text;
                    Login login = new Login(ModelUsuario);
                    result = login.logar(login);
                    ModelUsuario.IdUsuario = Convert.ToInt32(result.Item1);
                    Conexao.Fechar();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            if (result.Item1 == 0) //retorno 0 é invalido, item1 == IdUsuario
            {
                MessageBox.Show("Usuário ou senha inválidos. Tente novamente.");
            }
            else
            {
                MessageBox.Show(result.ToString());
                lbsenha.Visible   = false;
                lbusuario.Visible = false;
                user.Visible      = false;
                senha.Visible     = false;
                pbload2.Visible   = true;
                btnEntrar.Visible = false;
                timerload.Enabled = true;   // Enable the timer.
                timerload.Start();
                timerload.Interval   = 250; // The time per tick.
                pbload2.MaximumValue = 6;
                timerload.Tick      += new EventHandler(timerload_Tick);
                lbversao.Text        = "Versão Alfa 0.1";
                pbload2.ForeColor    = Color.FromArgb(190, 184, 81);
                frmprincipal formprincipal = new frmprincipal();
            }
        }
예제 #10
0
        //método para eliminar un registro
        private async void ButEliminar_Clicked(object sender, EventArgs e)
        {
            CtrlUsuario manager = new CtrlUsuario();

            if (txtId.Text.Length != 0)                          //validar id no vacío
            {
                var res = await manager.DeleteAsync(ObjUsuario); //llamada a método eliminar

                if (res != null)
                {
                    await DisplayAlert("Mensaje", "Datos Eliminados Correctamente", "ok");
                }
                else
                {
                    await DisplayAlert("Mensaje", "No se eliminó la información, vuelva a intentar más tarde", "ok");
                }
            }
        }
예제 #11
0
 private void CarregaUsuarios()
 {
     try
     {
         CtrlUsuario ControllerUsuario = new CtrlUsuario(Conexao.GetInstance);
         Conexao.Abrir();
         _drpUsuarios.AddItem(" -- Selecione -- ");
         foreach (var i in ControllerUsuario.Listar())
         {
             _drpUsuarios.AddItem(i.Login);
         }
         _drpUsuarios.selectedIndex = 0;
         Conexao.Fechar();
     }
     catch (Exception)
     {
         throw;
     }
 }
예제 #12
0
        private void tsm_excluir_usuario_Click(object sender, EventArgs e)
        {
            frm_excluir_usuario formulario  = new frm_excluir_usuario(usuario);
            DialogResult        confirmação = formulario.ShowDialog();

            if (confirmação == DialogResult.OK)
            {
                IOperadorREST op       = new OperadorJson();
                CtrlUsuario   controle = new CtrlUsuario();
                Conexao       conexao  = new Conexao()
                {
                    host = "10.1.1.3"
                };

                controle.remover <Usuario>(usuario, op, conexao);

                MessageBox.Show("Remoção realizada com Sucesso!");
                Close();
            }
        }
예제 #13
0
 //sincronizar los usuarios
 protected async Task <bool> SincronizarUsuariosAsync()
 {
     try
     {
         CtrlUsuario ObjCtrlUsuario = new CtrlUsuario(); //declarando una variable de la clase control ususario e intanciandola
         ObjCtrlUsuario.MiUsuario = ObjUsuario;          //cargamos los datos del usuario para que autentique.
         if (ObjCtrlUsuario.Esta_Conectado())
         {
             return(await ObjCtrlUsuario.SincronizarAsync());//me retorna verdadero o falso, dependiendo del resultado Sincronizar Async
         }
         else
         {
             return(false);
         }
     }
     catch
     {
         return(false);
     }
 }
예제 #14
0
        private void btmexcluir_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("Deseja alterar status de cliente ?", "Status Cliente", MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
                {
                    using (Conexao.GetInstance)
                    {
                        Conexao.Abrir();
                        ICRUD <Usuario> ControllerUsuario = new CtrlUsuario(Conexao.GetInstance);
                        Usuario         ModelUsuario      = new Usuario();

                        var linha = qq.CurrentRow;

                        ModelUsuario.Status    = Convert.ToBoolean(linha.Cells["Status"].Value);
                        ModelUsuario.IdUsuario = Convert.ToInt32(linha.Cells["IdUsuario"].Value);
                        ModelUsuario.Login     = Convert.ToString(linha.Cells["Login"].Value);
                        ModelUsuario.Senha     = Convert.ToString(linha.Cells["Senha"].Value);
                        ModelUsuario.Email     = Convert.ToString(linha.Cells["Email"].Value);
                        ModelUsuario.SMTP      = Convert.ToString(linha.Cells["SMTP"].Value);
                        ModelUsuario.Porta     = Convert.ToInt32(linha.Cells["Porta"].Value);
                        ModelUsuario.Telefone  = Convert.ToInt64(linha.Cells["Telefone"].Value);

                        if (ModelUsuario != null)
                        {
                            if (ControllerUsuario.Excluir(ModelUsuario))
                            {
                                CarregaDataGridView();
                                MessageBox.Show("Status do cliente alterado com sucesso.", "Status Cliente", MessageBoxButtons.OK);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #15
0
        private void btn_atualizar_usuario_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txb_nome_usuario.Text))
            {
                txb_nome_usuario.Text = "Usuario";
            }
            if (!string.IsNullOrWhiteSpace(txb_login_usuario.Text) &&
                !string.IsNullOrWhiteSpace(txb_senha_acesso.Text) &&
                !string.IsNullOrWhiteSpace(txb_email.Text) &&
                txb_senha_acesso.Text == txb_confirmar_senha.Text)
            {
                frm_confirmar_acao formulario = new frm_confirmar_acao(usuario.senha);
                DialogResult       resultado  = formulario.ShowDialog();

                if (resultado == DialogResult.OK)
                {
                    usuario.pessoa.nome = txb_nome_usuario.Text;
                    usuario.pessoa.cpf  = txb_cpf_usuario.Text;
                    usuario.login       = txb_login_usuario.Text;
                    usuario.senha       = txb_senha_acesso.Text;
                    usuario.email       = txb_email.Text;

                    usuario.senha = SHA.GenerateSHA512String(usuario.senha);

                    IOperadorREST op       = new OperadorJson();
                    CtrlUsuario   controle = new CtrlUsuario();
                    Conexao       conexao  = new Conexao()
                    {
                        host = "10.1.1.3"
                    };

                    usuario = controle.alterar <Usuario>(usuario, op, conexao);

                    MessageBox.Show("Alteração realizada com Sucesso!");

                    Close();
                }
            }
        }
예제 #16
0
        //manejador evento clic del botón entrar
        private async void ButEntrar_Clicked(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(TxtEmail.Text))                  //Este metodo es de la clase String del paquete de la plataforma .Net, que me valida el email no nulo
                {
                    if (!string.IsNullOrWhiteSpace(TxtPassword.Text))           //validar password no nulo
                    {
                        if (TxtEmail.TextColor == Color.Green)                  //validar email con formato correcto
                        {
                            if (TxtPassword.Text.Length >= 6)                   //validar que el password sea mayor o igual a 6 caracteres
                            {
                                CtrlUsuario ObjCtrlUsuario = new CtrlUsuario(); //declaramos una varioable e instanciamos el controlador usuario
                                ObjUsuario          = new ClsUsuario();         //declaramos uan variable e instanciamos la clase ClsUsuario
                                ObjUsuario.Email    = TxtEmail.Text;            //asigno la propiedad email del objeto usuario
                                ObjUsuario.Password = TxtPassword.Text;         //asigno la propiedad password del objeto usuario
                                bool IsValidSyncUsuarios = await SincronizarUsuariosAsync();

                                if (!IsValidSyncUsuarios)
                                {
                                    TxtMsg.Text = "No se ha podido recuperar la información del origen remoto";
                                }
                                else
                                {
                                    TxtMsg.Text = "Información recuperada correctamente desde el origen remoto";
                                }
                                var ConsUsr = await ObjCtrlUsuario.LoginUsr(TxtEmail.Text);     //invoca al método login del controlador usuario

                                if (ConsUsr.Count() == 1)                                       //si existe un registro que coincide con el email
                                {
                                    bool PassValido = false;                                    //está variable me ayuda a guardar el resultado que me devuelva el metodo password
                                    foreach (ClsUsuario item in ConsUsr)                        //recorrer la lista
                                    {
                                        if (VerificarPassword(TxtPassword.Text, item.Password)) //invocamos al metodo verificar password verificar password
                                        {
                                            PassValido = true;                                  //cuando se encuentra el password
                                            break;                                              // es para salir del bucle antes de terminar de recorrer
                                        }
                                    }
                                    if (PassValido)//si el password es valido se continua
                                    {
                                        await SincronizarPersonasAsync();

                                        ClsUsuario ObjUsuario = ConsUsr.First();           //declaro una variable de la clase usuario, y le asigno el primer usuario del liostado de objetos que se recibio
                                        await DisplayAlert("Mensaje", "Bienvenido", "ok"); //mensaje de  bienvenida

                                        //ObjUsuario.ObjPerfil = ConsPerfil.First();//asignar objeto encontrado a campo de objeto usuario
                                        ObjUsuario.Password                  = TxtPassword.Text; //asignando a la propiedad password el password ingresado
                                        App.Current.Properties["name"]       = ObjUsuario.Name;  //guardar en propiedades de la aplicación el nombre del usuario
                                        App.Current.Properties["IsLoggedIn"] = true;             //guardar en propiedades de la aplicación el estado como verdadero
                                        App.Current.Properties["ObjUsuario"] = ObjUsuario;       //guardar el objeto usuario en propiedades de la aplicación
                                        ClsUsuarioActual ObjUsuarioActual = new ClsUsuarioActual //aqlamcenamos el usuario actual en la base de datos local
                                        {
                                            Id         = ObjUsuario.Id,
                                            Name       = ObjUsuario.Name,
                                            Password   = ObjUsuario.Password,
                                            Email      = ObjUsuario.Email,
                                            Role       = ObjUsuario.Role,
                                            Sector     = ObjUsuario.Sector,
                                            Updated_at = ObjUsuario.Updated_at
                                        };
                                        await ObjCtrlUsuario.CrearUsuarioActualAsync(ObjUsuarioActual);

                                        Ilm.ShowMainPage();
                                    }
                                    else
                                    {
                                        await DisplayAlert("Mensaje", "Datos no encontrados, vuelva a intentar", "ok");
                                    }
                                }
                                else
                                {
                                    await DisplayAlert("Mensaje", "Datos no encontrados, vuelva a intentar", "ok");
                                }
                            }
                            else
                            {
                                await DisplayAlert("Mensaje", "Debe ingresar minimo 6 caracteres en el password", "ok");
                            }
                        }
                        else
                        {
                            await DisplayAlert("Mensaje", "Email con formato incorrecto", "ok");
                        }
                    }
                    else
                    {
                        await DisplayAlert("Mensaje", "Debe ingresar el password", "ok");
                    }
                }
                else
                {
                    await DisplayAlert("Mensaje", "Debe ingresar el email", "ok");
                }
            }
            catch (Exception x) { await DisplayAlert("Mensaje", x.Message, "ok"); }
        }
예제 #17
0
        private async void ButGuardar_Clicked(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(txtPassword.Text) &&
                    !string.IsNullOrWhiteSpace(txtConfirmaPassword.Text) &&
                    (PkrListaPerfil.SelectedItem) != null    //validación de no nulos
                    )
                {
                    if (ObjUsuario.ObjPersona.Cedula.Length == 10 &&
                        ObjUsuario.ObjPersona.Nombres.Length > 0 &&
                        ObjUsuario.ObjPersona.Apellidos.Length > 0)//validación de no vacío
                    {
                        if (txtPassword.TextColor == Color.Green &&
                            txtConfirmaPassword.TextColor == Color.Green//Validacío formato correcto
                            )
                        {
                            CtrlUsuario manager = new CtrlUsuario();//instancia de clase control
                            var         res     = "";
                            if (opc)
                            {
                                var ObjObjeto = await manager.InsertAsync(ObjUsuario);//llamada a método que inserta un nuevo registro

                                if (ObjObjeto != null)
                                {
                                    ObjUsuario = ObjObjeto.First();        //asignación de objeto local con datos recién ingresados
                                    txtId.Text = ObjUsuario.Id.ToString(); //mostrar id del registro creado
                                    res        = "Ok";                     //respuesta positiva
                                }
                                else
                                {
                                    res = null;//respuesta negativa si no se realizó correctamente
                                }
                            }
                            else
                            {
                                res = await manager.UpdateAsync(ObjUsuario);//llamada al método actualizar
                            }
                            if (res != null)
                            {
                                await DisplayAlert("Mensaje", "Datos Guardados Correctamente", "ok");
                            }
                            else
                            {
                                await DisplayAlert("Mensaje", "No se guardó la información, vuelva a intentar más tarde", "ok");
                            }
                        }
                        else
                        {
                            await DisplayAlert("Mensaje", "Los campos de color rojo tienen formato incorrecto", "ok");
                        }
                    }
                    else
                    {
                        await DisplayAlert("Mensaje", "Faltan Datos Necesarios", "ok");
                    }
                }
                else
                {
                    await DisplayAlert("Mensaje", "Faltan Datos", "ok");
                }
            }
            catch (Exception e1)//control de errores
            {
                await DisplayAlert("Mensaje", e1.Message, "ok");
            }
        }
예제 #18
0
        //manejador evento clic del botón entrar
        private async void ButEntrar_Clicked(object sender, EventArgs e)
        {
            CtrlUsuario ObjCtrlUsuario = new CtrlUsuario();//instancia de controlador

            try
            {
                if (!string.IsNullOrWhiteSpace(TxtEmail.Text))                                                           //validar email no nulo
                {
                    if (!string.IsNullOrWhiteSpace(TxtPassword.Text))                                                    //validar password no nulo
                    {
                        if (TxtEmail.TextColor == Color.Green)                                                           //validar email con formato correcto
                        {
                            if (TxtPassword.TextColor == Color.Green)                                                    //validar password con formato correcto
                            {
                                var ConsUsr = await ObjCtrlUsuario.LoginUsr(TxtEmail.Text, TxtPassword.Text);            //invoca al método login del controlador usuario

                                if (ConsUsr.Count() == 1)                                                                //si existe un registro que coincide con el email y el password
                                {
                                    ClsUsuario  ObjUsuario     = ConsUsr.First();                                        //asignar objeto encontrado al objeto local
                                    CtrlPersona ObjCtrlPersona = new CtrlPersona();                                      //instancia de control persona
                                    var         ConsPersona    = await ObjCtrlPersona.ConsultarId(ObjUsuario.IdPersona); //consulta de persona por id

                                    if (ConsPersona.Count() == 1)                                                        //si se encontraron los datos de la persona
                                    {
                                        ObjUsuario.ObjPersona = ConsPersona.First();                                     //asignar objeto encontrado a variable persona de objeto usuario
                                        CtrlPerfil ObjCtrlPerfil = new CtrlPerfil();                                     //instancia de control perfil
                                        var        ConsPerfil    = await ObjCtrlPerfil.Consultar(ObjUsuario.IdPerfil);   //consulta de perfil según id

                                        if (ConsPerfil.Count() == 1)                                                     //si los datos del perfil han sido encontrados
                                        {
                                            await DisplayAlert("Mensaje", "Bienvenido", "ok");                           //mensaje de  bienvenida

                                            ObjUsuario.ObjPerfil                 = ConsPerfil.First();                   //asignar objeto encontrado a campo de objeto usuario
                                            App.Current.Properties["name"]       = ObjUsuario.ObjPersona.Nombres;        //guardar en propiedades de la aplicación el nombre del usuario
                                            App.Current.Properties["IsLoggedIn"] = true;                                 //guardar en propiedades de la aplicación el estado como verdadero
                                            App.Current.Properties["ObjUsuario"] = ObjUsuario;                           //guardar el objeto usuario en propiedades de la aplicación
                                            Ilm.ShowMainPage();
                                        }
                                    }
                                }
                                else
                                {
                                    await DisplayAlert("Mensaje", "Datos no encontrados, vuelva a intentar", "ok");
                                }
                            }
                            else
                            {
                                await DisplayAlert("Mensaje", "Password con formato incorrecto", "ok");
                            }
                        }
                        else
                        {
                            await DisplayAlert("Mensaje", "Email con formato incorrecto", "ok");
                        }
                    }
                    else
                    {
                        await DisplayAlert("Mensaje", "Debe ingresar el password", "ok");
                    }
                }
                else
                {
                    await DisplayAlert("Mensaje", "Debe ingresar el email", "ok");
                }
            }//control de errores
            catch (Exception x) { await DisplayAlert("Mensaje", x.Message, "ok"); }
        }