public Mensaje eliminar(RegistroIncapacidad entity, DBContextAdapter dbContext)
        {
            try
            {
                inicializaVariableMensaje();
                setSession(dbContext.context);
                getSession().Database.BeginTransaction();
                //var sentencia = (from g in getSession().Set<Genero>()
                //                 where g.id == entity.id
                //                 select g).FirstOrDefault();
                getSession().Set <RegistroIncapacidad>().Attach(entity);
                getSession().Set <RegistroIncapacidad>().Remove(entity);
                getSession().SaveChanges();

                mensajeResultado.resultado = true;
                mensajeResultado.noError   = 0;
                mensajeResultado.error     = "";
                getSession().Database.CurrentTransaction.Commit();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("eliminar()1_Error: ").Append(ex));
                mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                mensajeResultado.error     = ex.GetBaseException().ToString();
                mensajeResultado.resultado = null;
                getSession().Database.CurrentTransaction.Rollback();
            }
            return(mensajeResultado);
        }
        private List <Asistencias> obtenerAsistencias(RegistroIncapacidad registroIncapacidad, Empleados empleados, DateTime fechaInicialAnterior, DateTime fechaFinalAnterior, DateTime fechaInicial, DateTime fechaFinal, RazonesSociales razonesSociales, DatosGlobales datoGlobal, List <DateTime> diasFestivos, DateTime fechaIniEmpalme, DateTime fechaFinEmpalme)
        {
            List <Asistencias> asistencias;

            if (fechaInicialAnterior == null | fechaFinalAnterior == null)
            {
                asistencias = getAsistenciasPorRangoFechas(empleados.clave, fechaInicial, fechaFinal, razonesSociales.clave);
            }
            else
            {
                asistencias = getAsistenciasPorRangoFechas(empleados.clave, fechaInicialAnterior, fechaFinalAnterior, razonesSociales.clave);
            }
            if (mensajeResultado.noError != 0)
            {
                return(null);
            }
            asistencias = asistencias == null ? new List <Asistencias>() : asistencias;

            int  i;
            bool usaTiempoExtra = false;

            for (i = 0; i < asistencias.Count; i++)
            {
                if (asistencias[i].excepciones.clave.Equals(ClavesParametrosModulos.claveExcepcionTiempoExtra.ToString()) ||
                    asistencias[i].excepciones.clave.Equals(ClavesParametrosModulos.claveExcepcionExtraDoble.ToString()) ||
                    asistencias[i].excepciones.clave.Equals(ClavesParametrosModulos.claveExcepcionExtraTriple.ToString()))
                {
                    usaTiempoExtra          = true;
                    asistencias[i].cantidad = null;
                }
            }
            asistencias = creaListaAsistenciasIncapacidad(asistencias, registroIncapacidad, datoGlobal, razonesSociales, diasFestivos, fechaIniEmpalme, fechaFinEmpalme, fechaInicial, fechaFinal);
            return(asistencias);
        }
 public Mensaje modificar(RegistroIncapacidad entity, DBContextAdapter dbContext)
 {
     try
     {
         inicializaVariableMensaje();
         setSession(dbContext.context);
         getSession().Database.BeginTransaction();
         //var genero = getSession().Set<Genero>().FirstOrDefault(g => g.id == entity.id);
         //genero.clave = entity.clave;
         //genero.descripcion = entity.descripcion;
         //genero.empleados = entity.empleados;
         getSession().Set <RegistroIncapacidad>().AddOrUpdate(entity);
         getSession().SaveChanges();
         mensajeResultado.resultado = true;
         mensajeResultado.noError   = 0;
         mensajeResultado.error     = "";
         getSession().Database.CurrentTransaction.Commit();
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("actualizar()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 agregar(RegistroIncapacidad entity, DBContextAdapter dbContext)
 {
     try
     {
         inicializaVariableMensaje();
         setSession(dbContext.context);
         getSession().Database.BeginTransaction();
         getSession().Set <RegistroIncapacidad>().Add(entity);
         getSession().SaveChanges();
         mensajeResultado.resultado = entity;
         mensajeResultado.noError   = 0;
         mensajeResultado.error     = "";
         getSession().Database.CurrentTransaction.Commit();
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("agregar()1_Error: ").Append(ex));
         mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
         mensajeResultado.error     = ex.GetBaseException().ToString();
         mensajeResultado.resultado = null;
         getSession().Database.CurrentTransaction.Rollback();
     }
     return(mensajeResultado);
 }
        private List <Asistencias> creaListaAsistenciasIncapacidad(List <Asistencias> asistencias, RegistroIncapacidad registroIncapacidad, DatosGlobales datoGlobal, RazonesSociales razonesSociales, List <DateTime> diasFestivos, DateTime fechaIniEmpalme, DateTime fechaFinEmpalme, DateTime fechaInicial, DateTime fechaFinal)
        {
            int                   i, j, k, cont = 0, orden = 0;
            TipoNomina            nomina;
            List <PeriodosNomina> periodos;
            PeriodosNomina        periodo = null;
            Asistencias           asis;

            try
            {
                DateTime fechainicio = DateTime.Now;
                if (asistencias.Count == 0)
                {
                    fechainicio = Convert.ToDateTime(registroIncapacidad.fechaInicial);
                    for (i = 0; i < registroIncapacidad.diasIncapacidad; i++)
                    {
                        fechainicio = fechainicio.AddDays(cont);
                        cont        = 1;
                        for (k = 0; k < datoGlobal.plazas.Count; k++)
                        {
                            nomina   = datoGlobal.plazas[k].tipoNomina;
                            periodos = (List <PeriodosNomina>)datoGlobal.mapTipoNomina[nomina.clave];
                            for (j = 0; j < periodos.Count; j++)
                            {
                                if (fechainicio.CompareTo(periodos[j].fechaInicial) > 0 && fechainicio.CompareTo(periodos[j].fechaFinal) < 0 || fechainicio.CompareTo(periodos[j].fechaInicial) == 0 || fechainicio.CompareTo(periodos[j].fechaFinal) == 0)
                                {
                                    periodo = periodos[j];
                                    break;
                                }
                            }
                            asis         = creaAsistenciaIncapacidad(registroIncapacidad.empleados, nomina, fechainicio, datoGlobal.excepIncapacidad, periodo, razonesSociales);
                            asis.ordenId = orden;
                            orden++;
                            asistencias.Add(asis);
                        }
                    }
                }
                else
                {
                    List <Asistencias> cambiosAsistencias = new List <Asistencias>();
                    List <DateTime>    listFechas         = new List <DateTime>();
                    for (i = 0; i < registroIncapacidad.diasIncapacidad; i++)
                    {
                        fechainicio = Convert.ToDateTime(registroIncapacidad.fechaInicial);
                        fechainicio = fechainicio.AddDays(i);
                        listFechas.Add(fechainicio);
                    }
                    cont = 0;
                    j    = 0;
                    bool existe;
                    fechainicio = DateTime.Now;
                    while (j < asistencias.Count)
                    {
                        existe      = false;
                        cont        = 0;
                        fechainicio = Convert.ToDateTime(registroIncapacidad.fechaInicial);
                        for (i = 0; i < registroIncapacidad.diasIncapacidad; i++)
                        {
                            fechainicio = fechainicio.AddDays(cont);
                            cont        = 1;
                            if (fechainicio.CompareTo(asistencias[j].fecha) == 0)
                            {
                                existe = true;
                                listFechas.Remove(fechainicio);
                                break;
                            }
                        }

                        if (existe)
                        {
                            asistencias[j].excepciones = datoGlobal.excepIncapacidad;
                            cambiosAsistencias.Add(asistencias[j]);
                            asistencias.RemoveAt(j);
                        }
                        else
                        {
                            j++;
                        }
                    }
                    for (i = 0; i < listFechas.Count; i++)
                    {
                        fechainicio = listFechas[i];
                        for (k = 0; k < datoGlobal.plazas.Count; k++)
                        {
                            nomina   = datoGlobal.plazas[k].tipoNomina;
                            periodos = (List <PeriodosNomina>)datoGlobal.mapTipoNomina[nomina.clave];
                            for (j = 0; j < periodos.Count; j++)
                            {
                                if (fechainicio.CompareTo(periodos[j].fechaInicial) > 0 && fechainicio.CompareTo(periodos[j].fechaFinal) < 0 || fechainicio.CompareTo(periodos[j].fechaInicial) == 0 || fechainicio.CompareTo(periodos[j].fechaFinal) == 0)
                                {
                                    periodo = periodos[j];
                                    break;
                                }
                                asis = creaAsistenciaIncapacidad(registroIncapacidad.empleados, nomina, fechainicio, datoGlobal.excepIncapacidad, periodo, razonesSociales);
                                cambiosAsistencias.Add(asis);
                            }
                        }
                    }
                    bool isdiasFestivos;
                    for (i = 0; i < asistencias.Count; i++)
                    {
                        isdiasFestivos = false;
                        for (j = 0; j < diasFestivos.Count; j++)
                        {
                            if (diasFestivos[j].CompareTo(asistencias[i].fecha) == 0)
                            {
                                isdiasFestivos = true;
                                break;
                            }
                        }
                        if (isdiasFestivos)
                        {
                            asistencias[i].excepciones = datoGlobal.excepFestivo;
                            asistencias[i].jornada     = 0.0;
                        }
                        else
                        {
                            if (fechaIniEmpalme != null && fechaFinEmpalme != null)
                            {
                                if (!(Convert.ToDateTime(asistencias[i].fecha).CompareTo(fechaIniEmpalme) >= 0 && (Convert.ToDateTime(asistencias[i].fecha).CompareTo(fechaFinEmpalme) <= 0)))
                                {
                                    asistencias[i].excepciones = datoGlobal.excepDefault;
                                    asistencias[i].jornada     = 8.0;
                                }
                            }
                            else
                            {
                                if (!(Convert.ToDateTime(asistencias[i].fecha).CompareTo(fechaIniEmpalme) >= 0 && (Convert.ToDateTime(asistencias[i].fecha).CompareTo(fechaFinEmpalme) <= 0)))
                                {
                                    asistencias[i].excepciones = datoGlobal.excepDefault;
                                    asistencias[i].jornada     = 8.0;
                                }
                            }
                        }
                    }
                    //Utilerias.ordena(cambiosAsistencias, "Fecha");
                    for (i = 0; i < cambiosAsistencias.Count; i++)
                    {
                        cambiosAsistencias[i].ordenId = i;
                    }
                    asistencias = cambiosAsistencias;
                }
            }
            catch (Exception ex)
            {
                commit = false;
                mensajeResultado.noError = 200;
                mensajeResultado.error   = ex.Message;
            }
            return(asistencias);
        }
        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);
        }