Ejemplo n.º 1
0
        public string Registrar(TrabajadorCE trabajador, string tipoControl, DateTime horaRegistro)
        {
            string dni = trabajador.Dni;

            if (dni == null || dni.Length != 8)
            {
                return("DNIincorrecto");
            }
            else
            {
                string     codigo             = string.Concat("RG", dni, "-", horaRegistro.ToString("ddMMyy"));
                HorarioCE  horario            = new HorarioCD().BuscarByDniAnnoMes(dni, horaRegistro);
                DateTime   hrSalida           = Convert.ToDateTime("00:00:00");
                bool       refrigObtenido     = true;
                double     minutosAnticipadas = 0;
                int        filasAfectadas;
                RegistroCE registro = BuscarByCod(codigo);
                SqlCommand cmd      = ConexionCD.CrearCmd(cnx);
                //using (SqlTransaction sqlTrans = cnx.BeginTransaction(IsolationLevel.ReadUncommitted))
                //{
                //try
                //{
                if (registro.Codigo == null)
                {
                    if (tipoControl == "Entrada")
                    {
                        double minutosTardanzas = (horaRegistro - horario.HrEntrada).TotalMinutes;
                        if (minutosTardanzas > 0)
                        {
                            refrigObtenido = false;
                        }
                        else
                        {
                            minutosTardanzas = 0;
                        }
                        cmd.CommandText = "INSERT INTO Registro VALUES (@codigo,@dni,@fecha,@hrEntrada,@hrSalida,@refrig,@minTard,@minAnt)";
                        cmd.Parameters.AddWithValue("@dni", dni);
                        cmd.Parameters.AddWithValue("@fecha", horaRegistro.Date);
                        cmd.Parameters.AddWithValue("@hrEntrada", horaRegistro);
                        cmd.Parameters.AddWithValue("@minTard", minutosTardanzas);
                    }
                    else
                    {
                        return("EntradaNoRegistrada");
                    }
                }
                else
                {
                    if (tipoControl == "Salida")
                    {
                        if (registro.HrSalidaReg == Convert.ToDateTime("00:00:00"))
                        {
                            minutosAnticipadas = (horaRegistro - horario.HrSalida).Negate().TotalMinutes;
                            if (minutosAnticipadas > 0)
                            {
                                refrigObtenido = false;
                            }
                            else
                            {
                                minutosAnticipadas = 0;
                                refrigObtenido    &= registro.RefrigObtenido;
                            }
                            hrSalida        = horaRegistro;
                            cmd.CommandText = "UPDATE Registro SET hrSalidaReg = @hrSalida, minutosAnticipadas = @minAnt, refrigObtenido = @refrig where codigo = @codigo";
                        }
                        else
                        {
                            return("SalidaRegistrada");
                        }
                    }
                    else
                    {
                        return("EntradaRegistrada");
                    }
                }
                cmd.Parameters.AddWithValue("@hrSalida", hrSalida);
                cmd.Parameters.AddWithValue("@refrig", refrigObtenido);
                cmd.Parameters.AddWithValue("@minAnt", minutosAnticipadas);
                cmd.Parameters.AddWithValue("@codigo", codigo);
                //cmd.Transaction = sqlTrans;
                filasAfectadas = cmd.ExecuteNonQuery();
                //sqlTrans.Commit();
                //}
                //catch
                //{
                //sqlTrans.Rollback();
                //return "Problema";
                //}
                //}
                cnx.Close();
                return(filasAfectadas.ToString());
            }
        }
