public int Actualiza(int pIntIdExpediente, int pIntIdProyecto, String pStrDescripcion, String pStrEspecificaciones,
            Decimal pDecValorReferencial, String pStrTipoEjecutor, String pStrNomEjecutor, String pStrApeEjecutor, String pStrRazonSocialEjecutor,
            String pStrNomContacto, String pStrApeContaco, String pStrEmailContacto,
            String pStrTelfContacto, String pStrDireccionContacto, String pStrNomSupervisor,
            String pStrApeSupervisor, String pStrTelfSupervisor, String pStrEmailSupervisor,
            int pIntIdEjecutor, int pIntIdContacto, int pIntIdSupervisor, List<DocumentoExpedienteTecnicoOP> pLstDocumentos)
        {
            int intResultado = -999;

            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();

                ObjectParameter objResult = new ObjectParameter("pIntIdExp_out", typeof(int));

                objContext.sp_gop_upd_exp(pIntIdExpediente, pIntIdProyecto, pStrDescripcion, pStrEspecificaciones, pDecValorReferencial,
                   pStrTipoEjecutor, pStrNomEjecutor, pStrApeEjecutor, pStrRazonSocialEjecutor, pStrNomContacto,
                   pStrApeContaco, pStrEmailContacto, pStrTelfContacto, pStrDireccionContacto, pStrNomSupervisor, pStrApeSupervisor,
                   pStrTelfSupervisor, pStrEmailSupervisor, pIntIdEjecutor, pIntIdContacto,pIntIdSupervisor, objResult);

                var lstDocumentos = objContext.OP_DOCUMENTO_EXPEDIENTE_TECNICO.Where(doc => doc.coExpediente == pIntIdExpediente).ToList();

                foreach (OP_DOCUMENTO_EXPEDIENTE_TECNICO objDoc in lstDocumentos)
                {
                    objContext.OP_DOCUMENTO_EXPEDIENTE_TECNICO.DeleteObject(objDoc);
                }

                if (pLstDocumentos != null)
                {
                    foreach (DocumentoExpedienteTecnicoOP objDocumento in pLstDocumentos)
                    {
                        OP_DOCUMENTO_EXPEDIENTE_TECNICO objDocumentoExpTec = new OP_DOCUMENTO_EXPEDIENTE_TECNICO();
                        objDocumentoExpTec.coExpediente = pIntIdExpediente;
                        objDocumentoExpTec.feEmision = objDocumento.FechaEmision;
                        objDocumentoExpTec.noTipoDocExpTec = objDocumento.TipoDocumento;
                        objDocumentoExpTec.nuNroDOcumento = objDocumento.NroDocumento;
                        objDocumentoExpTec.txDescripcion = objDocumento.Descripcion;
                        objDocumentoExpTec.txRutaArchivo = objDocumento.RutaArchivo;
                        objDocumentoExpTec.nomArchivo = objDocumento.NomArchivo;
                        objContext.AddToOP_DOCUMENTO_EXPEDIENTE_TECNICO(objDocumentoExpTec);
                    }
                }
                objContext.SaveChanges();

                int intIdExpediente = Convert.ToInt32(objResult.Value.ToString());

                if (intIdExpediente > 0)
                {
                    intResultado = 1;
                }
                else{
                    intResultado = intIdExpediente;
                }
            }
            catch (Exception ex)
            {

            }
            return intResultado;
        }
 /// <summary>
 /// Deprecated Method for adding a new object to the OP_DOCUMENTO_EXPEDIENTE_TECNICO EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToOP_DOCUMENTO_EXPEDIENTE_TECNICO(OP_DOCUMENTO_EXPEDIENTE_TECNICO oP_DOCUMENTO_EXPEDIENTE_TECNICO)
 {
     base.AddObject("OP_DOCUMENTO_EXPEDIENTE_TECNICO", oP_DOCUMENTO_EXPEDIENTE_TECNICO);
 }
 /// <summary>
 /// Create a new OP_DOCUMENTO_EXPEDIENTE_TECNICO object.
 /// </summary>
 /// <param name="coDocumento">Initial value of the coDocumento property.</param>
 /// <param name="coExpediente">Initial value of the coExpediente property.</param>
 /// <param name="nuNroDOcumento">Initial value of the nuNroDOcumento property.</param>
 /// <param name="txDescripcion">Initial value of the txDescripcion property.</param>
 public static OP_DOCUMENTO_EXPEDIENTE_TECNICO CreateOP_DOCUMENTO_EXPEDIENTE_TECNICO(global::System.Int32 coDocumento, global::System.Int32 coExpediente, global::System.String nuNroDOcumento, global::System.String txDescripcion)
 {
     OP_DOCUMENTO_EXPEDIENTE_TECNICO oP_DOCUMENTO_EXPEDIENTE_TECNICO = new OP_DOCUMENTO_EXPEDIENTE_TECNICO();
     oP_DOCUMENTO_EXPEDIENTE_TECNICO.coDocumento = coDocumento;
     oP_DOCUMENTO_EXPEDIENTE_TECNICO.coExpediente = coExpediente;
     oP_DOCUMENTO_EXPEDIENTE_TECNICO.nuNroDOcumento = nuNroDOcumento;
     oP_DOCUMENTO_EXPEDIENTE_TECNICO.txDescripcion = txDescripcion;
     return oP_DOCUMENTO_EXPEDIENTE_TECNICO;
 }
        public int Inserta(int pIntIdProyecto, String pStrDescripcion, String pStrEspecificaciones, 
            Decimal pDecValorReferencial, String pStrTipoEjecutor, String pStrNomEjecutor, String pStrApeEjecutor, String pStrRazonSocialEjecutor,
            String pStrNomContacto, String pStrApeContaco, String pStrEmailContacto,
            String pStrTelfContacto, String pStrDireccionContacto, String pStrNomSupervisor,
            String pStrApeSupervisor, String pStrTelfSupervisor, String pStrEmailSupervisor,
            List<DocumentoExpedienteTecnicoOP> pLstDocumentos)
        {
            int intResultado = -999;

            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();

                ObjectParameter objResult = new ObjectParameter("pIntIdExp_out", typeof(int));
                //int intRes =
                 objContext.sp_gop_ins_exp(pIntIdProyecto, pStrDescripcion, pStrEspecificaciones, pDecValorReferencial,
                    pStrTipoEjecutor, pStrNomEjecutor, pStrApeEjecutor, pStrRazonSocialEjecutor, pStrNomContacto,
                    pStrApeContaco, pStrEmailContacto, pStrTelfContacto, pStrDireccionContacto, pStrNomSupervisor, pStrApeSupervisor,
                    pStrTelfSupervisor, pStrEmailSupervisor, objResult);

                 int intIdExpediente = Convert.ToInt32(objResult.Value.ToString());

                 foreach (var objDoc in pLstDocumentos) {
                     OP_DOCUMENTO_EXPEDIENTE_TECNICO objOP_DOCUMENTO_EXPEDIENTE_TECNICO = new OP_DOCUMENTO_EXPEDIENTE_TECNICO();
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.coDocumento = objDoc.IdDocumento;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.coExpediente = intIdExpediente;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.feEmision = DateTime.Now;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.nomArchivo = objDoc.NomArchivo;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.noTipoDocExpTec = objDoc.TipoDocumento;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.nuNroDOcumento = objDoc.NroDocumento;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.txDescripcion = objDoc.Descripcion;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.txRutaArchivo = objDoc.RutaArchivo;

                     objContext.AddToOP_DOCUMENTO_EXPEDIENTE_TECNICO(objOP_DOCUMENTO_EXPEDIENTE_TECNICO);
                 }
                 objContext.SaveChanges();

                 if (intIdExpediente > 0)
                 {
                     intResultado = 1;
                 }
                 else {
                     intResultado = intIdExpediente;
                 }
            }
            catch (Exception ex) {

            }
            return intResultado;
        }