private void Cargar_Asistencias_porValor(string xvalor)
        {
            RN_Asistencia obj = new RN_Asistencia();
            DataTable     dt  = new DataTable();

            dt = obj.RN_Ver_Todas_Asistencias_ParaExplorador(xvalor);
            if (dt.Rows.Count > 0)
            {
                //Llamamos al métod LlenarListView
                LlenarListView_Asis(dt);
            }
        }
예제 #2
0
        private void Carga_todas_Asistencias_delDia(DateTime fechas)
        {
            RN_Asistencia obj = new RN_Asistencia();
            DataTable     dt  = new DataTable();

            dt = obj.RN_Ver_Todas_asistencia_DelDia(fechas);
            if (dt.Rows.Count > 0)
            {
                //llamamos al metodo
                LlenarListView_Asis(dt);
            }
        }
        private void Cargar_Asistencias_delMes(DateTime fechas)
        {
            RN_Asistencia obj = new RN_Asistencia();
            DataTable     dt  = new DataTable();

            dt = obj.RN_Ver_Todas_Asistencias_DelMes(fechas);
            if (dt.Rows.Count > 0)
            {
                //Llamamos al métod LlenarListView
                LlenarListView_Asis(dt);
            }
        }
        private void Generar_InformedelDia()
        {
            RN_Asistencia obj  = new RN_Asistencia();
            DataTable     data = new DataTable();

            data = obj.RN_Ver_Todas_asistencia_DelDia(Convert.ToDateTime(this.Tag));
            if (data.Rows.Count > 0)
            {
                Rpt_AsistenciasDelDia rpte = new Rpt_AsistenciasDelDia();
                vsr_InfoDia.ReportSource = rpte;
                rpte.Refresh();
                vsr_InfoDia.ReportSource = rpte;
            }
        }
        void calcular_Minutos_Tardanza()
        {
            RN_Asistencia obj = new RN_Asistencia();

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

            int horaIn = dtp_horaIngre.Value.Hour;
            int MinuIn = dtp_horaIngre.Value.Minute;

            int Mntotole = dtp_hora_tolercia.Value.Minute;

            int totalMinutofijo;
            int totalTardanza;

            if (obj.RN_Verificar_Justificacion_Aprobada(Lbl_Idperso.Text) == true)
            {
                lbl_justifi.Text = "Tardanza Justificada";
            }
            else
            {
                lbl_justifi.Text = "Tardanza no Justificada";
                totalMinutofijo  = MinuIn + Mntotole;

                if (horaCaptu == horaIn & minutoCaptu > totalMinutofijo)
                {
                    totalTardanza       = minutoCaptu - totalMinutofijo;
                    lbl_totaltarde.Text = Convert.ToString(totalTardanza);
                }
                else if (horaCaptu > horaIn)
                {
                    int horaTarde;
                    horaTarde = horaCaptu - horaIn;
                    int HoraenMinuto;
                    HoraenMinuto = horaTarde * 60;
                    int totaltardexx = HoraenMinuto - totalMinutofijo;

                    totalTardanza       = minutoCaptu + totaltardexx;
                    lbl_totaltarde.Text = Convert.ToString(totalTardanza);
                }
            }
        }
        private void TimerFalta_Tick(object sender, EventArgs e)
        {
            RN_Asistencia   obj     = new RN_Asistencia();
            Frm_Filtro      fis     = new Frm_Filtro();
            Frm_Advertencia adver   = new Frm_Advertencia();
            Frm_Msm_Bueno   ok      = new Frm_Msm_Bueno();
            DataTable       dataper = new DataTable();
            RN_Personal     objper  = new RN_Personal();

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

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

            string Dniper         = "";
            int    Cant           = 0;
            int    TotalItem      = 0;
            string xidpersona     = "";
            string IdAsistencia   = "";
            string xjustificacion = "";

            if (horaCaptu >= HoLimite)
            {
                if (minutoCaptu > MiLimite)
                {
                    dataper = objper.RN_Leer_todoPersona();

                    if (dataper.Rows.Count <= 0)
                    {
                        return;
                    }
                    TotalItem = dataper.Rows.Count;

                    foreach (DataRow Registro in dataper.Rows)
                    {
                        Dniper     = Convert.ToString(Registro["DNIPR"]);
                        xidpersona = Convert.ToString(Registro["Id_Pernl"]);

                        if (obj.RN_Checar_SiPersonal_TieneAsistencia_Registrada(xidpersona.Trim()) == false)
                        {
                            if (obj.RN_Checar_SiPersonal_YaMarco_suFalta(xidpersona.Trim()) == false)
                            {
                                //Registrar falta
                                RN_Asistencia ojbA = new RN_Asistencia();
                                EN_Asistencia asi  = new EN_Asistencia();
                                IdAsistencia = RN_Utilitario.RN_NroDoc(3);


                                //Verificamos si el personal tiene alguna justificación..
                            }
                        }
                    }                    //Final del For Each
                    if (Cant > 1)
                    {
                        timerFalta.Stop();
                        fis.Show();
                        ok.Lbl_msm1.Text = "Un Total de: " + Cant.ToString() + "/" + TotalItem + " Faltas se han registrado exitosamente";
                        ok.ShowDialog();
                        fis.Hide();
                    }
                    else
                    {
                        timerFalta.Stop();
                        fis.Show();
                        ok.Lbl_msm1.Text = "El día de hoy no se han registrado faltas en el trabajo, Las " + TotalItem + " personas marcaron su asistencia correctamente";
                        ok.ShowDialog();
                        fis.Hide();
                    }
                }
            }
        }
