315 lines
12 KiB
C#
315 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
using System.Collections;
|
|
using System.Diagnostics;
|
|
|
|
namespace LectorVerdnatura
|
|
{
|
|
public partial class frmPrincipal : Form
|
|
{
|
|
private sdklector lector;
|
|
private database db;
|
|
|
|
private static int WM_QUERYENDSESSION = 0x11;
|
|
private static bool systemShutdown = false;
|
|
|
|
protected override void WndProc(ref System.Windows.Forms.Message m)
|
|
{
|
|
if (m.Msg == WM_QUERYENDSESSION)
|
|
{
|
|
//MessageBox.Show("Detectado queryendsession: logoff, shutdown, or reboot");
|
|
systemShutdown = true;
|
|
}
|
|
|
|
// If this is WM_QUERYENDSESSION, the closing event should be
|
|
// raised in the base WndProc.
|
|
base.WndProc(ref m);
|
|
|
|
} //WndProc
|
|
|
|
public frmPrincipal()
|
|
{
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
Process aProcess = Process.GetCurrentProcess();
|
|
string aProcName = aProcess.ProcessName;
|
|
if (Process.GetProcessesByName(aProcName).Length > 1)
|
|
{
|
|
string mensaje = " ===== AVISO: LA APLICACION YA ESTA EN EJECUCION!! =====" + Environment.NewLine + "Verifique si hay un icono en la barra de tareas, un proceso anterior colgado o ejecutandose en otra sesion." + Environment.NewLine + "Cerrando esta instancia...";
|
|
logevent.logeventwritefile(mensaje);
|
|
MessageBox.Show(mensaje,"Verdnatura Lector Huellas");
|
|
// Application.Exit(); ESTA FORMA NO FUNCIONA EN ESTA APLICACION
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
lector = new sdklector();
|
|
this.Text = this.Text + " v. " + Application.ProductVersion.ToString();
|
|
|
|
if (Debugger.IsAttached)
|
|
{
|
|
logevent.logeventwritefile(" ===== Detectado Debugger.IsAttached: modo pruebas? Desactivamos opcion de borrar logs del fichador!");
|
|
chkBorrarLogs.Checked = false;
|
|
}
|
|
else
|
|
{
|
|
logevent.logeventwritefile(" ===== Debugger.IsAttached NO detectado. Se borraran los logs del lector tras la lectura.");
|
|
chkBorrarLogs.Checked = true;
|
|
}
|
|
db = new database();
|
|
logevent.logeventwritefile("Usando BDD: " + db.GetDBConnectionDescription());
|
|
|
|
CargarFichadores();
|
|
|
|
//obtengo la siguiente hora que se tiene que ejecutar para obtener los fichajes
|
|
String HoraActual = DateTime.Now.ToString("HH:mm");
|
|
timer1.Interval = db.proximotimer(HoraActual);
|
|
if (db.Gethayconexion()) db.CerrarConexion();
|
|
|
|
//logevent.logeventwritefile(" ===== Aplicacion inicializada ===== En 10 segundos se intentaran descargar los registros de todos los fichadores de la lista...");
|
|
//timer1.Interval = 10000;
|
|
//timer1.Enabled = true;
|
|
//timer1.Start();
|
|
|
|
ActualizarLog();
|
|
notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
|
|
}
|
|
|
|
private void frmPrincipal_Resize(object sender, EventArgs e)
|
|
{
|
|
if (this.WindowState == FormWindowState.Minimized)
|
|
{
|
|
this.Hide();
|
|
this.notifyIcon1.Visible = true;
|
|
}
|
|
|
|
if (this.WindowState != FormWindowState.Minimized )
|
|
{
|
|
dataGrid1.Width = this.ClientSize.Width - dataGrid1.Left - 20;
|
|
dataGrid1.Height = this.ClientSize.Height - dataGrid1.Top - 20;
|
|
dataGrid1.Columns[0].Width = dataGrid1.Width - 50;
|
|
}
|
|
|
|
}
|
|
|
|
private void frmPrincipal_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (!this.Visible){
|
|
this.Show();
|
|
this.WindowState = FormWindowState.Normal;
|
|
this.notifyIcon1.Visible = false;}
|
|
}
|
|
|
|
private void notifyIcon1_DoubleClick(object Sender, EventArgs e)
|
|
{
|
|
frmPrincipal_MouseDoubleClick(Sender, null);
|
|
}
|
|
|
|
private void frmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (!systemShutdown)
|
|
{
|
|
// Reset the variable because the user might cancel the shutdown.
|
|
systemShutdown = false;
|
|
|
|
DialogResult respuesta = MessageBox.Show("La aplicacion debe estar en marcha para recoger los fichajes!" + Environment.NewLine + "¿ Esta seguro de que desea cerrar la aplicacion ?", "Confirmacion", MessageBoxButtons.YesNo);
|
|
if (respuesta == DialogResult.No)
|
|
e.Cancel = true;
|
|
else
|
|
logevent.logeventwritefile("AVISO: FormClosing() ejecutado y el usuario confirmo el cierre: CERRANDO APLICACION....");
|
|
}
|
|
else {
|
|
logevent.logeventwritefile("AVISO: FormClosing() ejecutado y apagado del sistema detectado: CERRANDO APLICACION....");
|
|
}
|
|
|
|
//e.Cancel = true;
|
|
//this.WindowState = FormWindowState.Minimized;
|
|
//frmPrincipal_Resize(this, null);
|
|
}
|
|
|
|
|
|
private void Salir_Click(object sender, EventArgs e)
|
|
{
|
|
if (!systemShutdown)
|
|
{
|
|
// Reset the variable because the user might cancel the shutdown.
|
|
systemShutdown = false;
|
|
|
|
DialogResult respuesta = MessageBox.Show("La aplicacion debe estar en marcha para recoger los fichajes!" + Environment.NewLine + "¿ Esta seguro de que desea cerrar la aplicacion ?", "Confirmacion", MessageBoxButtons.YesNo);
|
|
if (respuesta == DialogResult.Yes)
|
|
{
|
|
this.notifyIcon1.Visible = false;
|
|
Application.Exit();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
|
{
|
|
timer1.Enabled = false;
|
|
db=new database();
|
|
|
|
for (int i = 0; i <= lvFichadores.Items.Count-1; i++)
|
|
{
|
|
lector.Lipaddr = lvFichadores.Items[i].SubItems[2].Text;
|
|
lector.WarehouseFk = int.Parse(lvFichadores.Items[i].SubItems[0].Text);
|
|
logevent.logeventwritefile("Conectando a fichador: " + lvFichadores.Items[i].SubItems[2].Text + "...");
|
|
ActualizarLog();
|
|
|
|
if (lector.conexionlector() && db.Gethayconexion())
|
|
{
|
|
logevent.logeventwritefile("Descargando fichajes...");
|
|
ActualizarLog();
|
|
bool resultadoFichajes = lector.ObtenerFichajes(dataGrid1);
|
|
if (resultadoFichajes)
|
|
{
|
|
if (chkBorrarLogs.Checked)
|
|
{
|
|
if (lector.NumRegistros() > int.Parse(txtMaxRegistros.Text.ToString()))
|
|
{
|
|
lector.BorrarLogLector();
|
|
}
|
|
else
|
|
{
|
|
logevent.logeventwritefile("Por seguridad: Log no borrado por ser inferior a " + txtMaxRegistros.Text.ToString() + " registros...");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
logevent.logeventwritefile(" ===== Detectado Debugger.IsAttached o casilla Borrar logs Fichadores desactivada: modo pruebas? no borramos los logs del lector!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
logevent.logeventwritefile(" ===== Error leyendo fichajes lector, borrado de fichajes cancelado!");
|
|
}
|
|
lector.ActualizarFechaLector();
|
|
lector.DesconexionLector();
|
|
}
|
|
}
|
|
|
|
//obtengo la siguiente hora que se tiene que ejecutar para obtener los fichajes
|
|
String HoraActual = DateTime.Now.ToString("HH:mm");
|
|
timer1.Interval=db.proximotimer(HoraActual);
|
|
if (db.Gethayconexion()) db.CerrarConexion();
|
|
|
|
logevent.logeventwritefile("Procesados todos los fichadores de la lista.");
|
|
ActualizarLog();
|
|
timer1.Enabled = true;
|
|
}
|
|
|
|
private void comprobarHoraLectorToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (!lector.conexionlector()) return;
|
|
lector.ActualizarFechaLector();
|
|
lector.DesconexionLector();
|
|
}
|
|
|
|
public void CargarFichadores()
|
|
{
|
|
db = new database();
|
|
String[,] Fichadores = new string[10, 3];
|
|
|
|
db.CargarFichadoresDesdeBDD(ref Fichadores);
|
|
|
|
for (int numfich = 0; Fichadores[numfich, 0] != null; numfich++)
|
|
{
|
|
ListViewItem lvi = new ListViewItem(Fichadores[numfich, 0]);
|
|
lvi.SubItems.Add(Fichadores[numfich, 1]);
|
|
lvi.SubItems.Add(Fichadores[numfich, 2]);
|
|
lvFichadores.Items.Add(lvi);
|
|
};
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
String mensajeterminal="CONEXIÓN ESTABLECIDA";
|
|
|
|
if (this.lvFichadores.SelectedItems.Count != 1) {
|
|
MessageBox.Show("Debe de seleccionar un lector para realizar la conexión"); return; }
|
|
|
|
lector.Lipaddr = this.lvFichadores.SelectedItems[0].SubItems[2].Text;
|
|
if (!lector.conexionlector()) mensajeterminal="No hay conexión con el terminal";
|
|
|
|
lector.DesconexionLector();
|
|
MessageBox.Show(mensajeterminal);
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
ActualizarLog();
|
|
}
|
|
|
|
public void ActualizarLog()
|
|
{
|
|
ArrayList arrText = new ArrayList();
|
|
int inicio=0;
|
|
|
|
arrText = logevent.leerlog(); // devuelve todas las lineas del fichero
|
|
dataGrid1.Rows.Clear();
|
|
if (arrText.Count > 1000) { inicio = arrText.Count - 1000; }
|
|
for (int i = inicio; i < arrText.Count; i++)
|
|
dataGrid1.Rows.Add(arrText[i]);
|
|
dataGrid1.Rows[dataGrid1.Rows.Count - 1].Selected = true;
|
|
dataGrid1.FirstDisplayedScrollingRowIndex = dataGrid1.Rows.Count - 1;
|
|
Application.DoEvents();
|
|
}
|
|
|
|
private void btnDescargarFichajes_Click(object sender, EventArgs e)
|
|
{
|
|
logevent.logeventwritefile("Descargando fichajes...");
|
|
ActualizarLog();
|
|
timer1_Tick(null,null);
|
|
}
|
|
|
|
private void btnForzarBorrarLog_Click(object sender, EventArgs e)
|
|
{
|
|
string mensajeterminal = "";
|
|
|
|
if (this.lvFichadores.SelectedItems.Count != 1)
|
|
{
|
|
MessageBox.Show("Debe de seleccionar un UNICO lector para realizar el borrado"); return;
|
|
}
|
|
|
|
lector.Lipaddr = this.lvFichadores.SelectedItems[0].SubItems[2].Text;
|
|
logevent.logeventwritefile("Conectando a fichador: " + lector.Lipaddr.ToString() + " ...");
|
|
ActualizarLog();
|
|
|
|
if (!lector.conexionlector()) mensajeterminal = "No hay conexión con el terminal";
|
|
|
|
mensajeterminal = "Encontrados: " + lector.ContarRecordsLector() + " registros, borrando...";
|
|
logevent.logeventwritefile(mensajeterminal);
|
|
ActualizarLog();
|
|
|
|
lector.BorrarLogLector();
|
|
|
|
logevent.logeventwritefile("Registros borrados");
|
|
ActualizarLog();
|
|
|
|
lector.DesconexionLector();
|
|
}
|
|
|
|
private void txtMaxRegistros_Leave(object sender, EventArgs e)
|
|
{
|
|
if (! int.TryParse(txtMaxRegistros.Text.ToString(), out int numero))
|
|
{
|
|
MessageBox.Show("El valor del numero maximo de registros no es un numero valido y se ha cambiado a 300");
|
|
txtMaxRegistros.Text = "300";
|
|
}
|
|
}
|
|
|
|
private void frmPrincipal_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
}//lector
|
|
}//namespace
|