public ActionResult Create(CreateExpedienteTecnicoOPModel pObjModel, HttpPostedFileBase documentoUpload) { if (pObjModel.TipoBotonClick == "ADJUNTAR") { if (ModelState.IsValid) { if (documentoUpload == null) { ModelState.AddModelError("Err_documentoUpload", "Seleccione un archivo."); } else { DocumentoExpTecOPModel objDocumentoExpTecOP = new DocumentoExpTecOPModel(); List<DocumentoExpedienteTecnicoOP> lstDocumentos = (List<DocumentoExpedienteTecnicoOP>)Session[STR_DOCUMENTOS_EXPEDIENTE_OP]; if (lstDocumentos == null || lstDocumentos.Count == 0) { ModelState.AddModelError("", "Debe adjuntar, al menos, un documento."); } else { byte[] fileBytes = null; String strNomArchivo = ""; if (lstDocumentos == null) { lstDocumentos = new List<DocumentoExpedienteTecnicoOP>(); } DocumentoExpedienteTecnicoOP objDocumento = new DocumentoExpedienteTecnicoOP(); if (documentoUpload != null) { if ((documentoUpload != null) && (documentoUpload.ContentLength > 0) && !string.IsNullOrEmpty(documentoUpload.FileName)) { strNomArchivo = documentoUpload.FileName; string fileContentType = documentoUpload.ContentType; fileBytes = new byte[documentoUpload.ContentLength]; documentoUpload.InputStream.Read(fileBytes, 0, Convert.ToInt32(documentoUpload.ContentLength)); } } ExpedienteTecnicoOP_DAL objExpedienteTecnicoOP_DAL = new ExpedienteTecnicoOP_DAL(); var lstTipos = objExpedienteTecnicoOP_DAL.ObtieneTiposDocumento(null); objDocumento.Descripcion = pObjModel.DescripcionDocAdj; objDocumento.FechaEmision = Convert.ToDateTime(pObjModel.FechaEmisionDocAdj); objDocumento.NroDocumento = pObjModel.NroDocumentoAdj; objDocumento.TipoDocumento = pObjModel.TipoDocmentoDocAdj; objDocumento.NomTipoDocumento = lstTipos.Where(doc => doc.Id == pObjModel.TipoDocmentoDocAdj).First().Nombre; objDocumento.Archivo = fileBytes; objDocumento.NomArchivo = strNomArchivo; objDocumento.RutaArchivo = Request.Url.GetLeftPart(UriPartial.Authority) + "/files/obras_publicas/docs_tecnicos/" + strNomArchivo; lstDocumentos.Add(objDocumento); Session[STR_DOCUMENTOS_EXPEDIENTE_OP] = lstDocumentos; } } } } else if (pObjModel.TipoBotonClick == "REMOVER") { List<DocumentoExpedienteTecnicoOP> lstDocumentos = (List<DocumentoExpedienteTecnicoOP>)Session[STR_DOCUMENTOS_EXPEDIENTE_OP]; if (lstDocumentos != null) { lstDocumentos.RemoveAt(Convert.ToInt32(pObjModel.IdDocumentoEliminar)); } Session[STR_DOCUMENTOS_EXPEDIENTE_OP] = lstDocumentos; } else { if (ModelState.IsValid) { try { List<DocumentoExpedienteTecnicoOP> lstDocumentos = (List<DocumentoExpedienteTecnicoOP>)Session[STR_DOCUMENTOS_EXPEDIENTE_OP]; String strRutaFiles = Server.MapPath(@"\files"); String strRutaObrasPublicas = Server.MapPath(@"\files") + @"\obras_publicas"; String strRutaDocsTecnicos = Server.MapPath(@"\files") + @"\obras_publicas\docs_tecnicos"; if (!System.IO.Directory.Exists(strRutaFiles)) { System.IO.Directory.CreateDirectory(strRutaFiles); } if (!System.IO.Directory.Exists(strRutaObrasPublicas)) { System.IO.Directory.CreateDirectory(strRutaObrasPublicas); } if (!System.IO.Directory.Exists(strRutaDocsTecnicos)) { System.IO.Directory.CreateDirectory(strRutaDocsTecnicos); } foreach (var objDoc in lstDocumentos) { System.IO.File.WriteAllBytes(strRutaDocsTecnicos + @"\" + objDoc.NomArchivo, objDoc.Archivo); } ExpedienteTecnicoOP_DAL objExpedienteTecnicoOP_DAL = new ExpedienteTecnicoOP_DAL(); int intResultado = objExpedienteTecnicoOP_DAL.Inserta(pObjModel.IdProyecto, pObjModel.Descripcion, pObjModel.Especificaciones, pObjModel.ValorReferencial, pObjModel.TipoEjecutor, pObjModel.EjecutorNom, pObjModel.EjecutorApe, pObjModel.EjecutorRazonSocial, pObjModel.ContactoNom, pObjModel.ContactoApe, pObjModel.ContactoEmail, pObjModel.ContactoTelefono, pObjModel.ContactoDireccion, pObjModel.SupervisorNom, pObjModel.SupervisorApe, pObjModel.SupervisorTelefono, pObjModel.SupervisorEmail, lstDocumentos); if (intResultado == 1) { //Session[STR_DOCUMENTOS_EXPEDIENTE_OP] = null; ViewBag.MsgSuccess = "Se realizó la operación satisfactoriamente"; //return RedirectToAction("Create",); } else if (intResultado == -998) { ModelState.AddModelError("", "No puede registrar el expediente porque el proyecto ya tiene asociado uno."); } else if (intResultado == -997) { ModelState.AddModelError("", "No puede registrar el expediente debido a que el proyecto está en estado ADJUDICADO."); } else { ModelState.AddModelError("", "No se pudo insertar el expediente"); } } catch (Exception ex) { ModelState.AddModelError("", ex.ToString()); } } } //return Json("", JsonRequestBehavior.AllowGet); return View(pObjModel); }
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; }