示例#1
0
        public Controlador.LogicaAcceso VerificarAutorizacion(Controlador.LogicaAcceso clsLogicaAcceso)
        {
            Controlador.LogicaAcceso clsLogicaAccesox = new Controlador.LogicaAcceso();
            SqlConnection cnx = Conexion.Conexion.ObtenerConexion();
            cnx.Open();
            SqlCommand comando = new SqlCommand(String.Format(
               "SELECT IIF (getdate() BETWEEN  t1.FechaDesde AND t1.FechaHasta, 1,0) AS Autorizacion,  t1.idTipoPersonal, t1.idEmpresaColaboradora,  t2.Apellidos, t2.Nombres, t1.idpersonal AS DNI, " +
               "t3.NombreEmpresa, t4.NombreTipoPersonal, t2.Foto " +
               "FROM  acceso as t1 " +
               "INNER JOIN  personal AS t2   ON t1.idPersonal=t2.idPersonal " +
               "INNER JOIN  empresacolaboradora AS t3   ON t1.idEmpresaColaboradora=t3.idEmpresaColaboradora " +
               "INNER JOIN  tipopersonal AS t4  ON  t1.idTipoPersonal=t4.idTipoPersonal " +
               "WHERE  T1.idpersonal = '{0}'", clsLogicaAcceso.idacceso), cnx);

            SqlDataReader reader = comando.ExecuteReader();

            while (reader.Read())
            {
                clsLogicaAccesox.autorizacion = Convert.ToInt32(reader["Autorizacion"]);
                clsLogicaAccesox.apellidos = Convert.ToString(reader["Apellidos"]);
                clsLogicaAccesox.nombres = Convert.ToString(reader["Nombres"]);
                clsLogicaAccesox.dni = Convert.ToString(reader["DNI"]);
                clsLogicaAccesox.nombreempresa = Convert.ToString(reader["NombreEmpresa"]);
                clsLogicaAccesox.nombretipopersonal = Convert.ToString(reader["NombreTipoPersonal"]);
                clsLogicaAccesox.idTipoPersonal = Convert.ToString(reader["idTipoPersonal"]);
                clsLogicaAccesox.idEmpresaColaboradora = Convert.ToString(reader["idEmpresaColaboradora"]);
                clsLogicaAccesox.foto = (byte[])reader["Foto"];

            }
            cnx.Close();
            return clsLogicaAccesox;
        }
        private void txtDNI_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter))
            {
                Controlador.LogicaAcceso clsLogicaacceso = new Controlador.LogicaAcceso();
                clsLogicaacceso.idacceso = txtDNI.Text;

                Modelo.LogicaAcceso_BD clsLogicaAccesoBD = new Modelo.LogicaAcceso_BD();
                clsLogicaacceso = clsLogicaAccesoBD.VerificarAutorizacion(clsLogicaacceso);

                if (clsLogicaacceso.dni != null)
                {
                    //existe el  acceso parta el personal pero no se si esta activado su pase

                    lblNombres.Text = clsLogicaacceso.nombres;
                    lblApellidos.Text = clsLogicaacceso.apellidos;
                    lblDNI.Text = clsLogicaacceso.dni;
                    lblNombreEmpresa.Text = clsLogicaacceso.nombreempresa;
                    lblTipoPersonal.Text = clsLogicaacceso.nombretipopersonal;
                    picFoto.Image = byteArrayToImage(clsLogicaacceso.foto);

                    // aqui verifico el estado de su pase

                    if (clsLogicaacceso.autorizacion == 1)
                    {
                        serialPort1.Write(Verde_ON);
                        lblAcceso.Text = "Acceso Permitido";
                        lblAcceso.ForeColor = Color.Green;

                        // ---> verifico el ultimo registro de ingreso y salidas
                        Controlador.Registro clsRegistro = new Controlador.Registro();
                        clsRegistro.idAcceso = clsLogicaacceso.dni;

                        Modelo.Registro_BD clsRegistroBD = new Modelo.Registro_BD();

                        clsRegistro = clsRegistroBD.BuscarUltimoRegistrodeESxIDACCESO(clsRegistro);
                        // fin <---

                        int estado = 3;

                        if (clsRegistro.idEstado != null)
                        {

                            estado = int.Parse(clsRegistro.idEstado);

                        }

                        Controlador.Registro clsRegistrox = new Controlador.Registro();
                        // Modelo.Registro_BD clsRegistroBDx = new Modelo.Registro_BD();

                        if (estado == 1)
                        {

                            //el personal sale de las instalaciones

                            clsRegistrox.idTipoPersonal = clsLogicaacceso.idTipoPersonal;

                            clsRegistrox.idEmpresaColaboradora = clsLogicaacceso.idEmpresaColaboradora;
                            clsRegistrox.idAcceso = clsLogicaacceso.dni;
                            clsRegistrox.idEstado = "0";
                            Modelo.Registro_BD.insertarAcceso(clsRegistrox);//retorna 1 si se guardo correctamente

                            contadorgrid++;

                            dataGridView1.Rows.Add(contadorgrid,byteArrayToImage(clsLogicaacceso.foto),clsLogicaacceso.apellidos +" "+clsLogicaacceso.nombres, clsLogicaacceso.dni);
                            dataGridView1.Sort(this.dataGridView1.Columns["Column4"], ListSortDirection.Descending);

                        }
                        else if (estado == 0)
                        {
                            //el personal ingresa a las instalaciones
                            clsRegistrox.idTipoPersonal = clsLogicaacceso.idTipoPersonal;

                            clsRegistrox.idEmpresaColaboradora = clsLogicaacceso.idEmpresaColaboradora;
                            clsRegistrox.idAcceso = clsLogicaacceso.dni;
                            clsRegistrox.idEstado = "1";
                            Modelo.Registro_BD.insertarAcceso(clsRegistrox);//retorna 1 si se guardo correctamente

                            contadorgrid++;

                            dataGridView1.Rows.Add(contadorgrid, byteArrayToImage(clsLogicaacceso.foto), clsLogicaacceso.apellidos + " " + clsLogicaacceso.nombres, clsLogicaacceso.dni);
                            dataGridView1.Sort(this.dataGridView1.Columns["Column4"], ListSortDirection.Descending);
                        }
                        else
                        {
                            clsRegistrox.idTipoPersonal = clsLogicaacceso.idTipoPersonal;

                            clsRegistrox.idEmpresaColaboradora = clsLogicaacceso.idEmpresaColaboradora;
                            clsRegistrox.idAcceso = clsLogicaacceso.dni;
                            clsRegistrox.idEstado = "1";
                            Modelo.Registro_BD.insertarAcceso(clsRegistrox);//retorna 1 si se guardo correctamente
                            contadorgrid++;

                            dataGridView1.Rows.Add(contadorgrid, byteArrayToImage(clsLogicaacceso.foto), clsLogicaacceso.apellidos + " " + clsLogicaacceso.nombres, clsLogicaacceso.dni);
                            dataGridView1.Sort(this.dataGridView1.Columns["Column4"], ListSortDirection.Descending);
                        }

                    }
                    else if (clsLogicaacceso.autorizacion == 0)
                    {
                        serialPort1.Write(Rojo_ON);  //prender 3segundos
                        lblAcceso.Text = "ACCESO DENEGADO";
                        lblAcceso.ForeColor = Color.Red;

                    }

                }
                else
                {

                    //no existe personal
                    //poner foto vacia

                    picFoto.Image = null;
                    lblNombres.Text ="?";
                    lblApellidos.Text = "?";
                    lblDNI.Text = "?";
                    lblNombreEmpresa.Text = "?";
                    lblTipoPersonal.Text = "?";

                }

            }
        }