private void bt_solicitarJustificacion_Click(object sender, EventArgs e)
        {
            Frm_Filtro            fil = new Frm_Filtro();
            Frm_Reg_Justificacion per = new Frm_Reg_Justificacion();

            if (lsv_person.SelectedIndices.Count == 0)
            {
                fil.Show();
                MessageBox.Show("Seleccione la persona a la que desea solicitarle la justificación", "Advertencia de Seguridad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                fil.Hide();
            }
            else
            {
                var    lsv      = lsv_person.SelectedItems[0];
                string xidsocio = lsv.SubItems[0].Text;
                string nombre   = lsv.SubItems[2].Text;
                fil.Show();
                per.xedit = false;
                per.txt_IdPersona.Text  = xidsocio;
                per.txt_nompersona.Text = nombre;
                per.txt_idjusti.Text    = RN_Utilitario.RN_NroDoc(4);
                per.ShowDialog();
                fil.Hide();

                if (Convert.ToString(per.Tag) == "")
                {
                    return;
                }
                {
                    Cargar_todas_Justificaciones();
                    elTab1.SelectedTabPageIndex = 4;
                    elTabPage5.Visible          = true;
                }
            }
        }
        private void Btn_Savedrobot_Click(object sender, EventArgs e)
        {
            RN_Utilitario uti = new RN_Utilitario();

            if (rdb_ActivarRobot.Checked == true)
            {
                uti.RN_Actualizar_RobotFalta(5, "Si");
                if (BD_Utilitario.falta == true)
                {
                    Frm_Msm_Bueno ok = new Frm_Msm_Bueno();
                    ok.Lbl_msm1.Text = "El Robot fue actualizado";
                    ok.ShowDialog();

                    elTab1.SelectedTabPageIndex = 0;
                    elTabPage4.Visible          = false;
                }
            }
            else if (rdb_Desact_Robot.Checked == true)
            {
                uti.RN_Actualizar_RobotFalta(5, "No");
                if (BD_Utilitario.falta == true)
                {
                    Frm_Msm_Bueno ok = new Frm_Msm_Bueno();
                    ok.Lbl_msm1.Text = "El Robot fue actualizado";
                    ok.ShowDialog();

                    elTab1.SelectedTabPageIndex = 0;
                    elTabPage4.Visible          = false;
                }
            }
        }
Пример #3
0
        private void Verificar_Robot_de_Faltas()
        {
            string tipo;

            tipo = RN_Utilitario.RN_Listar_TipoFalta(5);
            if (tipo.Trim() == "Si")
            {
                timerFalta.Start();
                rdb_ActivarRobot.Checked = true;
            }
            else if (tipo.Trim() == "No")
            {
                timerFalta.Stop();
                rdb_Desact_Robot.Checked = true;
            }
        }
        private void Editar_Justificacion()
        {
            RN_Justificacion obj = new RN_Justificacion();
            EN_Justificacion jus = new EN_Justificacion();

            Frm_Filtro fil = new Frm_Filtro();
            Msm_Bueno  ok  = new Msm_Bueno();

            try
            {
                jus.IdJusti         = txt_idjusti.Text.Trim();
                jus.Id_Personal     = txt_IdPersona.Text;
                jus.PrincipalMotivo = cbo_motivJusti.Text;
                jus.Detalle         = txt_DetalleJusti.Text;
                jus.Fecha           = Dtp_FechaJusti.Value;

                obj.RN_Editar_Justificacion(jus);

                if (BD_Justificacion.edited == true)
                {
                    RN_Utilitario.RN_Actualizar_Tipo_Doc(4);

                    fil.Show();
                    ok.Lbl_msm1.Text = "La solicitud de la justificacion fue registrada con exito";
                    ok.ShowDialog();
                    fil.Hide();

                    LimpiarPiso();
                    this.Tag = "A";
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Revisa el erro: " + ex.Message, "Advertencia de Seguridad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        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();
                    }
                }
            }
        }
Пример #6
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);
            }
        }
Пример #9
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;
            }
        }