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()); } }
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); }