예제 #7
0
        private void timerFalta_Tick(object sender, EventArgs e)
        {
            RN_Asistencia   obj     = new RN_Asistencia();
            Frm_Filtro      fis     = new Frm_Filtro();
            Frm_Advertencia adver   = new Frm_Advertencia();
            Msm_Bueno       ok      = new Msm_Bueno();
            DataTable       dataper = new DataTable();
            RN_Personal     objper  = new RN_Personal();

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

            int    horaCaptu      = DateTime.Now.Hour;
            int    minutoCaptu    = DateTime.Now.Minute;
            string Dniper         = "";
            int    Cant           = 0;
            int    TotalItem      = 0;
            string xidpersona     = "";
            string IdAsistencia   = "";
            string xjustificacion = "";

            if (horaCaptu >= HoLimite)
            {
                if (minutoCaptu >= MiLimite)
                {
                    dataper = objper.RN_Leer_todoPersona();
                    if (dataper.Rows.Count <= 0)
                    {
                        return;
                    }
                    TotalItem = dataper.Rows.Count;  // obtenemos el total de personas registradas

                    foreach (DataRow Registro in dataper.Rows)
                    {
                        Dniper     = Convert.ToString(Registro["DNIPR"]);
                        xidpersona = Convert.ToString(Registro["Id_Pernl"]);

                        if (obj.RN_Checar_SiPersonal_TieneAsistencia_Registrada(xidpersona.Trim()) == false)
                        {
                            if (obj.RN_Checar_SiPersonal_YaMarco_suFalta(xidpersona.Trim()) == false)
                            {
                                // llamar registrar falta
                                RN_Asistencia objA = new RN_Asistencia();
                                EN_Asistencia asi  = new EN_Asistencia();
                                IdAsistencia = RN_Utilitario.RN_NroDoc(3);

                                // verificar si el personal tiene justificacion
                                if (objA.RN_Verificar_Justificacion_Aprobada(xidpersona) == true)
                                {
                                    xjustificacion = "Falta tiene justificativo";
                                }
                                else
                                {
                                    xjustificacion = "No tiene Justificactivo";
                                }

                                obj.RN_Registrar_Falta_Personal(IdAsistencia, xidpersona, xjustificacion);
                                if (BD_Asistencia.faltasaved == true)
                                {
                                    RN_Utilitario.RN_Actualizar_Tipo_Doc(3); // actualizamos el numero correlativo de asistencia
                                    // contador: almacena la cantidad de faltas registradas
                                    Cant += 1;
                                }
                            }
                        }
                    }// fin foreach

                    if (Cant > 1)
                    {
                        timerFalta.Stop();
                        fis.Show();
                        ok.Lbl_msm1.Text = "un total de: " + Cant.ToString() + "/" + TotalItem + "faltas se han registrado exitosamente";
                        ok.ShowDialog();
                        fis.Hide();
                    }
                    else
                    {
                        timerFalta.Stop();
                        fis.Show();
                        ok.Lbl_msm1.Text = "el dia de hoy no falto nadie al trabajo, las " + TotalItem + "Pesonas Marcaron si Asistencia";
                        ok.ShowDialog();
                        fis.Hide();
                    }
                }
            }
        }
        private void Btn_buscar_Click(object sender, EventArgs e)
        {
            RN_Personal     obj          = new RN_Personal();
            RN_Asistencia   objas        = new RN_Asistencia();
            DataTable       datosPersona = new DataTable();
            DataTable       dataAsis     = new DataTable();
            Frm_Filtro      fil          = new Frm_Filtro();
            Frm_Advertencia adver        = new Frm_Advertencia();

            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
            {
                datosPersona = obj.RN_Buscar_Personal_xValor(txt_dni_Buscar.Text.Trim());
                if (datosPersona.Rows.Count <= 0)
                {
                    lbl_msm.BackColor = Color.MistyRose;
                    lbl_msm.ForeColor = Color.Red;
                    lbl_msm.Text      = "El número de DNI ingresado no existe o el personal está dado de baja";
                    tocar_timbre();
                    lbl_Cont.Text     = "10";
                    pnl_Msm.Visible   = true;
                    tmr_Conta.Enabled = true;
                    return;
                }
                else
                {
                    var dt = datosPersona.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 verificó que el personal ya marcó su entrada y su salida";
                        tocar_timbre();
                        lbl_Cont.Text     = "10";
                        pnl_Msm.Visible   = true;
                        tmr_Conta.Enabled = true;
                        return;
                    }
                    else if (objas.RN_Checar_SiPersonal_YaMarco_Entrada(Lbl_Idperso.Text.Trim()) == true)
                    {
                        //Toca Marcar su Salida
                        Frm_Sinox sino = new Frm_Sinox();
                        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();
                                pnl_Msm.Visible   = true;
                                lbl_Cont.Text     = "10";
                                tmr_Conta.Enabled = true;
                            }
                        }
                        else
                        {
                            LimpiarFormulario();
                            sec = 10;
                            tmr_Conta.Stop();
                            pnl_Msm.Visible = false;
                            lbl_Cont.Text   = "10";
                        }
                    }
                    else
                    {
                        //Toca Marcar su 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ó. Has llegado demasiado tarde";
                            tocar_timbre();
                            lbl_Cont.Text     = "10";
                            pnl_Msm.Visible   = true;
                            tmr_Conta.Enabled = true;
                            return;
                        }
                        //Está en tiempo para marcar su entrada
                        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_Bienvenida();
                            pnl_Msm.Visible   = true;
                            tmr_Conta.Enabled = true;
                            lbl_Cont.Text     = "10";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Algo malo pasó: " + ex.Message, "Advertencia de Seguridad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        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     datospers = new DataTable();
            DataTable     dataasis  = new DataTable();

            string NroIDPersona = "";
            int    xint         = 1;

            byte[] finguerByte;
            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
            {
                datospers = obj.RN_Leer_todoPersona();
                TotalFila = datospers.Rows.Count;

                if (datospers.Rows.Count <= 0)
                {
                    return;
                }

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

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


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

                    TemplateBD.DeSerialize(finguerByte);

                    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 Verifico, Marco 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_suEntrada(Lbl_Idperso.Text.Trim()) == true)
                        {
                            Frm_sinox sinox = new Frm_sinox();
                            TerminarBucle = true;
                            fil.Show();
                            sinox.Lbl_msm1.Text = "El Usuario ya tiene registro de Entrada, ¿Quieres Marcar su Salida?";
                            sinox.ShowDialog();
                            fil.Hide();

                            if (Convert.ToString(sinox.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";
                                    tocar_timbreok();
                                    xVerificationControl.Enabled = false;
                                    pnl_Msm.Visible   = true;
                                    lbl_Cont.Text     = "10";
                                    tmr_Conta.Enabled = true;

                                    TerminarBucle = true;
                                }
                            }
                        }
                        else
                        {
                            // marcar su entrada:
                            if (horaCaptu >= HoLimite)
                            {
                                lbl_msm.BackColor = Color.MistyRose;
                                lbl_msm.ForeColor = Color.Red;
                                lbl_msm.Text      = "Estimado Usuario, Su Hora de Entrada ya caduco";
                                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_Actualizar_Tipo_Doc(3);
                                lbl_msm.BackColor = Color.YellowGreen;
                                lbl_msm.ForeColor = Color.White;
                                lbl_msm.Text      = "La Entrada del Personal fue Registrada";
                                tocar_timbreok();
                                pnl_Msm.Visible              = true;
                                tmr_Conta.Enabled            = true;
                                xVerificationControl.Enabled = false;
                                lbl_Cont.Text = "10";
                                TerminarBucle = true;
                            }
                        }
                    }// todo es true
                    else
                    {
                        if (xint == TotalFila)
                        {
                            if (TerminarBucle == false)
                            {
                                lbl_msm.Text      = "La Huella no se encuentra registrada";
                                lbl_msm.BackColor = Color.MistyRose;
                                lbl_msm.ForeColor = Color.Red;
                                tocar_timbre();
                                lbl_Cont.Text = "10";
                                xVerificationControl.Enabled = false;
                                pnl_Msm.Visible   = true;
                                tmr_Conta.Enabled = true;
                            }
                        }
                    }
                    xint += 1;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Algo Salio Mal: " + ex.Message, "Advertencia del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
예제 #10
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;
            }
        }