using EFCDesk.Classes; using EFCDesk.Forms; using System.Data.SQLite; using System.Xml; using System.Xml.Linq; using static EFCDesk.Program; namespace EFCDesk { public partial class Login : Form { private bool ExisteConfiguracionExpediente() { using (var connection = sqliteHelper.GetConnection()) { connection.Open(); // Verificar si hay registros en la tabla ArchivosProcesados string checkQuery = "SELECT COUNT(1) FROM Configuracion;"; int registrosExistentes; using (var command = new SQLiteCommand(checkQuery, connection)) { registrosExistentes = Convert.ToInt32(command.ExecuteScalar()); } // Si hay registros, no realizar el escaneo inicial if (registrosExistentes == 0) { return false; } } return true; } private void VistaConfiguracionExpediente() { //FormCargarInformacion info = new FormCargarInformacion(); //info.Show(); MessageBox.Show("Debe capturar la configuración inicial para el envío de los archivos a expediente electrónico", "Configuración", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Hide(); FormConfiguracionExpediente configExp = new FormConfiguracionExpediente(); configExp.ShowDialog(); try { configExp.Dispose(); this.Visible = true; } catch (Exception ex) { } } private static SQLiteHelper sqliteHelper = new SQLiteHelper(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "historico.db")); public Login() { InitializeComponent(); Ver.IconChar = FontAwesome.Sharp.IconChar.EyeSlash; } private void buttonOpciones_Click(object sender, EventArgs e) { FormConfiguracionJSON configuracion = new FormConfiguracionJSON(); configuracion.ShowDialog(); } private async void buttonInicioSesion_Click(object sender, EventArgs e) { //var config = ConfiguracionJSON.LoadFromJson(); //Cursor.Current = Cursors.WaitCursor; //string user = textBoxUsuario.Text.Trim(); //string pass = textBoxContrasenia.Text.Trim(); //if (user == "") //{ // MessageBox.Show("Debe ingresar el usuario"); // textBoxUsuario.Focus(); // return; //} //if (pass == "") //{ // MessageBox.Show("Debe ingresar la contraseña"); // textBoxContrasenia.Focus(); // return; //} //if ((user == "admin") && (pass == "teamweb")) //{ // //frmAdmin configuracion = new frmAdmin(); // //configuracion.ShowDialog(); //} //else //{ // try // { // string crypUser = General.CodificarBase64(user); // string crypPass = General.CodificarBase64(pass); // string cadena = crypUser + "|" + crypPass; // string liga = config.DominioExp + "/api/auth/" + cadena; // dynamic root = config.Consulta(liga); // if (root is XmlElement) // { // string id = ""; // string mensaje = ""; // XmlNodeList nodes = root.SelectNodes("/xml/item"); // foreach (XmlNode node in nodes) // { // id = node["login"].InnerText; // mensaje = node["mensaje"].InnerText; // } // if (id != "0") // { // //this.Hide(); // /**/ // /* // SplashScreenEspera Espera = new SplashScreenEspera(); // Espera.ShowDialog(); // */ // /* // Globales.DirRootExpediente = MyClass.configuracion("folder"); // if (!Directory.Exists(Globales.DirRootExpediente)) // { // string Folder = "C:" + Path.DirectorySeparatorChar + "EFC"; // MyClass.configuracion("folder", Folder); // Globales.DirRootExpediente = Folder; // Directory.CreateDirectory(Globales.DirRootExpediente); // } // */ // /*actualizar config*/ // config.UsuarioExp = user; // config.PasswordExp = pass; // int.TryParse(id, out int idInt); // config.idUsuarioExp = idInt; // config.SaveToJson(); // this.Hide(); // FormCargarInformacion info = new FormCargarInformacion(); // info.Show(); // //Application.Run(new frmMain()); // using (var connection = sqliteHelper.GetConnection()) // { // connection.Open(); // // Verificar si hay registros en la tabla ArchivosProcesados // string checkQuery = "SELECT COUNT(1) FROM Configuracion;"; // int registrosExistentes; // using (var command = new SQLiteCommand(checkQuery, connection)) // { // registrosExistentes = Convert.ToInt32(command.ExecuteScalar()); // } // // Si hay registros, no realizar el escaneo inicial // if (registrosExistentes == 0) // { // FormConfiguracionExpediente configExp = new FormConfiguracionExpediente(); // configExp.Show(); // } // else // { // FormMain Main = new FormMain(); // Main.Show(); // } // } // } // else // { // MessageBox.Show(mensaje); // return; // } // } // else if (root is Exception) // { // MessageBox.Show(root.ToString()); // return; // } // else // { // MessageBox.Show("Error: No se hizo el login correctamente. Contacte a su proveedor"); // return; // } // } // catch (Exception ex) // { // MessageBox.Show(ex.ToString()); // } //} //cursor.current = cursors.default; if (!ExisteConfiguracionExpediente()) { VistaConfiguracionExpediente(); return; } string user = txtUsuario.Text.Trim(); string pass = textBoxContrasenia.Text.Trim(); bool EsvalidoDatos = Utils.Util.StringsValidos(user, pass); if (!EsvalidoDatos) { MessageBox.Show("Debe ingresar el usuario y contraseña", "Información", MessageBoxButtons.OK); return; } var configJson = ConfiguracionJSON.LoadFromJson(); Cursor.Current = Cursors.WaitCursor; try { configJson.UsuarioExp = user; configJson.PasswordExp = pass; if (Properties.Settings.Default.urlEFC.ToString() == "") { MessageBox.Show("No se ha configurado el dominio de expediente electronico", "Información", MessageBoxButtons.OK); return; } if (configJson.FolderExpediente == null) { MessageBox.Show("No se ha configurado la ruta de expediente(s)", "Información", MessageBoxButtons.OK); return; } bool Esvalido = Utils.Util.StringsValidos(configJson.UsuarioExp, configJson.PasswordExp); if (!Esvalido) { MessageBox.Show("No se ha configurado el usuario o contraseña de expediente electronico", "Información", MessageBoxButtons.OK); return; } else { textBoxContrasenia.Text = configJson.PasswordExp ?? String.Empty; } if (string.IsNullOrWhiteSpace(textBoxContrasenia.Text)) { MessageBox.Show("Ingresa el Id de usuario", "Información", MessageBoxButtons.OK); textBoxContrasenia.Focus(); return; } configJson.SaveToJson(); bool EsLoginValido = await Utils.Util.Login(txtUsuario.Text, textBoxContrasenia.Text); if (!EsLoginValido) { MessageBox.Show("No se pudo hacer login.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //string token = textBoxContrasenia.Text; //using var apiClient = new ApiClient(timeout: TimeSpan.FromSeconds(10), maxRetries: 3, retryDelay: TimeSpan.FromSeconds(2)); //string response = await apiClient.GetAsync(url: config.DominioExp+ "/api/v1/customs/pedimentos/", token); Cursor.Current = Cursors.Default; //SecureDataHandler.SaveData(textBoxContrasenia.Text); //textBoxContrasenia.Text = string.Empty; this.Hide(); FormMain Main = new FormMain(Globales.gMonitor); Main.Show(); } catch (ApiException ex) { MessageBox.Show($"API respondió con error: {ex.Message} (Código {ex.StatusCode})"); } catch (Exception ex) { MessageBox.Show($"Error en la petición: {ex.Message}"); } Cursor.Current = Cursors.Default; } private void textBoxContrasenia_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { //buttonInicioSesion_Click(this, new EventArgs()); buttonInicioSesion.PerformClick(); } } private void Login_Shown(object sender, EventArgs e) { if (!ExisteConfiguracionExpediente()) { VistaConfiguracionExpediente(); } } private void textBoxContrasenia_TextChanged(object sender, EventArgs e) { } private void textBoxContrasenia_KeyDown_1(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { //buttonInicioSesion_Click(this, new EventArgs()); buttonInicioSesion.PerformClick(); } } private void iconbtnVerContrasenia_Click(object sender, EventArgs e) { } private void iconbtnVerContrasenia_MouseHover(object sender, EventArgs e) { textBoxContrasenia.UseSystemPasswordChar = !textBoxContrasenia.UseSystemPasswordChar; } private void iconPictureBox1_MouseHover(object sender, EventArgs e) { } private void iconPictureBox1_MouseLeave(object sender, EventArgs e) { } private void iconPicVer_MouseHover(object sender, EventArgs e) { textBoxContrasenia.UseSystemPasswordChar = true; } private void iconPicVer_MouseLeave(object sender, EventArgs e) { textBoxContrasenia.UseSystemPasswordChar = false; } private void Ver_MouseHover(object sender, EventArgs e) { textBoxContrasenia.UseSystemPasswordChar = false; Ver.IconChar = FontAwesome.Sharp.IconChar.Eye; } private void Ver_MouseLeave(object sender, EventArgs e) { textBoxContrasenia.UseSystemPasswordChar = true; Ver.IconChar = FontAwesome.Sharp.IconChar.EyeSlash; } } }