private void CargarDatosProyecto(CatAvanceTramites AvanceTramites, CatProyectos Proyecto, CatEmpresas Empresa, CatRepresentantesLegales Representante) { int PorcentajePositivo = 0; int PorcentajeNegativo = 100; ViewBag.DatosProyectos = JsonConvert.SerializeObject(Proyecto); ViewBag.DatosEmpresa = JsonConvert.SerializeObject(Empresa); ViewBag.DatosRepresentante = JsonConvert.SerializeObject(Representante); ViewBag.RFCRepresentante = Representante.RL_RFC; ViewBag.NombreProyecto = Proyecto.P_NombreProyecto; ViewBag.FechaInicio = Proyecto.P_FechaRegistro; ViewBag.DiasAgregados = Proyecto.P_DiasAgregados; ViewBag.ImagenMapaTecnologia = ConfigurationManager.AppSettings["Img_MapaTecnologia"].ToString() + Proyecto.P_Tecnologia + ".jpg"; ViewBag.NombreTecnologia = Proyecto.P_Tecnologia; ViewBag.IdProyecto = Proyecto.P_IdProyecto.ToString(); ViewBag.IdGlobal = Proyecto.P_IdGlobal; ViewBag.TramitesFinalizados = AvanceTramites.T_TramitesFinalizados; ViewBag.TramitesTotales = AvanceTramites.T_TramitesTotales; try { PorcentajePositivo = (AvanceTramites.T_TramitesFinalizados * 100) / AvanceTramites.T_TramitesTotales; PorcentajeNegativo = 100 - PorcentajePositivo; } catch (Exception ex) { } ViewBag.PorcentajePositivo = PorcentajePositivo; ViewBag.PorcentajeNegativo = PorcentajeNegativo; LogicaProyecto.L_ActualizarAvanceProyecto(Proyecto.P_IdProyecto, PorcentajePositivo); double Finalizados = ((Convert.ToDouble(ViewBag.TramitesFinalizados))); double totales = ((Convert.ToDouble(ViewBag.TramitesTotales))); double Porcentaje = (Finalizados / totales * 100); string Val = string.Format("{0:0}", Porcentaje); ViewBag.Porcentaje = Val; }
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")); } } }