public static byte FicharSalida(string nif)
        {
            if (Validar.ValidarLetra(nif))
            {
                if (BBDD.Leer($"SELECT NIF from empleado WHERE NIF = '{nif}' AND Activo=1;").Count > 0)
                {
                    if (BBDD.Leer("SELECT * FROM fichaje " +
                                  $"WHERE '{nif}' = NIF AND '{DateTime.Now.ToString("yyyy-MM-dd")}' = Fecha AND Ficha_Entrada = 1 AND Ficha_Salida = 0;").Count > 0)
                    {
                        if (BBDD.Escribir($"UPDATE fichaje SET Ficha_Salida = 1, Hora_Salida = '{DateTime.Now.ToString("HH:mm:ss")}' " +
                                          $"WHERE NIF = '{nif}' AND Ficha_Salida = 0;"))//
                        {
                            List <ArrayList> dataRows = BBDD.Leer("SELECT empleado.NIF, Nombre, Apellido, Edad, Imagen, Hora_Entrada, Hora_Salida FROM empleado " +
                                                                  $"INNER JOIN fichaje ON empleado.NIF=fichaje.NIF WHERE empleado.NIF='{nif}' AND Ficha_Salida=1 AND Fecha = '{DateTime.Now.ToString("yyyy-MM-dd")}' ORDER BY ID DESC;");

                            CargarDatosEmpleado(dataRows[0]);
                            return(0);
                        }
                        return(4);
                    }
                    return(3);
                }
                else if (BBDD.ConnectionWorking)
                {
                    return(2);
                }
                else
                {
                    return(4);
                }
            }
            return(1);
        }
 public static byte Mentenimiento(string nif)
 {
     if (Validar.ValidarLetra(nif))
     {
         if (BBDD.Leer($"SELECT NIF from empleado WHERE NIF = '{nif}' AND Activo=1;").Count > 0)
         {
             if (BBDD.Leer($"SELECT * FROM empleado WHERE NIF = '{nif}' AND `Password` IS NOT NULL AND `Password` != ''").Count > 0)
             {
                 return(0); //El empleado existe y es administrador (pedir la contraseña posteriormente).
             }
             else
             {
                 return(3); //No es administrador, no tiene permisos.
             }
         }
         else if (BBDD.ConnectionWorking)
         {
             return(2); //El DNI no existe en el sistema.
         }
         else
         {
             return(4); //No hay conexión con la BBDD.
         }
     }
     return(1); //Letra incorrecta.
 }
        public static byte FicharEntrada(string nif)
        {             //Comprobar que la letra coincide con los números.
            if (Validar.ValidarLetra(nif))
            {         //Si el DNI es real, comprobar si existe en la BBDD.
                if (BBDD.Leer($"SELECT NIF from empleado WHERE NIF = '{nif}' AND Activo=1;").Count > 0)
                {     //Si existe, comprobar que no haya un Fichaje de Entrada por cerrar.
                    if (BBDD.Leer($"SELECT * FROM fichaje WHERE NIF = '{nif}' AND Ficha_Entrada = 1 AND Ficha_Salida = 0;").Count == 0)
                    { //Si no hay Fichajes de Entrada por cerrar, se inserta un nuevo Fichaje de Entrada.
                        if (BBDD.Escribir("INSERT INTO fichaje (NIF, Fecha, Hora_Entrada, Hora_Salida, Ficha_Entrada, Ficha_Salida) " +
                                          $"VALUES ('{nif}', '{DateTime.Now.ToString("yyyy-MM-dd")}', '{DateTime.Now.ToString("HH:mm:ss")}', NULL, 1, 0)"))
                        {   //Si se ha insertado correctamente se consultan los datos Empleado/Fichaje para mostarlos gráficamente.
                            List <ArrayList> dataRows = BBDD.Leer("SELECT empleado.NIF, Nombre, Apellido, Edad, Imagen, Hora_Entrada, Hora_Salida FROM empleado " +
                                                                  $"INNER JOIN fichaje ON empleado.NIF=fichaje.NIF WHERE empleado.NIF='{nif}' AND Ficha_Salida=0;");

                            CargarDatosEmpleado(dataRows[0]);
                            return(0);
                        }
                    }
                    return(3);
                }
                else if (BBDD.ConnectionWorking)
                {
                    return(2);
                }
                else
                {
                    return(4);
                }
            }
            return(1);
        }
 public static bool CheckDataBasePassword(string nif, string password)
 {
     if (BBDD.Leer($"SELECT * FROM empleado WHERE NIF = '{nif}' AND `Password` = '{password}'").Count > 0)
     {
         return(true);
     }
     return(false);
 }
        public static bool ShowListBoxInfo(string nif)
        {
            List <ArrayList> dataRows = BBDD.Leer("SELECT empleado.NIF, Nombre, Apellido, Edad, Imagen, Hora_Entrada, Hora_Salida FROM empleado INNER JOIN fichaje ON empleado.NIF=fichaje.NIF "
                                                  + $"WHERE empleado.NIF = '{nif}' AND Ficha_Salida=0;");

            if (BBDD.ConnectionWorking)
            {
                return(CargarDatosEmpleado(dataRows[0]));
            }
            return(false);
        }
 public static bool CerrarFichajesAbiertos()
 {
     if (BBDD.Escribir($"UPDATE fichaje SET Ficha_Salida = 1, Hora_Salida = '23:59:59' " +
                       $"WHERE Fecha < '{DateTime.Now.ToString("yyyy-MM-dd")}' AND Ficha_Salida = 0;"))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        public static byte Presencia()
        {
            BBDD.Leer("SELECT empleado.NIF, Nombre, Apellido, Hora_Entrada FROM empleado INNER JOIN fichaje ON empleado.NIF=fichaje.NIF " +
                      $"WHERE Ficha_Entrada=1 AND Ficha_Salida=0 AND Fecha = '{DateTime.Now.ToString("yyyy-MM-dd")}';");

            if (BBDD.DataRows.Count > 0)
            {
                return(0);
            }
            else if (BBDD.ConnectionWorking)
            {
                return(1);
            }
            else
            {
                return(2);
            }
        }
        public static byte Permanencia(string nif, DateTime fechaInicial, DateTime fechaFinal)
        {
            TimeSpan diferenciaTiempo;
            TimeSpan tiempoTotal = TimeSpan.Zero;

            if (Validar.ValidarLetra(nif))
            {
                if (BBDD.Leer($"SELECT NIF from empleado WHERE NIF = '{nif}' AND Activo=1;").Count > 0)
                {
                    if (BBDD.Leer($"SELECT Fecha, Hora_Entrada, Hora_Salida FROM fichaje WHERE NIF='{nif}' AND Ficha_Entrada=1 AND Ficha_Salida=1 " +
                                  $"AND Fecha BETWEEN '{fechaInicial.ToString("yyyy-MM-dd")}' AND '{fechaFinal.ToString("yyyy-MM-dd")}';").Count > 0)
                    {
                        ArrayList permanenciaTotal = new ArrayList();

                        foreach (var item in BBDD.DataRows)
                        {
                            diferenciaTiempo = TimeSpan.Parse(item[1].ToString()).Subtract(TimeSpan.Parse(item[2].ToString()));
                            tiempoTotal     += diferenciaTiempo;
                        }
                        permanenciaTotal.Add(tiempoTotal);
                        BBDD.DataRows.Add(permanenciaTotal);

                        return(0); //Se han recibido datos para mostrar en el formulario.
                    }
                    else
                    {
                        return(3); //No hay permanencia de ese empleado.
                    }
                }
                else if (BBDD.ConnectionWorking)
                {
                    return(2); //El DNI no existe en el sistema.
                }
                else
                {
                    return(4); //No hay conexión con la Base de Datos.
                }
            }
            return(1); //Letra no correspondiente al DNI (DNI incorrecto).
        }