Ejemplo n.º 2
0
        public int RegistrosPrueba()
        {
            int       mes          = 4;
            DataTable trabajadores = new TrabajadorCD().Listado();
            DateTime  annoMes;

            while (mes > 0)
            {
                //FECHA DE INICIO - 01 DE CADA MES
                annoMes = DateTime.Today.AddMonths(-mes).AddDays(-DateTime.Today.Day + 1);
                //RECORRER LISTA TRABAJADORES
                for (int i = 0; i < trabajadores.Rows.Count; i++)
                {
                    string dni = trabajadores.Rows[i].ItemArray[0].ToString();
                    //VERIFICAR SI YA EXISTEN HORARIOS EN MES DE INICIO
                    HorarioCE buscar = new HorarioCD().BuscarByDniAnnoMes(dni, annoMes);
                    if (buscar.Codigo != null)
                    {
                        //SI YA SE CREARON TERMINA EL MÉTODO
                        return(0);
                    }
                    //ESTABLECER HORARIO
                    SqlCommand cmd = ConexionCD.CrearCmd(cnx);
                    cmd.CommandText = "EstablecerHorario";
                    cmd.CommandType = CommandType.StoredProcedure;
                    //fechaContador ES LA FECHA QUE RECORRE TODO EL MES
                    DateTime fechaContador = annoMes.Date;
                    TimeSpan hrE, hrS;
                    if (i < 10)
                    {
                        //TURNO MAÑANA
                        hrE = TimeSpan.FromHours(7);
                        hrS = TimeSpan.FromHours(15);
                    }
                    else
                    {
                        //TURNO TARDE
                        hrE = TimeSpan.FromHours(15);
                        hrS = TimeSpan.FromHours(23);
                    }
                    cmd.Parameters.Add(new SqlParameter("@HorE", hrE));
                    cmd.Parameters.Add(new SqlParameter("@HorS", hrS));
                    cmd.Parameters.Add(new SqlParameter("@dni", dni));
                    cmd.Parameters.Add(new SqlParameter("@AnnoMes", annoMes.ToString("yyyy-MM")));
                    cmd.ExecuteNonQuery();
                    cnx.Close();
                    //HORAS REGISTRADAS DE ENTRADA Y SALIDA
                    TimeSpan hrEReg, hrSReg;
                    //WHILE PARA RECORRER TODO LOS DÍAS DEL MES
                    while (fechaContador < annoMes.AddMonths(1))
                    {
                        //PARA CREAR REGISTROS DIFERENTES
                        //HASTA EL TRABAJADOR N°5
                        if (i < 5)
                        {
                            hrEReg = hrE.Add(TimeSpan.FromMinutes(new Random().Next(0, 5)));
                            hrSReg = hrS.Add(TimeSpan.FromMinutes(new Random().Next(0, 10)));
                        }
                        //HASTA EL TRABAJADOR N°10
                        else if (i < 10)
                        {
                            hrEReg = hrE.Add(TimeSpan.FromMinutes(-new Random().Next(0, 10)));
                            hrSReg = hrS.Add(TimeSpan.FromMinutes(-new Random().Next(0, 5)));
                        }
                        //ETC...
                        else if (i < 15)
                        {
                            hrEReg = hrE.Add(TimeSpan.FromMinutes(-new Random().Next(0, 6)));
                            hrSReg = hrS.Add(TimeSpan.FromMinutes(new Random().Next(0, 11)));
                        }
                        //ELSE PARA LOS QUE NO ASISTIERON
                        else
                        {
                            hrEReg = TimeSpan.FromMinutes(0);
                            hrSReg = TimeSpan.FromMinutes(0);
                        }
                        //IF SOLO PARA LOS QUE SÍ ASISTIERON
                        if (hrEReg.TotalMinutes > 0)
                        {
                            DateTime fechaEntrada, fechaSalida;
                            fechaEntrada = fechaContador.Date + hrEReg;
                            fechaSalida  = fechaContador.Date + hrSReg;
                            if (fechaContador.ToString("dddd") != "domingo")
                            {
                                //REGISTRAR ENTRADA FICTICIA
                                Registrar(dni, "Entrada", fechaEntrada);
                                //REGISTRAR SALIDA FICTICIA
                                Registrar(dni, "Salida", fechaSalida);
                            }
                        }
                        //SIGUIENTE DÍA
                        fechaContador = fechaContador.AddDays(1);
                    }
                }
                //SIGUIENTE MES
                mes--;
            }
            return(1);
        }