public JsonResult NotificarEnvioTramite(string HomoclaveEnviada, string ProyectoEnviado, string RFCRL) { try { EstatusTramite EstatusTramiteEnviado = new EstatusTramite(); EstatusTramiteEnviado.estatus = "ENVIADO"; EstatusTramiteEnviado.fechaRegistro = DateTime.Now.ToString(); EstatusTramiteEnviado.nota = "Enviado a dependencia desde ENREL"; EstatusTramiteEnviado.resolucion = "PENDIENTE"; int IdProyecto = Convert.ToInt32(ProyectoEnviado); LogicaTramite.L_ActualizarEstatusTramiteDesdeENREL(IdProyecto, HomoclaveEnviada); WSBPM_Nivel3.ProcessNivel3PortTypeClient EnviarEstatus = new WSBPM_Nivel3.ProcessNivel3PortTypeClient(); EnviarEstatus.receiveTask(ProyectoEnviado, HomoclaveEnviada, "enviado", 0); MetodoGeneral.RegistroDeError("IDPROYECTO = '" + IdProyecto.ToString() + "', HOMOCLAVE ='" + HomoclaveEnviada + "', ESTATUS = 'enviado'", "Invocación Nivel 3 - "); MetodoGeneral.RegistroDeError(EnviarEstatus.Endpoint.Address.ToString(), "Invocación Nivel 3 - "); string FechaHora = DateTime.Now.ToString("dd / MMM / yyy hh:mm:ss"); //Enviar correo a dependencia y RL: int IdProyectoRecibido = Convert.ToInt32(IdProyecto); NotificacionInicioTramite DatosNotificacion = new NotificacionInicioTramite(); DatosNotificacion = LogicaProyecto.L_SeleccionarDatosNotificacionInicioTramite(IdProyecto, HomoclaveEnviada, RFCRL); //Primer Correo (Dependencia): MailMessage email = new MailMessage("*****@*****.**", DatosNotificacion.CorreoResponsable); email.To.Add(new MailAddress(ConfigurationManager.AppSettings["CorreoAdministrador"].ToString())); email.Subject = "Notificación de inicio de trámite desde ENREL"; //Primer Correo - Obtener la plantilla en HTML: string ContenidoCorreo = ""; string path = ConfigurationManager.AppSettings["Html_NotificacionInicioTramiteDependencia"].ToString(); ContenidoCorreo = System.IO.File.ReadAllText(path); //Primer Correo - Datos del correo ContenidoCorreo = ContenidoCorreo.Replace("#IdGlobalMacro#", DatosNotificacion.IdGlobal); ContenidoCorreo = ContenidoCorreo.Replace("#FechaHora#", FechaHora); ContenidoCorreo = ContenidoCorreo.Replace("#Tecnologia#", DatosNotificacion.Tecnologia); ContenidoCorreo = ContenidoCorreo.Replace("#Homoclave#", DatosNotificacion.HomoclaveGeneral); ContenidoCorreo = ContenidoCorreo.Replace("#Dependencia#", DatosNotificacion.Dependencia); ContenidoCorreo = ContenidoCorreo.Replace("#RFCRL#", RFCRL); AlternateView htmlView = AlternateView.CreateAlternateViewFromString(ContenidoCorreo, null, "text/html"); //Primer Correo - Obtener imágenes: LinkedResource Logotipo_SENER = new LinkedResource(ConfigurationManager.AppSettings["Logotipo_SENER"].ToString()); Logotipo_SENER.ContentId = "Logotipo_SENER"; htmlView.LinkedResources.Add(Logotipo_SENER); LinkedResource Logotipo_MEXICO = new LinkedResource(ConfigurationManager.AppSettings["Logotipo_MEXICO"].ToString()); Logotipo_MEXICO.ContentId = "Logotipo_MEXICO"; htmlView.LinkedResources.Add(Logotipo_MEXICO); email.AlternateViews.Add(htmlView); email.IsBodyHtml = true; email.Priority = MailPriority.High; SmtpClient smtp = new SmtpClient(); smtp.Host = "172.16.70.110"; smtp.Port = 25; smtp.EnableSsl = false; smtp.UseDefaultCredentials = false; smtp.Send(email); email.Dispose(); //Segundo Correo (RL): email = new MailMessage("*****@*****.**", DatosNotificacion.CorreoRL); email.To.Add(new MailAddress(ConfigurationManager.AppSettings["CorreoAdministrador"].ToString())); email.Subject = "Notificación de inicio de trámite desde ENREL"; //Segundo Correo - Obtener la plantilla en HTML: ContenidoCorreo = ""; path = ConfigurationManager.AppSettings["Html_NotificacionInicioTramiteRL"].ToString(); ContenidoCorreo = System.IO.File.ReadAllText(path); //Segundo Correo - Datos del correo ContenidoCorreo = ContenidoCorreo.Replace("#IdGlobalMacro#", DatosNotificacion.IdGlobal); ContenidoCorreo = ContenidoCorreo.Replace("#FechaHora#", FechaHora); ContenidoCorreo = ContenidoCorreo.Replace("#Tecnologia#", DatosNotificacion.Tecnologia); ContenidoCorreo = ContenidoCorreo.Replace("#Homoclave#", DatosNotificacion.HomoclaveGeneral); ContenidoCorreo = ContenidoCorreo.Replace("#Dependencia#", DatosNotificacion.Dependencia); ContenidoCorreo = ContenidoCorreo.Replace("#NombreRL#", DatosNotificacion.NombreRL); htmlView = AlternateView.CreateAlternateViewFromString(ContenidoCorreo, null, "text/html"); //Segundo Correo - Obtener imágenes: Logotipo_SENER = new LinkedResource(ConfigurationManager.AppSettings["Logotipo_SENER"].ToString()); Logotipo_SENER.ContentId = "Logotipo_SENER"; htmlView.LinkedResources.Add(Logotipo_SENER); Logotipo_MEXICO = new LinkedResource(ConfigurationManager.AppSettings["Logotipo_MEXICO"].ToString()); Logotipo_MEXICO.ContentId = "Logotipo_MEXICO"; htmlView.LinkedResources.Add(Logotipo_MEXICO); email.AlternateViews.Add(htmlView); email.IsBodyHtml = true; email.Priority = MailPriority.High; smtp = new SmtpClient(); smtp.Host = "172.16.70.110"; smtp.Port = 25; smtp.EnableSsl = false; smtp.UseDefaultCredentials = false; smtp.Send(email); email.Dispose(); return(new JsonResult { Data = "ok" }); } catch (Exception ex) { MetodoGeneral.RegistroDeError(ex.Message, "Proyectos: Enviar Trámite a BPM"); return(new JsonResult { Data = "error" }); } }
public ActionResult ProyectoTramites() { string IdEstatusProyecto = "NO CAPTURADO"; string resultado = ""; bool ErrorBPM = false; try { CatUsuarios Usuario = (CatUsuarios)Session["Usuario"]; if (Usuario == null || Usuario.U_IdTipoUsuario != 2) { TempData["notice"] = "La sesión ha expirado."; return(RedirectToAction("Logout", "Home")); } int Idproyecto = Convert.ToInt32(Request.Form["IdProyecto"]); CatProyectos Proyecto = LogicaProyecto.L_DetallesProyectos(Idproyecto); string IdProyectoBPM = Idproyecto.ToString(); string Tecnologia = Proyecto.P_Tecnologia.ToLower(); //Crea la instancia de los WS de BPM que vaya a utilizar WSBPM_Nivel0.ProcessNivel0PortTypeClient CrearProyectos = new WSBPM_Nivel0.ProcessNivel0PortTypeClient(); WSBPM_Nivel3.ProcessNivel3PortTypeClient EnviarEstatus = new WSBPM_Nivel3.ProcessNivel3PortTypeClient(); IdEstatusProyecto = LogicaProyecto.L_SeleccionarProyectoSeguimiento(Idproyecto); if (IdEstatusProyecto == "CAPTURADO") { //COMUNICACIÓN: Enviar proyecto a BPM CrearProyectos.InicioNivel0(Idproyecto.ToString(), Proyecto.P_Tecnologia.ToLower()); LogicaProyecto.L_ActualizarProyectoSeguimiento(Idproyecto, 2); MetodoGeneral.RegistroDeError("Datos {IdProyecto: " + Idproyecto.ToString() + ", Tecnología: " + Proyecto.P_Tecnologia.ToLower() + "}", "Invocación Nivel 0 -"); MetodoGeneral.RegistroDeError(CrearProyectos.Endpoint.Address.ToString(), "Invocación Nivel 0 -"); } IdEstatusProyecto = LogicaProyecto.L_SeleccionarProyectoSeguimiento(Idproyecto); if (IdEstatusProyecto == "ENVIADOBPM") { //COMUNICACIÓN: Enviar proyecto a gobmx resultado = MetodoGeneral.RegistrarReferenciaMacroTramite(Proyecto.P_IdGlobal, Usuario.U_RFCRepresentanteAsociado); LogicaProyecto.L_ActualizarProyectoSeguimiento(Idproyecto, 3); LogicaProyecto.L_ActualizarProyectoSeguimiento(Idproyecto, 4); } IdEstatusProyecto = LogicaProyecto.L_SeleccionarProyectoSeguimiento(Idproyecto); if (IdEstatusProyecto == "INICIADO" || IdEstatusProyecto == "SUSPENDIDO") { //Preguntar estatus GOBMX RespuestaConsultaMacroTramite Resultado = MetodoGeneral.ConsultarMacroTramite(Proyecto.P_IdGlobal); //Guardar estatus de GOBMX en BD ENREL if (Resultado.cadenaInteroperabilidad != null && Resultado.cadenaInteroperabilidad.Count > 0) { LogicaTramite.L_ActualizarEstatusTramite(Resultado, Proyecto.P_IdProyecto); } //Obtener estatus de los trámites ya en la base de datos que tienen que ser actualizados en BPM: List <CatTramites> ListaTramitesActualizarBPM = LogicaTramite.L_SeleccionarProyectoTramitesParaEnviarBPM(Idproyecto); //COMUNICACIÓN: Reporta estatus a BPM try { foreach (CatTramites Tramite in ListaTramitesActualizarBPM) { if (Tramite.T_ConfirmacionBPM == false) { EnviarEstatus.receiveTask(Idproyecto.ToString(), Tramite.T_HomoClave, Tramite.T_Estatus.ToLower(), Tramite.T_Prorroga); MetodoGeneral.RegistroDeError("IDPROYECTO = '" + Idproyecto.ToString() + "', HOMOCLAVE ='" + Tramite.T_HomoClave + "', ESTATUS = '" + Tramite.T_Estatus.ToLower() + "'", "Invocación Nivel 3 - "); MetodoGeneral.RegistroDeError(EnviarEstatus.Endpoint.Address.ToString(), "Invocación Nivel 3 - "); } Thread.Sleep(100); } } catch (Exception ex) { Session["TipoAlerta"] = "Error"; MetodoGeneral.RegistroDeError(ex.Message, "ProyectoTramites"); ErrorBPM = true; } } IdEstatusProyecto = LogicaProyecto.L_SeleccionarProyectoSeguimiento(Idproyecto); switch (IdEstatusProyecto) { case "CAPTURADO": Session["TipoAlerta"] = "Error"; TempData["notice"] = "El proyecto se registró en ENREL pero no ha sido sido enviado al gestor de trámites."; return(RedirectToAction("Index")); case "ENVIADOBPM": Session["TipoAlerta"] = "Error"; TempData["notice"] = "El proyecto no ha sido registrado en Gobmx."; return(RedirectToAction("Index")); case "ENVIADOGOBMX": Session["TipoAlerta"] = "Error"; TempData["notice"] = "El proyecto ha sido registrado en Gobmx pero ocurrió un error inesperado"; return(RedirectToAction("Index")); case "CONCLUIDO": bool Resultado = MetodoGeneral.NotificarEstatusMacroTramite(Proyecto.P_IdGlobal, "1", "1"); if (Resultado) { LogicaProyecto.L_ActualizarProyectoSeguimiento(Idproyecto, 7); } break; default: break; } //Obtener estatus de los trámites ya en la base de datos: Thread.Sleep(1000); List <CatTramites> ListaTramites = LogicaTramite.L_SeleccionarProyectoTramites(Idproyecto, Proyecto.P_IdGlobal, Usuario.U_RFCRepresentanteAsociado, Session["OpenId"].ToString()); CatEmpresas Empresa = LogicaEmpresa.L_DetallesEmpresa(Proyecto.P_IdEmpresa); int IdRepresentante = (Int32)Session["IdRepresentanteActual"]; CatRepresentantesLegales RepresentanteLegal = LogicaRepresentanteLegal.L_DetallesRepresentanteLegal(IdRepresentante); List <CatEstatusTramite> TablaEstatus = LogicaTramite.L_TablaEstatusTramite(); CatAvanceTramites AvanceTramites = LogicaTramite.L_AvanceTramites(ListaTramites); CargarDatosProyecto(AvanceTramites, Proyecto, Empresa, RepresentanteLegal); if (ErrorBPM) { Session["TipoAlerta"] = "Error"; TempData["notice"] = "La información podría no estar actualizada"; } return(View(ListaTramites)); } catch (Exception ex) { Session["TipoAlerta"] = "Error"; MetodoGeneral.RegistroDeError(ex.Message, "ProyectoTramites"); switch (IdEstatusProyecto) { case "CAPTURADO": TempData["notice"] = "El proyecto se registró en ENREL pero no ha sido sido enviado al gestor de trámites."; return(RedirectToAction("Index")); case "ENVIADOBPM": TempData["notice"] = "El proyecto no ha sido registrado en Gobmx."; return(RedirectToAction("Index")); case "ENVIADOGOBMX": TempData["notice"] = "El proyecto ha sido registrado en Gobmx pero ocurrió un error inesperado"; return(RedirectToAction("Index")); default: TempData["notice"] = "Error inesperado, por favor consulte a un administrador de la aplicación."; return(RedirectToAction("Index")); } } }