public CronogramaEjecucionOP ObtieneXId(int pIntIdExpediente, int pIntIdCronograma)
        {
            CronogramaEjecucionOP objCronogramaEjecucionObra = null;
            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();

                var lstCronograma = (from cro in objContext.OP_CRONOGRAMA_EJECUCION
                                      join exp in objContext.OP_EXPEDIENTE_TECNICO on cro.coExpediente equals exp.coExpediente
                                      join proy in objContext.OP_PROYECTO_INVERSION_PUBLICA on exp.coProyecto equals proy.coProyecto
                                      where exp.coExpediente == pIntIdExpediente && cro.coCronograma == pIntIdCronograma
                                      select new { exp, proy, cro }).ToList();

                if (lstCronograma != null)
                {
                    objCronogramaEjecucionObra = new CronogramaEjecucionOP();

                    ProyectoInversion objProyectoInversion = new ProyectoInversion();
                    objProyectoInversion.IdProyecto = lstCronograma[0].proy.coProyecto;
                    objProyectoInversion.Nombre = lstCronograma[0].proy.noNombre;
                    objCronogramaEjecucionObra.ProyectoInversion = objProyectoInversion;

                    ExpedienteTecnicoOP objExpedienteTecnicoOP = new ExpedienteTecnicoOP();
                    objExpedienteTecnicoOP.IdExpediente = lstCronograma[0].exp.coExpediente;

                    objCronogramaEjecucionObra.ExpedienteTecnico = objExpedienteTecnicoOP;

                    if (lstCronograma[0].cro.feEmision.HasValue)
                    {
                        objCronogramaEjecucionObra.FechaEmision = lstCronograma[0].cro.feEmision.Value;
                    }
                    objCronogramaEjecucionObra.IdCronograma = lstCronograma[0].cro.coCronograma;
                    if (lstCronograma[0].cro.nuPlazoEjecucion.HasValue)
                    {
                        objCronogramaEjecucionObra.PlazoEjecucion = lstCronograma[0].cro.nuPlazoEjecucion.Value;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return objCronogramaEjecucionObra;
        }
        public ExpedienteTecnicoOP ObtieneXId(int pIntIdExpediente)
        {
            ExpedienteTecnicoOP objExpedienteTecnicoOP = null;
            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();

                var objResult = objContext.sp_gop_get_exp_x_id(pIntIdExpediente).ToList();

                List<sp_gop_get_exp_x_id_Result> lstExpediente = objResult;
                //var lstExpedientes = (from exp in objContext.OP_EXPEDIENTE_TECNICO
                //                      from ejecEmp in objContextIntegrado.MA_PERSONAJURIDICA
                //                          .Where(ejecEmp2 => ejecEmp2.idPersonaJuridica == exp.coEjecutor).DefaultIfEmpty()
                //                      from ejecPer in objContextIntegrado.MA_PERSONANATURAL
                //                              .Where(ejecPer => ejecPer.idPersonaNatural == exp.coEjecutor).DefaultIfEmpty()
                //                      join super in objContextIntegrado.MA_PERSONANATURAL on exp.coSupervisor equals super.idPersonaNatural
                //                      join contac in objContextIntegrado.MA_PERSONANATURAL on exp.coContacto equals contac.idPersonaNatural
                //                      join super2 in objContextIntegrado.MA_PERSONA on exp.coSupervisor equals super2.idPersona
                //                      join contac2 in objContextIntegrado.MA_PERSONA on exp.coContacto equals contac2.idPersona
                //                      join proy in objContext.OP_PROYECTO_INVERSION_PUBLICA on exp.coProyecto equals proy.coProyecto
                //                      where exp.coExpediente == pIntIdExpediente
                //                      select new { exp, ejecEmp, ejecPer, super, contac, contac2, super2, proy }).ToList();

                if (lstExpediente.Count == 1)
                {
                    var lstDocumentos = objContext.OP_DOCUMENTO_EXPEDIENTE_TECNICO.Where(doc => doc.coExpediente == pIntIdExpediente).ToList();

                    objExpedienteTecnicoOP = new ExpedienteTecnicoOP();
                    objExpedienteTecnicoOP.IdExpediente = pIntIdExpediente;

                    if (lstExpediente[0].coContacto.HasValue) {
                        objExpedienteTecnicoOP.ContactoId = lstExpediente[0].coContacto.Value;
                    }
                    objExpedienteTecnicoOP.ContactoApe = lstExpediente[0].CONT_APE_PAT;
                    objExpedienteTecnicoOP.ContactoDireccion = lstExpediente[0].CONT_DIRECCION;
                    objExpedienteTecnicoOP.ContactoEmail = lstExpediente[0].CONT_CORREO;
                    objExpedienteTecnicoOP.ContactoNom = lstExpediente[0].CONT_NOM;
                    objExpedienteTecnicoOP.ContactoTelefono = lstExpediente[0].CONT_TELF;
                    objExpedienteTecnicoOP.Descripcion = lstExpediente[0].txDescripcion;
                    if (lstExpediente[0].coEjecutor.HasValue) {
                        objExpedienteTecnicoOP.EjecutorId = lstExpediente[0].coEjecutor.Value;
                    }
                    if (lstExpediente[0].EJEC_ID_PERN.HasValue)
                    {
                        objExpedienteTecnicoOP.EjecutorApe = lstExpediente[0].EJEC_APE_PAT;
                        objExpedienteTecnicoOP.EjecutorNom = lstExpediente[0].EJEC_NOM;
                        objExpedienteTecnicoOP.TipoEjecutor = "P";
                    }
                    if (lstExpediente[0].EJEC_ID_PERJ.HasValue)
                    {
                        objExpedienteTecnicoOP.EjecutorRazonSocial = lstExpediente[0].EJEC_RAZSOC;
                        objExpedienteTecnicoOP.TipoEjecutor = "E";
                    }
                    objExpedienteTecnicoOP.Especificaciones = lstExpediente[0].txEspecificacionesTecnicas;
                    if (lstExpediente[0].coSupervisor.HasValue) {
                        objExpedienteTecnicoOP.SupervisorId = lstExpediente[0].coSupervisor.Value;
                    }
                    objExpedienteTecnicoOP.SupervisorApe = lstExpediente[0].SUP_APE_PAT;
                    objExpedienteTecnicoOP.SupervisorEmail = lstExpediente[0].SUP_CORREO;
                    objExpedienteTecnicoOP.SupervisorNom = lstExpediente[0].SUP_NOM;
                    objExpedienteTecnicoOP.SupervisorTelefono = lstExpediente[0].SUP_TELF;

                    if (lstExpediente[0].coProyecto.HasValue)
                    {
                        ProyectoInversion objProyectoInversion = new ProyectoInversion();
                        objProyectoInversion.IdProyecto = lstExpediente[0].coProyecto.Value;
                        objProyectoInversion.Nombre = lstExpediente[0].NOM_PROYECTO;
                        objExpedienteTecnicoOP.Proyecto = objProyectoInversion;
                    }
                    if (lstExpediente[0].nuValorReferencial.HasValue)
                    {
                        objExpedienteTecnicoOP.ValorReferencial = lstExpediente[0].nuValorReferencial.Value;
                    }

                    List<DocumentoExpedienteTecnicoOP> lstDocumentosNew = new List<DocumentoExpedienteTecnicoOP>();
                    foreach (var objDocumento in lstDocumentos)
                    {
                        DocumentoExpedienteTecnicoOP objDocumentoExpedienteTecnicoOP = new DocumentoExpedienteTecnicoOP();
                        objDocumentoExpedienteTecnicoOP.Descripcion = objDocumento.txRutaArchivo;
                        if (objDocumento.feEmision.HasValue)
                        {
                            objDocumentoExpedienteTecnicoOP.FechaEmision = objDocumento.feEmision.Value;
                        }
                        objDocumentoExpedienteTecnicoOP.IdDocumento = objDocumento.coDocumento;
                        objDocumentoExpedienteTecnicoOP.IdExpediente = objDocumento.coExpediente;
                        objDocumentoExpedienteTecnicoOP.NomArchivo = objDocumento.nomArchivo;
                        objDocumentoExpedienteTecnicoOP.RutaArchivo = objDocumento.txRutaArchivo;
                        objDocumentoExpedienteTecnicoOP.NroDocumento = objDocumento.nuNroDOcumento;
                        objDocumentoExpedienteTecnicoOP.TipoDocumento = objDocumento.noTipoDocExpTec;
                        objDocumentoExpedienteTecnicoOP.Descripcion = objDocumento.txDescripcion;
                        objDocumentoExpedienteTecnicoOP.NomTipoDocumento = ObtieneTiposDocumento(null).Where(doc => doc.Id == objDocumento.noTipoDocExpTec).First().Nombre;

                        lstDocumentosNew.Add(objDocumentoExpedienteTecnicoOP);
                    }
                    objExpedienteTecnicoOP.Documentos = lstDocumentosNew;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return objExpedienteTecnicoOP;
        }