Beispiel #1
0
        private void xVerificationControl_OnComplete(object Control, FeatureSet FeatureSet, ref DPFP.Gui.EventHandlerStatus EventHandlerStatus)
        {
            //DPFP.Template TemplateBD = new DPFP.Template();
            RN_Personal   obj          = new RN_Personal();
            RN_Asistencia objas        = new RN_Asistencia();
            DataTable     datosPersona = new DataTable();
            DataTable     dataAsis     = new DataTable();

            //byte[] finguerByte;
            string NroIDPersona = "";
            int    xitn         = 1;

            byte[]     fingerByte;
            string     rutaFoto;
            bool       TerminarBucle = false;
            int        totalFila     = 0;
            Frm_Filtro fil           = new Frm_Filtro();

            int HoLimite = Dtp_Hora_Limite.Value.Hour;
            int MiLimite = Dtp_Hora_Limite.Value.Minute;

            int horaCaptu   = DateTime.Now.Hour;
            int minutoCaptu = DateTime.Now.Minute;

            try
            {
                datosPersona = obj.RN_Leer_todoPersona();
                totalFila    = datosPersona.Rows.Count;
                if (datosPersona.Rows.Count <= 0)
                {
                    return;
                }

                var datoPer = datosPersona.Rows[0];
                foreach (DataRow xitem in datosPersona.Rows)
                {
                    if (TerminarBucle == true)
                    {
                        return;
                    }

                    fingerByte   = (byte[])xitem["FinguerPrint"];
                    NroIDPersona = Convert.ToString(xitem["Id_Pernl"]);

                    DPFP.Template TemplateBD = new DPFP.Template();

                    TemplateBD.DeSerialize(fingerByte);

                    Verificar.Verify(FeatureSet, TemplateBD, ref Resultado);

                    if (Resultado.Verified == true)
                    {
                        rutaFoto             = Convert.ToString(xitem["Foto"]);
                        lbl_nombresocio.Text = Convert.ToString(xitem["Nombre_Completo"]);
                        Lbl_Idperso.Text     = Convert.ToString(xitem["Id_Pernl"]);
                        lbl_Dni.Text         = Convert.ToString(xitem["DNIPR"]);

                        if (File.Exists(rutaFoto) == true)
                        {
                            picSocio.Load(rutaFoto.Trim());
                        }
                        else
                        {
                            picSocio.Load(Application.StartupPath + @"\user.png");
                        }

                        if (objas.RN_Checar_SiPersonal_YaMarco_Asistencia(Lbl_Idperso.Text.Trim()) == true)
                        {
                            lbl_msm.BackColor = Color.MistyRose;
                            lbl_msm.ForeColor = Color.Red;
                            lbl_msm.Text      = "El sistema verificó que el personal ya marcó su asistencia";
                            tocar_timbre();
                            lbl_Cont.Text = "10";
                            xVerificationControl.Enabled = true;
                            pnl_Msm.Visible   = true;
                            tmr_Conta.Enabled = true;
                            return;
                        }

                        if (objas.RN_Checar_SiPersonal_YaMarco_Entrada(Lbl_Idperso.Text.Trim()) == true)
                        {
                            Frm_Sinox sino = new Frm_Sinox();
                            TerminarBucle = true;
                            fil.Show();
                            sino.Lbl_msm1.Text = "El usuario ya tiene registrada su entrada, ¿Te gustarìa marcar su salida?";
                            sino.ShowDialog();
                            fil.Hide();

                            if (Convert.ToString(sino.Tag) == "Si")
                            {
                                dataAsis = objas.RN_Buscar_Asistencia_deEntrada(Lbl_Idperso.Text);
                                if (dataAsis.Rows.Count < 1)
                                {
                                    return;
                                }
                                lbl_IdAsis.Text = Convert.ToString(dataAsis.Rows[0]["Id_asis"]);
                                objas.RN_Registrar_Salida_Personal(lbl_IdAsis.Text, Lbl_Idperso.Text, lbl_hora.Text, 8);
                                if (BD_Asistencia.salida == true)
                                {
                                    lbl_msm.BackColor = Color.YellowGreen;
                                    lbl_msm.ForeColor = Color.White;
                                    lbl_msm.Text      = "La salida del personal fue registrada exitosamente";
                                    tocar_timbreOK();
                                    xVerificationControl.Enabled = false;
                                    pnl_Msm.Visible = true;

                                    lbl_Cont.Text     = "10";
                                    tmr_Conta.Enabled = true;

                                    TerminarBucle = true;
                                }
                            }
                            else
                            {
                                LimpiarFormulario();
                                sec = 10;
                                tmr_Conta.Stop();
                                pnl_Msm.Visible = false;
                                xVerificationControl.Enabled = true;
                                lbl_Cont.Text = "10";
                            }
                        }
                        else
                        {
                            //entonces marcar entrada
                            if (horaCaptu >= HoLimite)
                            {
                                lbl_msm.BackColor = Color.MistyRose;
                                lbl_msm.ForeColor = Color.Red;
                                lbl_msm.Text      = "Estimado usuario, su hora de entrada ya caducó. Vuelve a casa y regresa mañana";
                                tocar_timbre();
                                pnl_Msm.Visible   = true;
                                tmr_Conta.Enabled = true;

                                lbl_Cont.Text = "10";
                                xVerificationControl.Enabled = false;
                                return;
                            }

                            calcular_Minutos_Tardanza();
                            lbl_IdAsis.Text = RN_Utilitario.RN_NroDoc(3);
                            objas.RN_Registrar_Entrada_Personal(lbl_IdAsis.Text, Lbl_Idperso.Text, lbl_hora.Text, Convert.ToDouble(lbl_totaltarde.Text), Convert.ToInt32(lbl_TotalHotrabajda.Text), lbl_justifi.Text);
                            if (BD_Asistencia.entrada == true)
                            {
                                RN_Utilitario.RN_Actualiza_Tipo_Doc(3);
                                lbl_msm.BackColor = Color.YellowGreen;
                                lbl_msm.ForeColor = Color.White;
                                lbl_msm.Text      = "La entrada del personal fue registrada exitosamente";
                                tocar_timbreOK();
                                pnl_Msm.Visible              = true;
                                tmr_Conta.Enabled            = true;
                                xVerificationControl.Enabled = false;
                                lbl_Cont.Text = "10";
                                TerminarBucle = true;
                            }
                        }
                    }
                    else
                    {
                        if (xitn == totalFila)
                        {
                            if (TerminarBucle == false)
                            {
                                lbl_msm.BackColor = Color.MistyRose;
                                lbl_msm.ForeColor = Color.Red;
                                lbl_msm.Text      = "La Huella Dactilar no existe en la base de datos";
                                tocar_timbre();
                                lbl_Cont.Text                = "10";
                                pnl_Msm.Visible              = true;
                                tmr_Conta.Enabled            = true;
                                xVerificationControl.Enabled = false;
                            }
                        }
                    }
                    xitn += 1;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Algo malo pasó: " + ex.Message, "Advertencia de Seguridad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        private void btn_buscar_Click(object sender, EventArgs e)
        {
            RN_Personal   obj         = new RN_Personal();
            RN_Asistencia objas       = new RN_Asistencia();
            DataTable     datapersona = new DataTable();
            DataTable     dataasis    = new DataTable();
            Frm_Filtro    fil         = new Frm_Filtro();

            string NroIDPersona;
            int    cont = 1;
            string rutaFoto;

            int HoLimite = Dtp_Hora_Limite.Value.Hour;
            int MiLimite = Dtp_Hora_Limite.Value.Minute;

            int horaCaptu   = DateTime.Now.Hour;
            int minutoCaptu = DateTime.Now.Minute;

            try
            {
                datapersona = obj.RN_Buscar_Personal_xValor(txt_dni_Buscar.Text.Trim());
                if (datapersona.Rows.Count <= 0)
                {
                    lbl_msm.BackColor = Color.MistyRose;
                    lbl_msm.ForeColor = Color.Red;
                    lbl_msm.Text      = "El Nro de Dni no existe";
                    tocar_timbre();
                    lbl_Cont.Text     = "10";
                    pnl_Msm.Visible   = true;
                    tmr_Conta.Enabled = true;
                    return;
                }
                else
                {
                    var dt = datapersona.Rows[0];

                    rutaFoto             = Convert.ToString(dt["Foto"]);
                    lbl_nombresocio.Text = Convert.ToString(dt["Nombre_Completo"]);
                    lbl_Dni.Text         = Convert.ToString(dt["DNIPR"]);
                    NroIDPersona         = Convert.ToString(dt["Id_Pernl"]);
                    Lbl_Idperso.Text     = Convert.ToString(dt["Id_Pernl"]);

                    if (File.Exists(rutaFoto) == true)
                    {
                        picSocio.Load(rutaFoto.Trim());
                    }
                    else
                    {
                        picSocio.Load(Application.StartupPath + @"\user.png");
                    }

                    if (objas.RN_Checar_SiPersonal_YaMarco_Asistencia(Lbl_Idperso.Text) == true)
                    {
                        lbl_msm.BackColor = Color.MistyRose;
                        lbl_msm.ForeColor = Color.Red;
                        lbl_msm.Text      = "El Sistema verifico, que el personal ya marco su entrada y salida";
                        tocar_timbre();
                        lbl_Cont.Text     = "10";
                        pnl_Msm.Visible   = true;
                        tmr_Conta.Enabled = true;
                        return;
                    }

                    if (objas.RN_Checar_SiPersonal_YaMarco_suEntrada(Lbl_Idperso.Text.Trim()) == true)
                    {
                        //le toca marcar su salida
                        dataasis = objas.RN_Buscar_Asistencia_deEntrada(Lbl_Idperso.Text);
                        if (dataasis.Rows.Count > 1)
                        {
                            return;
                        }

                        lbl_IdAsis.Text = Convert.ToString(dataasis.Rows[0]["Id_asis"]);
                        //double horain = Convert.ToDouble(dataasis.Rows[0]["HoIngreso"]);
                        objas.RN_Registrar_Salida_Personal(lbl_IdAsis.Text, Lbl_Idperso.Text, lbl_hora.Text, 8);

                        if (BD_Asistencia.Salida == true)
                        {
                            lbl_msm.BackColor = Color.YellowGreen;
                            lbl_msm.ForeColor = Color.White;
                            lbl_msm.Text      = "La Salida del personal fue Registrada Exitosamente";
                            tocar_bienvenida();
                            pnl_Msm.Visible   = true;
                            tmr_Conta.Enabled = true;
                            lbl_Cont.Text     = "10";
                        }
                    }
                    else
                    {
                        //le toca marcar entrada
                        if (horaCaptu > HoLimite)
                        {
                            lbl_msm.BackColor = Color.MistyRose;
                            lbl_msm.ForeColor = Color.Red;
                            lbl_msm.Text      = "Ya no puedes marcar asistencia. Ha llegado Tarde";
                            tocar_timbre();
                            lbl_Cont.Text     = "10";
                            pnl_Msm.Visible   = true;
                            tmr_Conta.Enabled = true;
                            return;
                        }
                        // esta en el tiempo correcto:
                        Calcular_Minutos_Tardanza();
                        lbl_IdAsis.Text = RN_Utilitario.RN_NroDoc(3);
                        objas.RN_Registrar_Entrada_Personal(lbl_IdAsis.Text, Lbl_Idperso.Text, lbl_hora.Text, Convert.ToDouble(lbl_totaltarde.Text), 8, lbl_justifi.Text);

                        if (BD_Asistencia.Entrada == true)
                        {
                            RN_Utilitario.RN_Actualizar_Tipo_Doc(3);
                            lbl_msm.BackColor = Color.YellowGreen;
                            lbl_msm.ForeColor = Color.White;
                            lbl_msm.Text      = "La entrada del personal fue Registrada Exitosamente";
                            tocar_bienvenida();
                            pnl_Msm.Visible   = true;
                            tmr_Conta.Enabled = true;
                            lbl_Cont.Text     = "10";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }