示例#1
0
        /// <summary>
        /// Registra acciones de ingreso para horarios.
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="fecha"></param>
        /// <param name="hora"></param>
        /// <param name="observacion"></param>
        public void registroIngreso(string usuario, int id, Fecha fecha, Horario hora, String observacion)
        {
            //Abro conexión
            MySqlConnection conexionADO2 = new MySqlConnection();

            conexionADO2.ConnectionString = conexionString;
            conexionADO2.Open();

            String myquerystring = "INSERT INTO turno(fecha,ingreso, horario, observacionEntrada) "
                                   + "VALUES ("
                                   + fecha.getSQLFormat() + ", "
                                   + hora.getSQLFormat() + ","
                                   + id.ToString() + ", '"
                                   + observacion + "');";

            //Asigno y ejecuto 3
            MySqlCommand cmd = new MySqlCommand();

            cmd.Connection  = conexionADO2;
            cmd.CommandText = myquerystring;
            cmd.ExecuteNonQuery();
        }
        /// <summary>
        /// Crea un horario extra en la DB
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="id"></param>
        /// <param name="fecha"></param>
        /// <param name="hora"></param>
        /// <param name="observacion"></param>
        private void registroIngresoHoraExtra(string usuario,int id,Fecha fecha,Horario hora,string observacion)
        {
            //Abro conexión
            MySqlConnection conexionADO2 = new MySqlConnection();
            conexionADO2.ConnectionString = conexionString;
            conexionADO2.Open();

            String myquerystring = "INSERT INTO turno(fecha,ingreso, extra, observacionEntrada) "
                + "VALUES ("
                + fecha.getSQLFormat() + ", "
                + hora.getSQLFormat() + ","
                + id.ToString() + ", '"
                + observacion + "');";

            //Asigno y ejecuto 3
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = conexionADO2;
            cmd.CommandText = myquerystring;
            cmd.ExecuteNonQuery();
        }
        //************************************
        //***** Métodos de escritura *********
        //************************************
        /// <summary>
        /// Detecta si la accion a registrarse es un ingreso o egreso.
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="observacion"></param>
        /// <returns></returns>
        public int registrarAccion(string usuario, string observacion, string area)
        {
            //Abro conexión
            MySqlConnection conexionADO = new MySqlConnection();
            conexionADO.ConnectionString = conexionString;
            conexionADO.Open();
            Fecha fecha;
            Horario hora;
            //Conecto mediante NTP para obtener fecha/hora
            try
            {
                // Fuerzo a no utilizar el ntp porque anda mas o menos
                throw new Exception();
                //Servidor NTP externo
                SNTPClient ntp = new SNTPClient("ar.pool.ntp.org");

                //SNTPClient ntp = new SNTPClient("ntp.frsf.utn.edu.ar");
                ntp.Connect(false);
                fecha = new Fecha(ntp.ReceiveTimestamp.Day, ntp.ReceiveTimestamp.Month,
                    ntp.ReceiveTimestamp.Year, ntp.ReceiveTimestamp.DayOfWeek.ToString());
                hora = new Horario(ntp.ReceiveTimestamp.Hour, ntp.ReceiveTimestamp.Minute, ntp.ReceiveTimestamp.Second);
            }
            catch (Exception ex)
            {

                //Si no funciona el ntp obtengo la hora de la base de datos
                MySqlDataReader dataread;
                MySqlCommand lecturaF = new MySqlCommand("select NOW() as ahora;" , conexionADO);
                dataread = lecturaF.ExecuteReader();
                dataread.Read();

                fecha = new Fecha(dataread.GetDateTime("ahora").Date);
                hora = new Horario();
                hora.setTimeSpan(dataread.GetDateTime("ahora").TimeOfDay);

                dataread.Close();
            }

            //Veo si es un ingeso o egreso
            //Creo lector =) y efectuo la consulta
            MySqlDataReader data;
            MySqlCommand lectura = new MySqlCommand("SELECT * FROM turno_usuario_area t WHERE usuario=" + usuario +
                " AND fecha = " + fecha.getSQLFormat() + " AND t.egreso IS NULL;", conexionADO);
            data = lectura.ExecuteReader();
            //tipo 0: egreso .. tipo 1: ingreso
            int tipoAccion = 1;
            int idTurno = 0;

            //si existe dato entonces es un egreso
            if (data.Read())
            {
                //registro el egreso
                idTurno = data.GetInt32("idTurno");
                tipoAccion = 0;
            }

            //Cierro el data reader (esa no la sabia) :o
            data.Close();

            //Creo consulta
            string myquerystring;

            //Cambio la consulta dependiendo si es ingreso o egreso
            if (tipoAccion == 1)
            {
                //Primero obtengo si hay algun horario asignado para este dia de esa persona
                int dia = fecha.getDiaDeSemana();
                MySqlDataReader data2;
                string consulta = "SELECT idHorario as id " +
                    "FROM `horario_asignado` as h " +
                    "WHERE " +
                    "h.`usuario` = '" + usuario + "' AND " +
                    "h.`fecha` = " + fecha.getSQLFormat() + " AND " +
                    "h.`activo` = 1 AND " +
                    "h.`confirmado` = 1 AND " +
                    "TIME_TO_SEC(" + hora.getSQLFormat() + ") >= (TIME_TO_SEC(h.`ingreso`) - 1800) AND " +
                    "TIME_TO_SEC(" + hora.getSQLFormat() + ") < TIME_TO_SEC(h.`egreso`);";

                MySqlCommand lectura2 = new MySqlCommand(consulta, conexionADO);
                data2 = lectura2.ExecuteReader();
                int id = 0;

                //Veo si hay horario asignado
                if (data2.Read())
                {
                    id = data2.GetInt32("id");
                    this.registroIngreso(usuario, id, fecha, hora, observacion);
                }
                else
                {
                    id = this.crearHorarioExtra(usuario, area);
                    this.registroIngresoHoraExtra(usuario, id, fecha, hora, observacion);
                }

                data2.Close();

            }
            else
            {
                //Para el egreso
                myquerystring = "UPDATE turno SET egreso = " + hora.getSQLFormat() + ", observacionSalida = '" + observacion + "' WHERE idTurno =" + idTurno + ";";
                //Asigno y ejecuto
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = conexionADO;
                cmd.CommandText = myquerystring;
                cmd.ExecuteNonQuery();
            }

            conexionADO.Close();
            return tipoAccion;
        }
示例#4
0
        //************************************
        //***** Métodos de escritura *********
        //************************************
        /// <summary>
        /// Detecta si la accion a registrarse es un ingreso o egreso.
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="observacion"></param>
        /// <returns></returns>
        public int registrarAccion(string usuario, string observacion, string area)
        {
            //Abro conexión
            MySqlConnection conexionADO = new MySqlConnection();

            conexionADO.ConnectionString = conexionString;
            conexionADO.Open();
            Fecha   fecha;
            Horario hora;

            //Conecto mediante NTP para obtener fecha/hora
            try
            {
                // Fuerzo a no utilizar el ntp porque anda mas o menos
                throw new Exception();
                //Servidor NTP externo
                SNTPClient ntp = new SNTPClient("ar.pool.ntp.org");

                //SNTPClient ntp = new SNTPClient("ntp.frsf.utn.edu.ar");
                ntp.Connect(false);
                fecha = new Fecha(ntp.ReceiveTimestamp.Day, ntp.ReceiveTimestamp.Month,
                                  ntp.ReceiveTimestamp.Year, ntp.ReceiveTimestamp.DayOfWeek.ToString());
                hora = new Horario(ntp.ReceiveTimestamp.Hour, ntp.ReceiveTimestamp.Minute, ntp.ReceiveTimestamp.Second);
            }
            catch (Exception ex)
            {
                //Si no funciona el ntp obtengo la hora de la base de datos
                MySqlDataReader dataread;
                MySqlCommand    lecturaF = new MySqlCommand("select NOW() as ahora;", conexionADO);
                dataread = lecturaF.ExecuteReader();
                dataread.Read();

                fecha = new Fecha(dataread.GetDateTime("ahora").Date);
                hora  = new Horario();
                hora.setTimeSpan(dataread.GetDateTime("ahora").TimeOfDay);

                dataread.Close();
            }

            //Veo si es un ingeso o egreso
            //Creo lector =) y efectuo la consulta
            MySqlDataReader data;
            MySqlCommand    lectura = new MySqlCommand("SELECT * FROM turno_usuario_area t WHERE usuario=" + usuario +
                                                       " AND fecha = " + fecha.getSQLFormat() + " AND t.egreso IS NULL;", conexionADO);

            data = lectura.ExecuteReader();
            //tipo 0: egreso .. tipo 1: ingreso
            int tipoAccion = 1;
            int idTurno    = 0;

            //si existe dato entonces es un egreso
            if (data.Read())
            {
                //registro el egreso
                idTurno    = data.GetInt32("idTurno");
                tipoAccion = 0;
            }

            //Cierro el data reader (esa no la sabia) :o
            data.Close();

            //Creo consulta
            string myquerystring;

            //Cambio la consulta dependiendo si es ingreso o egreso
            if (tipoAccion == 1)
            {
                //Primero obtengo si hay algun horario asignado para este dia de esa persona
                int             dia = fecha.getDiaDeSemana();
                MySqlDataReader data2;
                string          consulta = "SELECT idHorario as id " +
                                           "FROM `horario_asignado` as h " +
                                           "WHERE " +
                                           "h.`usuario` = '" + usuario + "' AND " +
                                           "h.`fecha` = " + fecha.getSQLFormat() + " AND " +
                                           "h.`activo` = 1 AND " +
                                           "h.`confirmado` = 1 AND " +
                                           "TIME_TO_SEC(" + hora.getSQLFormat() + ") >= (TIME_TO_SEC(h.`ingreso`) - 1800) AND " +
                                           "TIME_TO_SEC(" + hora.getSQLFormat() + ") < TIME_TO_SEC(h.`egreso`);";

                MySqlCommand lectura2 = new MySqlCommand(consulta, conexionADO);
                data2 = lectura2.ExecuteReader();
                int id = 0;

                //Veo si hay horario asignado
                if (data2.Read())
                {
                    id = data2.GetInt32("id");
                    this.registroIngreso(usuario, id, fecha, hora, observacion);
                }
                else
                {
                    id = this.crearHorarioExtra(usuario, area);
                    this.registroIngresoHoraExtra(usuario, id, fecha, hora, observacion);
                }

                data2.Close();
            }
            else
            {
                //Para el egreso
                myquerystring = "UPDATE turno SET egreso = " + hora.getSQLFormat() + ", observacionSalida = '" + observacion + "' WHERE idTurno =" + idTurno + ";";
                //Asigno y ejecuto
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection  = conexionADO;
                cmd.CommandText = myquerystring;
                cmd.ExecuteNonQuery();
            }

            conexionADO.Close();
            return(tipoAccion);
        }