public void Update(int Id, int CARGA_PRESTACIONES_ESTADOId, int TIPO_PRESTACIONId, System.DateTime FECHA_CARGA, string ARCHIVO)
        {
            Init();
            try
            {
                 using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_ENCABEZADO repositorio = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    CARGA_PRESTACIONES_ENCABEZADO _CARGA_PRESTACIONES_ENCABEZADO = repositorio.GetById(Id);
                    if(Equals(_CARGA_PRESTACIONES_ENCABEZADO,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_ENCABEZADO con Id =",Id.ToString()));
                    }

                    RepositorioCARGA_PRESTACIONES_ESTADO _repositorioCARGA_PRESTACIONES_ESTADO = new RepositorioCARGA_PRESTACIONES_ESTADO(context);
                    CARGA_PRESTACIONES_ESTADO _objCARGA_PRESTACIONES_ESTADO = _repositorioCARGA_PRESTACIONES_ESTADO.GetById(CARGA_PRESTACIONES_ESTADOId);
                    if(Equals(_objCARGA_PRESTACIONES_ESTADO,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_ESTADO con Id =",CARGA_PRESTACIONES_ESTADOId.ToString()));
                    }

                    RepositorioTIPO_PRESTACION _repositorioTIPO_PRESTACION = new RepositorioTIPO_PRESTACION(context);
                    TIPO_PRESTACION _objTIPO_PRESTACION = _repositorioTIPO_PRESTACION.GetById(TIPO_PRESTACIONId);
                    if(Equals(_objTIPO_PRESTACION,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado TIPO_PRESTACION con Id =",TIPO_PRESTACIONId.ToString()));
                    }

                    //properties

                        _CARGA_PRESTACIONES_ENCABEZADO.FECHA_CARGA = FECHA_CARGA;
                    if (!string.IsNullOrEmpty(ARCHIVO))
                    {
                        _CARGA_PRESTACIONES_ENCABEZADO.ARCHIVO = ARCHIVO;
                    }

                    //parents

                    _CARGA_PRESTACIONES_ENCABEZADO.CARGA_PRESTACIONES_ESTADO = _objCARGA_PRESTACIONES_ESTADO;
                    _CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION = _objTIPO_PRESTACION;

                    context.SaveChanges();
                }
            }
            catch(Exception ex)
            {
                 ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                 throw ex;
            }
        }
        public void Delete(int Id)
        {
            Init();
            try
            {
                 using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_ENCABEZADO repositorio = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    CARGA_PRESTACIONES_ENCABEZADO _CARGA_PRESTACIONES_ENCABEZADO = repositorio.GetById(Id);

                    if(Equals(_CARGA_PRESTACIONES_ENCABEZADO ,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_ENCABEZADO con Id =",Id.ToString()));
                    }

                    _CARGA_PRESTACIONES_ENCABEZADO.ACTIVO = false;

                    context.SaveChanges();
                }
            }
            catch(Exception ex)
            {
                 ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                 throw ex;
            }
        }
 public List<CARGA_PRESTACIONES_ENCABEZADO> GetByFilterWithReferences(int? CARGA_PRESTACIONES_ESTADOId = null, int? TIPO_PRESTACIONId = null, System.DateTime? FECHA_CARGA = null, string ARCHIVO = "")
 {
     Init();
     try
     {
          using (LQCEEntities context = new LQCEEntities())
         {
             RepositorioCARGA_PRESTACIONES_ENCABEZADO repositorio = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
             return repositorio.GetByFilterWithReferences(CARGA_PRESTACIONES_ESTADOId, TIPO_PRESTACIONId, FECHA_CARGA, ARCHIVO).OrderBy(i => i.ID).ToList();
         }
     }
     catch (Exception ex)
     {
          ISException.RegisterExcepcion(ex);
         Error = ex.Message;
         throw ex;
     }
 }
 public CARGA_PRESTACIONES_ENCABEZADO GetByIdWithReferences(int ID)
 {
     Init();
     try
     {
         using (LQCEEntities context = new LQCEEntities())
         {
             RepositorioCARGA_PRESTACIONES_ENCABEZADO repositorio = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
             return repositorio.GetByIdWithReferences(ID);
         }
     }
     catch (Exception ex)
     {
          ISException.RegisterExcepcion(ex);
         Error = ex.Message;
         throw ex;
     }
 }
        /// <summary>
        /// Obtiene listado de resumen de carga de prestaciones
        /// </summary>
        /// <param name="IdCargaPrestacionesEstado">(Opcional) Filtra por estado de carga</param>
        /// <returns>Listado de resumen de carga de prestaciones</returns>
        public List<DTO_RESUMEN_CARGA_PRESTACIONES> GetResumenCargaPrestaciones(int? IdCargaPrestacionesEstado, int? IdTipoPrestacion)
        {
            Init();
            try
            {
                using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_ENCABEZADO repositorio = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);

                    int IdEstadoDetalleValidado = (int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Validado;
                    int IdEstadoDetalleConError = (int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.ConError;

                    var q = from item in repositorio.GetByFilterWithReferences(IdCargaPrestacionesEstado,
                            IdTipoPrestacion, null, "")
                            select new DTO_RESUMEN_CARGA_PRESTACIONES
                            {
                                ID = item.ID,
                                ARCHIVO = item.ARCHIVO,
                                FECHA_CARGA = item.FECHA_CARGA,
                                FECHA_ACTUALIZACION = item.FECHA_CARGA,
                                //FECHA_ACTUALIZACION = (item.CARGA_PRESTACIONES_HUMANAS_DETALLE.Max(d => d.FECHA_ACTUALIZACION) > item.CARGA_PRESTACIONES_VETERINARIAS_DETALLE.Max(d => d.FECHA_ACTUALIZACION) ?
                                //    item.CARGA_PRESTACIONES_HUMANAS_DETALLE.Max(d => d.FECHA_ACTUALIZACION) : item.CARGA_PRESTACIONES_VETERINARIAS_DETALLE.Max(d => d.FECHA_ACTUALIZACION),
                                ID_ESTADO = item.CARGA_PRESTACIONES_ESTADO.ID,
                                NOMBRE_ESTADO = item.CARGA_PRESTACIONES_ESTADO.NOMBRE,
                                ID_TIPO_PRESTACION = item.TIPO_PRESTACION.ID,
                                NOMBRE_TIPO_PRESTACION = item.TIPO_PRESTACION.NOMBRE,
                                TOTAL_REGISTROS = item.CARGA_PRESTACIONES_HUMANAS_DETALLE.Count()
                                    + item.CARGA_PRESTACIONES_VETERINARIAS_DETALLE.Count(),
                                REGISTROS_VALIDADOS = item.CARGA_PRESTACIONES_HUMANAS_DETALLE.Count(d => d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID == IdEstadoDetalleValidado)
                                    + item.CARGA_PRESTACIONES_VETERINARIAS_DETALLE.Count(d => d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID == IdEstadoDetalleValidado),
                                REGISTROS_CON_ERRORES = item.CARGA_PRESTACIONES_HUMANAS_DETALLE.Count(d => d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID == IdEstadoDetalleConError)
                                    + item.CARGA_PRESTACIONES_VETERINARIAS_DETALLE.Count(d => d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID == IdEstadoDetalleConError)
                            };
                    return q.ToList();
                }
            }
            catch (Exception ex)
            {
                ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                throw ex;
            }
        }
 public List<CARGA_PRESTACIONES_ENCABEZADO> GetAllWithReferences()
 {
     Init();
     try
     {
         using (LQCEEntities context = new LQCEEntities())
         {
             RepositorioCARGA_PRESTACIONES_ENCABEZADO repositorio = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                                 return repositorio.GetAllWithReferences().OrderBy(i => i.ID).ToList();
                             }
     }
     catch (Exception ex)
        {
          ISException.RegisterExcepcion(ex);
         Error = ex.Message;
         throw ex;
     }
 }
        //public List<DTO_DETALLE_CARGA_PRESTACIONES> GetDetalleCargaPrestaciones(int IdCargaPrestacionesEncabezado,
        //    string NUMERO_FICHA, string NOMBRE, int? ID_ESTADO_DETALLE, string PROCEDENCIA, int PAGINA, int REGISTROS)
        //{
        //    try
        //    {
        //        using (LQCEEntities context = new LQCEEntities())
        //        {
        //            RepositorioCARGA_PRESTACIONES_ENCABEZADO _RepositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
        //            RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE = new RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE(context);
        //            RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE = new RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE(context);
        //            CARGA_PRESTACIONES_ENCABEZADO objEncabezado = _RepositorioCARGA_PRESTACIONES_ENCABEZADO.GetByIdWithReferences(IdCargaPrestacionesEncabezado);
        //            if (objEncabezado == null)
        //                throw new Exception("No se encuentra informacion de carga de prestaciones");
        //            if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Humanas)
        //            {
        //                var q = from d in _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE.GetByFilterWithReferences(IdCargaPrestacionesEncabezado,
        //                        ID_ESTADO_DETALLE, null, null, null, null, NUMERO_FICHA, NOMBRE,
        //                        "", "", "", "", PROCEDENCIA, "", "", "", "", "", "", "", "", "", null, null, null, null)
        //                        select d;
        //                var r = from item in q.OrderBy(d => d.ID).Skip((PAGINA - 1) * REGISTROS).Take(10)
        //                        select new DTO_DETALLE_CARGA_PRESTACIONES
        //                        {
        //                            ID = item.ID,
        //                            ID_TIPO_PRESTACION = item.CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION.ID,
        //                            NUMERO_FICHA = item.FICHA,
        //                            NOMBRE = item.NOMBRE,
        //                            ID_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.ID,
        //                            NOMBRE_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.NOMBRE,
        //                            PROCEDENCIA = item.PROCEDENCIA,
        //                            FECHA_RECEPCION = item.FECHA_RECEPCION
        //                        };
        //                return r.ToList();
        //            }
        //            else if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Veterinarias)
        //            {
        //                var q = from d in _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE.GetByFilterWithReferences(IdCargaPrestacionesEncabezado,
        //                        ID_ESTADO_DETALLE, null, null, null, null, null, null,
        //                        NUMERO_FICHA, NOMBRE, "", "", "", "", "", "", "", PROCEDENCIA,
        //                        "", "", "", "", "", "", "", "", null, null, null, null)
        //                        select d;
        //                var r = from item in q.OrderBy(d => d.ID).Skip((PAGINA - 1) * REGISTROS).Take(10)
        //                        select new DTO_DETALLE_CARGA_PRESTACIONES
        //                        {
        //                            ID = item.ID,
        //                            ID_TIPO_PRESTACION = item.CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION.ID,
        //                            NUMERO_FICHA = item.FICHA,
        //                            NOMBRE = item.NOMBRE,
        //                            ID_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.ID,
        //                            NOMBRE_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.NOMBRE,
        //                            PROCEDENCIA = item.PROCEDENCIA,
        //                            FECHA_RECEPCION = item.FECHA_RECEPCION
        //                        };
        //                return r.ToList();
        //            }
        //            else
        //            {
        //                throw new Exception("Tipo de carga no identificada");
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        ISException.RegisterExcepcion(ex);
        //        Error = ex.Message;
        //        throw ex;
        //    }
        //}
        public int GetDetalleCargaPrestacionesCount(DTOFindPrestaciones dto)
        {
            try
            {
                using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_ENCABEZADO _RepositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE = new RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE(context);
                    RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE = new RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE(context);

                    CARGA_PRESTACIONES_ENCABEZADO objEncabezado = _RepositorioCARGA_PRESTACIONES_ENCABEZADO.GetByIdWithReferences(dto.id);
                    if (objEncabezado == null)
                        throw new Exception("No se encuentra informacion de carga de prestaciones");

                    if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Humanas)
                    {
                        var q = from d in _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE.GetByFilterWithReferences(dto.estado,
                                   dto.id, null, null, null, null, dto.numero, dto.nombre,
                                "", "", "", "", dto.prodedencia, "", "", "", "", "", "", "", "", "", "", null, null, null, null, null)
                                select d;

                        return q.Count();
                    }
                    else if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Veterinarias)
                    {
                        var q = from d in _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE.GetByFilterWithReferences(dto.estado, dto.id,
                                null, null, null, null, null, null,
                                dto.numero, dto.nombre, "", "", "", "", "", "", "", dto.prodedencia,
                                "", "", "", "", "", "", "", "", "", null, null, null, null, null, null)
                                select d;

                        return q.Count();
                    }
                    else
                    {
                        throw new Exception("Tipo de carga no identificada");
                    }
                }
            }
            catch (Exception ex)
            {
                ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                throw ex;
            }
        }
        public List<DTO_DETALLE_CARGA_PRESTACIONES> GetDetalleCargaPrestaciones(DTOFindPrestaciones dto)
        {
            try
            {
                using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_ENCABEZADO _RepositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE = new RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE(context);
                    RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE = new RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE(context);

                    CARGA_PRESTACIONES_ENCABEZADO objEncabezado = _RepositorioCARGA_PRESTACIONES_ENCABEZADO.GetByIdWithReferences(dto.id);
                    if (objEncabezado == null)
                        throw new Exception("No se encuentra informacion de carga de prestaciones");

                    if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Humanas)
                    {
                        var q = from d in _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE.GetByFilterWithReferences(dto.estado, dto.id,
                                null, null, null, null, dto.numero, dto.nombre,
                                "", "", "", "", dto.prodedencia, "", "", "", "", "", "", "", "", "", "", null, null, null, null, null)
                                select d;

                        var r = from item in q.OrderBy(d => d.VALOR_FICHA).ThenBy(d => d.ID).Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize)
                                select new DTO_DETALLE_CARGA_PRESTACIONES
                                {
                                    ID = item.ID,
                                    ID_TIPO_PRESTACION = item.CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION.ID,
                                    NUMERO_FICHA = item.FICHA,
                                    NOMBRE = item.NOMBRE,
                                    ID_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.ID,
                                    NOMBRE_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.NOMBRE,
                                    PROCEDENCIA = item.PROCEDENCIA,
                                    FECHA_RECEPCION = item.FECHA_RECEPCION
                                };

                        return r.ToList();
                    }
                    else if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Veterinarias)
                    {
                        var q = from d in _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE.GetByFilterWithReferences(dto.estado, dto.id,
                                null, null, null, null, null, null,
                                dto.numero, dto.nombre, "", "", "", "", "", "", "", dto.prodedencia,
                                "", "", "", "", "", "", "", "", "", "",
                                null, null, null, null, null, null)
                                select d;

                        var r = from item in q.OrderBy(d => d.VALOR_FICHA).ThenBy(d => d.ID).Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize)
                                select new DTO_DETALLE_CARGA_PRESTACIONES
                                {
                                    ID = item.ID,
                                    ID_TIPO_PRESTACION = item.CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION.ID,
                                    NUMERO_FICHA = item.FICHA,
                                    NOMBRE = item.NOMBRE,
                                    ID_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.ID,
                                    NOMBRE_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.NOMBRE,
                                    PROCEDENCIA = item.PROCEDENCIA,
                                    FECHA_RECEPCION = item.FECHA_RECEPCION
                                };

                        return r.ToList();
                    }
                    else
                    {
                        throw new Exception("Tipo de carga no identificada");
                    }
                }
            }
            catch (Exception ex)
            {
                ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                throw ex;
            }
        }
        //public int GetDetalleCargaPrestacionesCount(int IdCargaPrestacionesEncabezado,
        //    string NUMERO_FICHA, string NOMBRE, int? ID_ESTADO_DETALLE, string PROCEDENCIA, int PAGINA, int REGISTROS)
        //{
        //    try
        //    {
        //        using (LQCEEntities context = new LQCEEntities())
        //        {
        //            RepositorioCARGA_PRESTACIONES_ENCABEZADO _RepositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
        //            RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE = new RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE(context);
        //            RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE = new RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE(context);
        //            CARGA_PRESTACIONES_ENCABEZADO objEncabezado = _RepositorioCARGA_PRESTACIONES_ENCABEZADO.GetByIdWithReferences(IdCargaPrestacionesEncabezado);
        //            if (objEncabezado == null)
        //                throw new Exception("No se encuentra informacion de carga de prestaciones");
        //            if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Humanas)
        //            {
        //                var q = from d in _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE.GetByFilterWithReferences(IdCargaPrestacionesEncabezado,
        //                        ID_ESTADO_DETALLE, null, null, null, null, NUMERO_FICHA, NOMBRE,
        //                        "", "", "", "", PROCEDENCIA, "", "", "", "", "", "", "", "", "", null, null, null, null)
        //                        select d;
        //                var r = from item in q.OrderBy(d => d.ID).Skip((PAGINA - 1) * REGISTROS).Take(10)
        //                        select new DTO_DETALLE_CARGA_PRESTACIONES
        //                        {
        //                            ID = item.ID,
        //                            ID_TIPO_PRESTACION = item.CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION.ID,
        //                            NUMERO_FICHA = item.FICHA,
        //                            NOMBRE = item.NOMBRE,
        //                            ID_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.ID,
        //                            NOMBRE_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.NOMBRE,
        //                            PROCEDENCIA = item.PROCEDENCIA,
        //                            FECHA_RECEPCION = item.FECHA_RECEPCION
        //                        };
        //                return r.ToList().Count();
        //            }
        //            else if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Veterinarias)
        //            {
        //                var q = from d in _RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE.GetByFilterWithReferences(IdCargaPrestacionesEncabezado,
        //                        ID_ESTADO_DETALLE, null, null, null, null, null, null,
        //                        NUMERO_FICHA, NOMBRE, "", "", "", "", "", "", "", PROCEDENCIA,
        //                        "", "", "", "", "", "", "", "", null, null, null, null)
        //                        select d;
        //                var r = from item in q.OrderBy(d => d.ID).Skip((PAGINA - 1) * REGISTROS).Take(10)
        //                        select new DTO_DETALLE_CARGA_PRESTACIONES
        //                        {
        //                            ID = item.ID,
        //                            ID_TIPO_PRESTACION = item.CARGA_PRESTACIONES_ENCABEZADO.TIPO_PRESTACION.ID,
        //                            NUMERO_FICHA = item.FICHA,
        //                            NOMBRE = item.NOMBRE,
        //                            ID_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.ID,
        //                            NOMBRE_ESTADO_DETALLE = item.CARGA_PRESTACIONES_DETALLE_ESTADO.NOMBRE,
        //                            PROCEDENCIA = item.PROCEDENCIA,
        //                            FECHA_RECEPCION = item.FECHA_RECEPCION
        //                        };
        //                return r.ToList().Count();
        //            }
        //            else
        //            {
        //                throw new Exception("Tipo de carga no identificada");
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        ISException.RegisterExcepcion(ex);
        //        Error = ex.Message;
        //        throw ex;
        //    }
        //}
        public void CambiarEstadoCarga(int IdCargaPrestacionesEncabezado, int IdCargaPrestacionesEstado)
        {
            Init();
            try
            {
                using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_ENCABEZADO _RepositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    RepositorioCARGA_PRESTACIONES_ESTADO _RepositorioCARGA_PRESTACIONES_ESTADO = new RepositorioCARGA_PRESTACIONES_ESTADO(context);
                    RepositorioTIPO_PRESTACION _RepositorioTIPO_PRESTACION = new RepositorioTIPO_PRESTACION(context);
                    RepositorioCLIENTE _RepositorioCLIENTE = new RepositorioCLIENTE(context);

                    CARGA_PRESTACIONES_ENCABEZADO objEncabezado = _RepositorioCARGA_PRESTACIONES_ENCABEZADO.GetByIdWithReferencesFull(IdCargaPrestacionesEncabezado);
                    if (objEncabezado == null)
                        throw new Exception("No se encuentra informacion de la carga");

                    CARGA_PRESTACIONES_ESTADO objEstado = _RepositorioCARGA_PRESTACIONES_ESTADO.GetById(IdCargaPrestacionesEstado);
                    if (objEstado == null)
                        throw new Exception("No se encuentra informacion del estado");

                    // Validaciones
                    if (objEncabezado.CARGA_PRESTACIONES_ESTADO.ID != (int)ENUM_CARGA_PRESTACIONES_ESTADO.Pendiente)
                        throw new Exception("La carga seleccionada no esta en revision pendiente");

                    int IdCargaDetalleEstadoPendiente = (int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Pendiente;
                    int IdCargaDetalleEstadoValidado = (int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Validado;

                    if (objEstado.ID == (int)ENUM_CARGA_PRESTACIONES_ESTADO.Completado)
                    {
                        if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Humanas)
                        {
                            if (objEncabezado.CARGA_PRESTACIONES_HUMANAS_DETALLE
                           .Any(d => d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID != IdCargaDetalleEstadoValidado))
                            {
                                throw new Exception("La carga no se puede completar mientras tenga fichas pendientes o con errores");
                            }
                        }
                        else if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Veterinarias)
                        {
                            if (objEncabezado.CARGA_PRESTACIONES_VETERINARIAS_DETALLE
                           .Any(d => d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID != IdCargaDetalleEstadoValidado))
                            {
                                throw new Exception("La carga no se puede completar mientras tenga fichas pendientes o con errores");
                            }
                        }
                    }

                    objEncabezado.CARGA_PRESTACIONES_ESTADO = objEstado;
                    context.ApplyPropertyChanges("CARGA_PRESTACIONES_ENCABEZADO", objEncabezado);

                    // Mover prestaciones y examenes a tablas definitivas
                    if (objEstado.ID == (int)ENUM_CARGA_PRESTACIONES_ESTADO.Completado)
                    {
                        if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Humanas)
                        {
                            TIPO_PRESTACION _TIPO_PRESTACION = _RepositorioTIPO_PRESTACION.GetById((int)ENUM_TIPO_PRESTACION.Humanas);
                            if (_TIPO_PRESTACION == null)
                                throw new Exception("No se encuentra informacion de tipo de prestación humana");

                            foreach (CARGA_PRESTACIONES_HUMANAS_DETALLE _CARGA_PRESTACIONES_HUMANAS_DETALLE in objEncabezado.CARGA_PRESTACIONES_HUMANAS_DETALLE
                                 .Where(d => d.ACTIVO && d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID == (int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Validado))
                            {
                                if (string.IsNullOrEmpty(_CARGA_PRESTACIONES_HUMANAS_DETALLE.NOMBRE))
                                    throw new Exception("No se ha señalado nombre");
                                if (!_CARGA_PRESTACIONES_HUMANAS_DETALLE.VALOR_FICHA.HasValue)
                                    throw new Exception("No se ha señalado ficha");
                                if (!_CARGA_PRESTACIONES_HUMANAS_DETALLE.VALOR_FECHA_RECEPCION.HasValue)
                                    throw new Exception("Fecha de recepción debe tener valor");
                                if(_CARGA_PRESTACIONES_HUMANAS_DETALLE.CLIENTE == null)
                                    throw new Exception("No se ha identificado al cliente");
                                if (!_CARGA_PRESTACIONES_HUMANAS_DETALLE.VALOR_TOTAL.HasValue)
                                    throw new Exception("No se ha señalado valor total de prestaciones");

                                PRESTACION _PRESTACION = new PRESTACION();
                                _PRESTACION.ID = _CARGA_PRESTACIONES_HUMANAS_DETALLE.VALOR_FICHA.Value;
                                _PRESTACION.TIPO_PRESTACION = _TIPO_PRESTACION;
                                _PRESTACION.FECHA_RECEPCION = _CARGA_PRESTACIONES_HUMANAS_DETALLE.VALOR_FECHA_RECEPCION.Value;
                                _PRESTACION.MEDICO = _CARGA_PRESTACIONES_HUMANAS_DETALLE.MEDICO;
                                _PRESTACION.CLIENTE = _CARGA_PRESTACIONES_HUMANAS_DETALLE.CLIENTE;
                                _PRESTACION.PREVISION = _CARGA_PRESTACIONES_HUMANAS_DETALLE.PREVISION1;
                                _PRESTACION.GARANTIA = _CARGA_PRESTACIONES_HUMANAS_DETALLE.GARANTIA1;
                                _PRESTACION.PENDIENTE = _CARGA_PRESTACIONES_HUMANAS_DETALLE.PENDIENTE;
                                _PRESTACION.RECEPCION = _CARGA_PRESTACIONES_HUMANAS_DETALLE.RECEPCION;
                                _PRESTACION.ACTIVO = true;
                                context.AddToPRESTACION(_PRESTACION);

                                PRESTACION_HUMANA _PRESTACION_HUMANA = new PRESTACION_HUMANA();
                                _PRESTACION_HUMANA.PRESTACION = _PRESTACION;
                                _PRESTACION_HUMANA.NOMBRE = _CARGA_PRESTACIONES_HUMANAS_DETALLE.NOMBRE;
                                _PRESTACION_HUMANA.TELEFONO = _CARGA_PRESTACIONES_HUMANAS_DETALLE.TELEFONO;
                                _PRESTACION_HUMANA.EDAD = _CARGA_PRESTACIONES_HUMANAS_DETALLE.EDAD;
                                _PRESTACION_HUMANA.RUT = _CARGA_PRESTACIONES_HUMANAS_DETALLE.RUT;
                                _PRESTACION_HUMANA.ACTIVO = true;
                                context.AddToPRESTACION_HUMANA(_PRESTACION_HUMANA);

                                foreach (CARGA_PRESTACIONES_HUMANAS_EXAMEN _CARGA_PRESTACIONES_HUMANAS_EXAMEN in _CARGA_PRESTACIONES_HUMANAS_DETALLE
                                    .CARGA_PRESTACIONES_HUMANAS_EXAMEN.Where(d => d.ACTIVO))
                                {
                                    PRESTACION_EXAMEN _PRESTACION_EXAMEN = new PRESTACION_EXAMEN();
                                    _PRESTACION_EXAMEN.PRESTACION = _PRESTACION;
                                    _PRESTACION_EXAMEN.EXAMEN = _CARGA_PRESTACIONES_HUMANAS_EXAMEN.EXAMEN;
                                    _PRESTACION_EXAMEN.VALOR = _CARGA_PRESTACIONES_HUMANAS_EXAMEN.VALOR_VALOR_EXAMEN;
                                    _PRESTACION_EXAMEN.ACTIVO = true;
                                    context.AddToPRESTACION_EXAMEN(_PRESTACION_EXAMEN);
                                }
                            }
                        }
                        else if (objEncabezado.TIPO_PRESTACION.ID == (int)ENUM_TIPO_PRESTACION.Veterinarias)
                        {
                            TIPO_PRESTACION _TIPO_PRESTACION = _RepositorioTIPO_PRESTACION.GetById((int)ENUM_TIPO_PRESTACION.Veterinarias);
                            if (_TIPO_PRESTACION == null)
                                throw new Exception("No se encuentra informacion de tipo de prestación veterinaria");

                            foreach (CARGA_PRESTACIONES_VETERINARIAS_DETALLE _CARGA_PRESTACIONES_VETERINARIAS_DETALLE in objEncabezado.CARGA_PRESTACIONES_VETERINARIAS_DETALLE
                                 .Where(d => d.ACTIVO && d.CARGA_PRESTACIONES_DETALLE_ESTADO.ID == (int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Validado))
                            {
                                if (string.IsNullOrEmpty(_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.NOMBRE))
                                    throw new Exception("No se ha señalado nombre");
                                if (!_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA.HasValue)
                                    throw new Exception("No se ha señalado ingreso");
                                if (_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ESPECIE1 == null)
                                    throw new Exception("No se ha identificado ESPECIE");
                                if (_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CLIENTE == null)
                                    throw new Exception("No se ha identificado al cliente");
                                if (!_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_TOTAL.HasValue)
                                    throw new Exception("No se ha señalado valor total de prestaciones");
                                if (string.IsNullOrEmpty(_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SOLICITA))
                                    throw new Exception("No se ha señalado solicitante");
                                if (!_CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_RECEPCION.HasValue)
                                    throw new Exception("Fecha de recepción debe tener valor");

                                PRESTACION _PRESTACION = new PRESTACION();
                                _PRESTACION.ID = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA.Value;
                                _PRESTACION.TIPO_PRESTACION = _TIPO_PRESTACION;
                                _PRESTACION.CLIENTE = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CLIENTE;
                                _PRESTACION.GARANTIA = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.GARANTIA1;
                                _PRESTACION.PENDIENTE = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PENDIENTE;
                                _PRESTACION.RECEPCION = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RECEPCION;
                                _PRESTACION.MEDICO = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.MEDICO;
                                _PRESTACION.FECHA_RECEPCION = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_RECEPCION.Value;
                                _PRESTACION.PREVISION = null;
                                _PRESTACION.ACTIVO = true;

                                context.AddToPRESTACION(_PRESTACION);

                                PRESTACION_VETERINARIA _PRESTACION_VETERINARIA = new PRESTACION_VETERINARIA();
                                _PRESTACION_VETERINARIA.PRESTACION = _PRESTACION;
                                _PRESTACION_VETERINARIA.NOMBRE = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.NOMBRE;
                                _PRESTACION_VETERINARIA.ESPECIE = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ESPECIE1;
                                _PRESTACION_VETERINARIA.RAZA = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RAZA1;
                                _PRESTACION_VETERINARIA.SEXO = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SEXO;
                                _PRESTACION_VETERINARIA.EDAD = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.EDAD;
                                _PRESTACION_VETERINARIA.TELEFONO = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.TELEFONO;
                                _PRESTACION_VETERINARIA.PROCEDENCIA = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PROCEDENCIA;
                                _PRESTACION_VETERINARIA.SOLICITANTE = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SOLICITA;
                                _PRESTACION_VETERINARIA.FICHA_CLINICA = _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA_CLINICA;
                                _PRESTACION_VETERINARIA.ACTIVO = true;

                                context.AddToPRESTACION_VETERINARIA(_PRESTACION_VETERINARIA);

                                foreach (CARGA_PRESTACIONES_VETERINARIAS_EXAMEN _CARGA_PRESTACIONES_VETERINARIAS_EXAMEN in _CARGA_PRESTACIONES_VETERINARIAS_DETALLE
                                    .CARGA_PRESTACIONES_VETERINARIAS_EXAMEN.Where(d => d.ACTIVO))
                                {
                                    PRESTACION_EXAMEN _PRESTACION_EXAMEN = new PRESTACION_EXAMEN();
                                    _PRESTACION_EXAMEN.PRESTACION = _PRESTACION;
                                    _PRESTACION_EXAMEN.EXAMEN = _CARGA_PRESTACIONES_VETERINARIAS_EXAMEN.EXAMEN;
                                    _PRESTACION_EXAMEN.VALOR = _CARGA_PRESTACIONES_VETERINARIAS_EXAMEN.VALOR_VALOR_EXAMEN;
                                    _PRESTACION_EXAMEN.ACTIVO = true;
                                    context.AddToPRESTACION_EXAMEN(_PRESTACION_EXAMEN);
                                }
                            }
                        }
                    }

                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                throw ex;
            }
        }
        public int Add(int CARGA_PRESTACIONES_DETALLE_ESTADOId, int CARGA_PRESTACIONES_ENCABEZADOId, int CLIENTEId, int ESPECIE1Id, int GARANTIA1Id, int PREVISIONId, int RAZA1Id, System.DateTime FECHA_ACTUALIZACION, string FICHA = "", string NOMBRE = "", string ESPECIE = "", string RAZA = "", string EDAD = "", string SEXO = "", string SOLICITA = "", string TELEFONO = "", string MEDICO = "", string PROCEDENCIA = "", string FECHA_RECEPCION = "", string FECHA_MUESTRA = "", string FECHA_RESULTADOS = "", string PENDIENTE = "", string GARANTIA = "", string PAGADO = "", string TOTAL = "", string FICHA_CLINICA = "", string RECEPCION = "", string MENSAJE_ERROR = "", int? VALOR_FICHA = null, DateTime? VALOR_FECHA_MUESTRA = null, DateTime? VALOR_FECHA_RECEPCION = null, DateTime? VALOR_FECHA_ENTREGA_RESULTADOS = null, int? VALOR_FICHA_CLINICA = null, int? VALOR_TOTAL = null)
        {
            Init();
            try
            {
                 using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO _repositorioCARGA_PRESTACIONES_DETALLE_ESTADO = new RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO(context);
                    CARGA_PRESTACIONES_DETALLE_ESTADO _objCARGA_PRESTACIONES_DETALLE_ESTADO = _repositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById(CARGA_PRESTACIONES_DETALLE_ESTADOId);
                    if(Equals(_objCARGA_PRESTACIONES_DETALLE_ESTADO,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_DETALLE_ESTADO con Id =",CARGA_PRESTACIONES_DETALLE_ESTADOId.ToString()));
                    }

                    RepositorioCARGA_PRESTACIONES_ENCABEZADO _repositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    CARGA_PRESTACIONES_ENCABEZADO _objCARGA_PRESTACIONES_ENCABEZADO = _repositorioCARGA_PRESTACIONES_ENCABEZADO.GetById(CARGA_PRESTACIONES_ENCABEZADOId);
                    if(Equals(_objCARGA_PRESTACIONES_ENCABEZADO,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_ENCABEZADO con Id =",CARGA_PRESTACIONES_ENCABEZADOId.ToString()));
                    }

                    RepositorioCLIENTE _repositorioCLIENTE = new RepositorioCLIENTE(context);
                    CLIENTE _objCLIENTE = _repositorioCLIENTE.GetById(CLIENTEId);
                    if(Equals(_objCLIENTE,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CLIENTE con Id =",CLIENTEId.ToString()));
                    }

                    RepositorioESPECIE _repositorioESPECIE1 = new RepositorioESPECIE(context);
                    ESPECIE _objESPECIE1 = _repositorioESPECIE1.GetById(ESPECIE1Id);
                    if(Equals(_objESPECIE1,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado ESPECIE1 con Id =",ESPECIE1Id.ToString()));
                    }

                    RepositorioGARANTIA _repositorioGARANTIA1 = new RepositorioGARANTIA(context);
                    GARANTIA _objGARANTIA1 = _repositorioGARANTIA1.GetById(GARANTIA1Id);
                    if(Equals(_objGARANTIA1,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado GARANTIA1 con Id =",GARANTIA1Id.ToString()));
                    }

                    RepositorioPREVISION _repositorioPREVISION = new RepositorioPREVISION(context);
                    PREVISION _objPREVISION = _repositorioPREVISION.GetById(PREVISIONId);
                    if(Equals(_objPREVISION,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado PREVISION con Id =",PREVISIONId.ToString()));
                    }

                    RepositorioRAZA _repositorioRAZA1 = new RepositorioRAZA(context);
                    RAZA _objRAZA1 = _repositorioRAZA1.GetById(RAZA1Id);
                    if(Equals(_objRAZA1,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado RAZA1 con Id =",RAZA1Id.ToString()));
                    }

                    CARGA_PRESTACIONES_VETERINARIAS_DETALLE _CARGA_PRESTACIONES_VETERINARIAS_DETALLE = new CARGA_PRESTACIONES_VETERINARIAS_DETALLE();

                    //properties

                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FICHA = FICHA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.NOMBRE = NOMBRE;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ESPECIE = ESPECIE;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RAZA = RAZA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.EDAD = EDAD;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SEXO = SEXO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SOLICITA = SOLICITA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.TELEFONO = TELEFONO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.MEDICO = MEDICO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PROCEDENCIA = PROCEDENCIA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_RECEPCION = FECHA_RECEPCION;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_MUESTRA = FECHA_MUESTRA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_RESULTADOS = FECHA_RESULTADOS;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PENDIENTE = PENDIENTE;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.GARANTIA = GARANTIA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PAGADO = PAGADO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.TOTAL = TOTAL;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FICHA_CLINICA = FICHA_CLINICA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RECEPCION = RECEPCION;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.MENSAJE_ERROR = MENSAJE_ERROR;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_ACTUALIZACION = FECHA_ACTUALIZACION;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA = VALOR_FICHA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_MUESTRA = VALOR_FECHA_MUESTRA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_RECEPCION = VALOR_FECHA_RECEPCION;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_ENTREGA_RESULTADOS = VALOR_FECHA_ENTREGA_RESULTADOS;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA_CLINICA = VALOR_FICHA_CLINICA;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_TOTAL = VALOR_TOTAL;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ACTIVO = true;

                    //parents

                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CARGA_PRESTACIONES_DETALLE_ESTADO = _objCARGA_PRESTACIONES_DETALLE_ESTADO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CARGA_PRESTACIONES_ENCABEZADO = _objCARGA_PRESTACIONES_ENCABEZADO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CLIENTE = _objCLIENTE;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ESPECIE1 = _objESPECIE1;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.GARANTIA1 = _objGARANTIA1;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PREVISION = _objPREVISION;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RAZA1 = _objRAZA1;

                    context.AddObject("CARGA_PRESTACIONES_VETERINARIAS_DETALLE",_CARGA_PRESTACIONES_VETERINARIAS_DETALLE);
                    context.SaveChanges();

                    return _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ID;
                }
            }
            catch(Exception ex)
            {
                 ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                throw ex;
            }
        }
        public void Update(int Id, int CARGA_PRESTACIONES_DETALLE_ESTADOId, int CARGA_PRESTACIONES_ENCABEZADOId, int CLIENTEId, int ESPECIE1Id, int GARANTIA1Id, int PREVISIONId, int RAZA1Id, System.DateTime FECHA_ACTUALIZACION, string FICHA = "", string NOMBRE = "", string ESPECIE = "", string RAZA = "", string EDAD = "", string SEXO = "", string SOLICITA = "", string TELEFONO = "", string MEDICO = "", string PROCEDENCIA = "", string FECHA_RECEPCION = "", string FECHA_MUESTRA = "", string FECHA_RESULTADOS = "", string PENDIENTE = "", string GARANTIA = "", string PAGADO = "", string TOTAL = "", string FICHA_CLINICA = "", string RECEPCION = "", string MENSAJE_ERROR = "", int? VALOR_FICHA = null, DateTime? VALOR_FECHA_MUESTRA = null, DateTime? VALOR_FECHA_RECEPCION = null, DateTime? VALOR_FECHA_ENTREGA_RESULTADOS = null, int? VALOR_FICHA_CLINICA = null, int? VALOR_TOTAL = null)
        {
            Init();
            try
            {
                 using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE repositorio = new RepositorioCARGA_PRESTACIONES_VETERINARIAS_DETALLE(context);
                    CARGA_PRESTACIONES_VETERINARIAS_DETALLE _CARGA_PRESTACIONES_VETERINARIAS_DETALLE = repositorio.GetById(Id);
                    if(Equals(_CARGA_PRESTACIONES_VETERINARIAS_DETALLE,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_VETERINARIAS_DETALLE con Id =",Id.ToString()));
                    }

                    RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO _repositorioCARGA_PRESTACIONES_DETALLE_ESTADO = new RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO(context);
                    CARGA_PRESTACIONES_DETALLE_ESTADO _objCARGA_PRESTACIONES_DETALLE_ESTADO = _repositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById(CARGA_PRESTACIONES_DETALLE_ESTADOId);
                    if(Equals(_objCARGA_PRESTACIONES_DETALLE_ESTADO,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_DETALLE_ESTADO con Id =",CARGA_PRESTACIONES_DETALLE_ESTADOId.ToString()));
                    }

                    RepositorioCARGA_PRESTACIONES_ENCABEZADO _repositorioCARGA_PRESTACIONES_ENCABEZADO = new RepositorioCARGA_PRESTACIONES_ENCABEZADO(context);
                    CARGA_PRESTACIONES_ENCABEZADO _objCARGA_PRESTACIONES_ENCABEZADO = _repositorioCARGA_PRESTACIONES_ENCABEZADO.GetById(CARGA_PRESTACIONES_ENCABEZADOId);
                    if(Equals(_objCARGA_PRESTACIONES_ENCABEZADO,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CARGA_PRESTACIONES_ENCABEZADO con Id =",CARGA_PRESTACIONES_ENCABEZADOId.ToString()));
                    }

                    RepositorioCLIENTE _repositorioCLIENTE = new RepositorioCLIENTE(context);
                    CLIENTE _objCLIENTE = _repositorioCLIENTE.GetById(CLIENTEId);
                    if(Equals(_objCLIENTE,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado CLIENTE con Id =",CLIENTEId.ToString()));
                    }

                    RepositorioESPECIE _repositorioESPECIE1 = new RepositorioESPECIE(context);
                    ESPECIE _objESPECIE1 = _repositorioESPECIE1.GetById(ESPECIE1Id);
                    if(Equals(_objESPECIE1,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado ESPECIE1 con Id =",ESPECIE1Id.ToString()));
                    }

                    RepositorioGARANTIA _repositorioGARANTIA1 = new RepositorioGARANTIA(context);
                    GARANTIA _objGARANTIA1 = _repositorioGARANTIA1.GetById(GARANTIA1Id);
                    if(Equals(_objGARANTIA1,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado GARANTIA1 con Id =",GARANTIA1Id.ToString()));
                    }

                    RepositorioPREVISION _repositorioPREVISION = new RepositorioPREVISION(context);
                    PREVISION _objPREVISION = _repositorioPREVISION.GetById(PREVISIONId);
                    if(Equals(_objPREVISION,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado PREVISION con Id =",PREVISIONId.ToString()));
                    }

                    RepositorioRAZA _repositorioRAZA1 = new RepositorioRAZA(context);
                    RAZA _objRAZA1 = _repositorioRAZA1.GetById(RAZA1Id);
                    if(Equals(_objRAZA1,null))
                    {
                        throw new Exception(String.Concat("No se ha encontrado RAZA1 con Id =",RAZA1Id.ToString()));
                    }

                    //properties

                    if (!string.IsNullOrEmpty(FICHA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FICHA = FICHA;
                    }
                    if (!string.IsNullOrEmpty(NOMBRE))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.NOMBRE = NOMBRE;
                    }
                    if (!string.IsNullOrEmpty(ESPECIE))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ESPECIE = ESPECIE;
                    }
                    if (!string.IsNullOrEmpty(RAZA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RAZA = RAZA;
                    }
                    if (!string.IsNullOrEmpty(EDAD))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.EDAD = EDAD;
                    }
                    if (!string.IsNullOrEmpty(SEXO))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SEXO = SEXO;
                    }
                    if (!string.IsNullOrEmpty(SOLICITA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.SOLICITA = SOLICITA;
                    }
                    if (!string.IsNullOrEmpty(TELEFONO))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.TELEFONO = TELEFONO;
                    }
                    if (!string.IsNullOrEmpty(MEDICO))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.MEDICO = MEDICO;
                    }
                    if (!string.IsNullOrEmpty(PROCEDENCIA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PROCEDENCIA = PROCEDENCIA;
                    }
                    if (!string.IsNullOrEmpty(FECHA_RECEPCION))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_RECEPCION = FECHA_RECEPCION;
                    }
                    if (!string.IsNullOrEmpty(FECHA_MUESTRA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_MUESTRA = FECHA_MUESTRA;
                    }
                    if (!string.IsNullOrEmpty(FECHA_RESULTADOS))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_RESULTADOS = FECHA_RESULTADOS;
                    }
                    if (!string.IsNullOrEmpty(PENDIENTE))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PENDIENTE = PENDIENTE;
                    }
                    if (!string.IsNullOrEmpty(GARANTIA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.GARANTIA = GARANTIA;
                    }
                    if (!string.IsNullOrEmpty(PAGADO))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PAGADO = PAGADO;
                    }
                    if (!string.IsNullOrEmpty(TOTAL))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.TOTAL = TOTAL;
                    }
                    if (!string.IsNullOrEmpty(FICHA_CLINICA))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FICHA_CLINICA = FICHA_CLINICA;
                    }
                    if (!string.IsNullOrEmpty(RECEPCION))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RECEPCION = RECEPCION;
                    }
                    if (!string.IsNullOrEmpty(MENSAJE_ERROR))
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.MENSAJE_ERROR = MENSAJE_ERROR;
                    }
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.FECHA_ACTUALIZACION = FECHA_ACTUALIZACION;
                    if (VALOR_FICHA.HasValue)
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA = VALOR_FICHA.Value;
                    }
                    if (VALOR_FECHA_MUESTRA.HasValue)
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_MUESTRA = VALOR_FECHA_MUESTRA.Value;
                    }
                    if (VALOR_FECHA_RECEPCION.HasValue)
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_RECEPCION = VALOR_FECHA_RECEPCION.Value;
                    }
                    if (VALOR_FECHA_ENTREGA_RESULTADOS.HasValue)
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FECHA_ENTREGA_RESULTADOS = VALOR_FECHA_ENTREGA_RESULTADOS.Value;
                    }
                    if (VALOR_FICHA_CLINICA.HasValue)
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_FICHA_CLINICA = VALOR_FICHA_CLINICA.Value;
                    }
                    if (VALOR_TOTAL.HasValue)
                    {
                        _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.VALOR_TOTAL = VALOR_TOTAL.Value;
                    }

                    //parents

                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CARGA_PRESTACIONES_DETALLE_ESTADO = _objCARGA_PRESTACIONES_DETALLE_ESTADO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CARGA_PRESTACIONES_ENCABEZADO = _objCARGA_PRESTACIONES_ENCABEZADO;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.CLIENTE = _objCLIENTE;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.ESPECIE1 = _objESPECIE1;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.GARANTIA1 = _objGARANTIA1;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.PREVISION = _objPREVISION;
                    _CARGA_PRESTACIONES_VETERINARIAS_DETALLE.RAZA1 = _objRAZA1;

                    context.SaveChanges();
                }
            }
            catch(Exception ex)
            {
                 ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                 throw ex;
            }
        }