public Mensaje getTablaDatosPorTablasPorControladorPorFiltrosEspecialesJS(DateTime?controlFecha, int controlAnio, string controladores, string tablaBaseClave, string tablaPersonalizadaClave, DBContextAdapter dbContextMaestra) { TablaDatos tablaDatos; try { inicializaVariableMensaje(); setSession(dbContextMaestra.context); getSession().Database.BeginTransaction(); tablaBaseClave = tablaBaseClave == null ? "" : tablaBaseClave.Trim(); tablaPersonalizadaClave = tablaPersonalizadaClave == null ? "" : tablaPersonalizadaClave.Trim(); controladores = controladores == null ? "" : controladores.Trim(); var query = from o in getSession().Set <TablaDatos>() select o; if (tablaBaseClave.Length > 0) { query = from sub in query where sub.tablaBase.clave == tablaBaseClave select sub; } else if (tablaPersonalizadaClave.Length > 0) { query = from sub1 in query where sub1.tablaPersonalizada.clave == tablaPersonalizadaClave select sub1; } int id = query.Select(p => p.id).SingleOrDefault(); if (controlFecha != null) { var query2 = from tb in getSession().Set <TablaDatos>() select tb; if (tablaBaseClave.Length > 0) { query2 = from tb in query2 where query.Select(p => p.tablaBase.id).ToList().Contains(tb.tablaBase.id) select tb; } else { query2 = from tb in query2 where query.Select(p => p.tablaBase.id).ToList().Contains(tb.tablaBase.id) select tb; } query2 = from sub in query2 where sub.controlPorFecha == controlFecha select sub; if (controlAnio > 0) { query2 = from sub in query2 where sub.controlPorAnio == controlAnio select sub; } if (controladores.Length > 0) { query2 = from sub in query2 where sub.controladores == controladores select sub; } query = from sub in query where sub.id == (from a in query2 select new { a.id }).Max(p => p.id) select sub; } else { if (controlAnio > 0) { query = from sub in query where sub.controlPorAnio == controlAnio select sub; } if (controladores.Length > 0) { query = from sub in query where sub.controladores == controladores select sub; } } tablaDatos = query.SingleOrDefault(); var tablaDatoss = (from a in query select new { a.controladores, a.controlPorAnio, a.controlPorFecha, a.descripcion, a.id, a.renglonSeleccionado, a.tablaBase_ID, a.tablaPersonalizada_ID }).SingleOrDefault(); object[,] valores = null; valores = UtilidadesXML.extraeValoresNodos(UtilidadesXML.convierteBytesToXML(tablaDatos.fileXml)); if (UtilidadesXML.ERROR_XML > 0) { mensajeResultado = UtilidadesXML.mensajeError; return(null); } object[] datos = new object[2]; datos[0] = tablaDatoss; datos[1] = valores; var res = datos; mensajeResultado.resultado = res; mensajeResultado.noError = 0; mensajeResultado.error = ""; getSession().Database.CurrentTransaction.Commit(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("getTablaDatosPorTablasPorControladorPorFiltrosEspeciales()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; getSession().Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
public Mensaje saveDeleteRegistroIncapacidad(RegistroIncapacidad incapacidad, object[] clavesDeleteIncapacidad, int rango, Empleados empleados, RazonesSociales razonesSociales, DateTime fechaInicial, DateTime fechaFinal, DateTime fechaInicialAnterior, DateTime fechaFinalAnterior, object claveExcepcion, string formatoFecha, DateTime fechaInicEmpalme, DateTime fechaFinEmpalme, DBContextAdapter dbContext, DBContextAdapter dbContextMaestra) { try { commit = true; inicializaVariableMensaje(); RegistroIncapacidad registro = null; setSession(dbContext.context); getSession().Database.BeginTransaction(); List <TablaDatos> organized = (from o in getSession().Set <TablaDatos>() where o.tablaBase.clave == ClavesParametrosModulos.claveTipoTablaDiasFestivos.ToString() && o.id == (from t in getSession().Set <TablaDatos>() where t.tablaBase.id == o.tablaBase.id && t.controlPorFecha <= DateTime.Now select new { t.id }).Max(p => p.id) select o).ToList(); organized = organized == null ? new List <TablaDatos>() : organized; List <DateTime> diasFestivos = new List <DateTime>(); if (organized.Count > 0) { byte[] convert = organized[0].fileXml; Object[,] dias = UtilidadesXML.extraeValoresNodos(UtilidadesXML.convierteBytesToXML(convert)); DateTime fecha; int i; for (i = 0; i < dias.Length; i++) { fecha = Convert.ToDateTime(dias[i, 0].ToString()); diasFestivos.Add(fecha); } } getSession().Database.CurrentTransaction.Commit(); setSession(dbContext.context); getSession().Database.BeginTransaction(); if (clavesDeleteIncapacidad.Length > 0) { commit = deleteListQuerys("RegistroIncapacidad", new CamposWhere("RegistroIncapacidad.id", clavesDeleteIncapacidad, OperadorComparacion.IN, OperadorLogico.AND), dbContext); //deleteListQuerys("RegistroIncapacidad", "id", clavesDeleteIncapacidad); registro = new RegistroIncapacidad(); } if (commit) { Object[] clavesDetallesAsistencia = getDetalleAsistencia(empleados, fechaInicialAnterior, fechaFinalAnterior, razonesSociales); if (clavesDetallesAsistencia != null) { commit = deleteListQuerys("DetalleAsistencia", new CamposWhere("DetalleAsistencia.id", clavesDetallesAsistencia, OperadorComparacion.IN, OperadorLogico.AND), dbContext); //deleteListQuerys("DetalleAsistencia", "id", clavesDetallesAsistencia); } } if (commit) { List <Asistencias> asistencias = getAsistenciasPorRangoFechas(empleados.clave, fechaInicial, fechaFinal, razonesSociales.clave); if (mensajeResultado.noError == 0) { if (asistencias != null) { if (asistencias.Count > 0) { Object[] clavesDetallesAsistencia = new Object[asistencias.Count]; for (int i = 0; i < asistencias.Count; i++) { clavesDetallesAsistencia[i] = asistencias[i].id; } commit = deleteListQuerys("Asistencias", new CamposWhere("Asistencias.id", clavesDetallesAsistencia, OperadorComparacion.IN, OperadorLogico.AND), dbContext); //deleteListQuerys("Asistencias", "id", clavesDetallesAsistencia); } } } } if (commit & incapacidad != null) { DatosGlobales datosGlobales = cargaDatosGlobales(empleados, razonesSociales, fechaInicial, fechaFinal, claveExcepcion); List <Asistencias> asistencias = obtenerAsistencias(incapacidad, empleados, fechaInicialAnterior, fechaFinalAnterior, fechaInicial, fechaFinal, razonesSociales, datosGlobales, diasFestivos, fechaInicEmpalme, fechaFinEmpalme); commit = agregarListaAsistencias(asistencias, rango); } if (commit & incapacidad != null) { registro = getSession().Set <RegistroIncapacidad>().Add(incapacidad); } if (commit) { mensajeResultado.resultado = registro; mensajeResultado.noError = 0; mensajeResultado.error = ""; getSession().Database.CurrentTransaction.Commit(); } else { mensajeResultado.resultado = null; getSession().Database.CurrentTransaction.Rollback(); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("saveDeleteRegistroIncapacidad()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; getSession().Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaestra, bool usaCommit) { Object[,] reglaFactor = factorIntegracion; bool usoBDMaestra = false; devengadaActual = new Dictionary <string, VacacionesDevengadas>(); try { //inicializaVariableMensaje(); //if (dbContextSimple == null) //{ // setSession(dbContext); //} //else //{ // setSession(dbContextSimple); //} // dbContextSimple.Database.BeginTransaction(); ControlVacDeveng control = (from c in dbContextSimple.Set <ControlVacDeveng>() where c.razonesSociales.clave == razonesSociales.clave && c.fecha == (from ct in dbContextSimple.Set <ControlVacDeveng>() select new { ct.fecha }).Max(p => p.fecha) select c).SingleOrDefault(); DateTime fechaUltimDev; List <DateTime> diasPendientes = null; if (control == null) { diasPendientes = new List <DateTime>(); diasPendientes.Add(DateTime.Now); } else { fechaUltimDev = Convert.ToDateTime(control.fecha); diasPendientes = getDaysBetweenDates(fechaUltimDev, new DateTime()); } int d = 0; ControlVacDeveng controlCalculadas = null; for (d = 0; d < diasPendientes.Count; d++) { if (diasPendientes.Count > 0) { //Obtiene empleados que cumplen aniversario en la empresa al día List <PlazasPorEmpleado> plazasEmpleados = null; DateTime fechapen = diasPendientes[d]; plazasEmpleados = (from o in dbContextSimple.Set <PlazasPorEmpleadosMov>() where (from m in dbContextSimple.Set <PlazasPorEmpleadosMov>() where m.plazasPorEmpleado.razonesSociales.clave == razonesSociales.clave && m.plazasPorEmpleado.fechaFinal >= fechapen && o.plazasPorEmpleado.fechaPrestaciones.Value.Month == fechapen.Month && o.plazasPorEmpleado.fechaPrestaciones.Value.Day == fechapen.Day group new { m.plazasPorEmpleado.empleados, m } by new { m.plazasPorEmpleado.empleados.clave } into g select new { Column1 = g.Max(p => p.m.id) }).Contains(new { Column1 = o.id }) select o.plazasPorEmpleado).ToList(); plazasEmpleados = plazasEmpleados == null ? new List <PlazasPorEmpleado>() : plazasEmpleados; if (plazasEmpleados.Count > 0) { if (reglaFactor == null) {//Obtiene los factores de integracion usoBDMaestra = true; //if (dbContextMaster == null) //{ // setSession(dbContext); //} //else //{ // setSession(dbContextMaster); //} List <TablaDatos> values; values = (from o in dbContextMaster.Set <TablaDatos>() where o.tablaBase.clave == ClavesParametrosModulos.claveTipoTablaFactorIntegracion.ToString() && o.id == (from t in dbContextMaster.Set <TablaDatos>() where t.tablaBase.id == o.tablaBase.id select new { t.id }).Max(p => p.id) select o).ToList(); values = values == null ? new List <TablaDatos>() : values; if (values.Count > 0) { byte[] convert = ((TablaDatos)values[0]).fileXml; XDocument doc = UtilidadesXML.convierteBytesToXML(convert); reglaFactor = UtilidadesXML.extraeValoresNodos(doc); } } //Llenar tabla de Vacaciones Devengadas por día VacacionesDevengadas vd = null; if (usoBDMaestra) { if (dbContextSimple == null) { setSession(dbContextSimple); } else { getSession().Database.Connection.Close(); setSession(dbContextSimple); } } for (int i = 0; i < plazasEmpleados.Count; i++) { Double antiguedad = (Double)calcularAntiguedadExacta(Convert.ToDateTime(plazasEmpleados[i].fechaPrestaciones)); //Obtiene vacaciones devengadas por año a ese empleado VacacionesDevengadas vaca = (from a in dbContextSimple.Set <VacacionesDevengadas>() where a.empleados.id == plazasEmpleados[i].empleados.id && a.ejercicio == Convert.ToInt32(antiguedad) select a).SingleOrDefault(); if (vaca == null) { vd = new VacacionesDevengadas(); vd.razonesSociales = plazasEmpleados[i].razonesSociales; vd.empleados = plazasEmpleados[i].empleados; vd.ejercicio = Convert.ToInt32(antiguedad); Object[] factorEmpleado = (Object[])obtieneFactorIntegracion(reglaFactor, Convert.ToInt32(antiguedad)); Object[] salarioAniv = (from sdi in dbContextSimple.Set <SalariosIntegrados>() where sdi.empleados.id == plazasEmpleados[i].empleados.id && sdi.fecha <= plazasEmpleados[i].fechaPrestaciones group sdi by new { sdi.salarioDiarioFijo } into g select new { Column1 = g.Max(p => p.fecha), g.Key.salarioDiarioFijo }).ToArray(); if (salarioAniv == null) { vd.salarioAniversario = 0.0; } else { vd.salarioAniversario = (double)salarioAniv[1]; } vd.factorPrima = Convert.ToDouble(factorEmpleado[4].ToString()); vd.diasVacaciones = Convert.ToInt32(factorEmpleado[3].ToString()); vd.registroInicial = false; double primaVac = Convert.ToDouble(factorEmpleado[4].ToString()) / 100 * Convert.ToInt32(factorEmpleado[3].ToString()); vd.diasPrimaVaca = primaVac; dbContextSimple.Set <VacacionesDevengadas>().Add(vd); devengadaActual.Add(plazasEmpleados[i].empleados.clave, vd); } } } } controlCalculadas = new ControlVacDeveng(); controlCalculadas.fecha = diasPendientes[d]; controlCalculadas.razonesSociales_ID = razonesSociales.id; dbContextSimple.Set <ControlVacDeveng>().Add(controlCalculadas); dbContextSimple.SaveChanges(); } if (usaCommit) { dbContextSimple.Database.CurrentTransaction.Commit(); } mensajeResultado.resultado = true; mensajeResultado.noError = 0; mensajeResultado.error = ""; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("calcularVacacionesDevengadasEmpleados()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; dbContextSimple.Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }