638 lines
26 KiB
C#
638 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using SIG.Web.AppCode.Configuration;
|
|
using SIG.Web.AppCode.Infrastructure.WebForms;
|
|
using SIG.Web.AppCode.Models.Common;
|
|
using SIG.Web.AppCode.Models.Tramites;
|
|
using SIG.Web.AppCode.Utilities;
|
|
using SIG.Web.AppCode.Security;
|
|
using SIG.Web.AppCode.SigControls;
|
|
|
|
namespace SIG.Web.Pages.Desarrolladores
|
|
{
|
|
public partial class Tramites : ClsPaginaBase
|
|
{
|
|
#region Propiedades
|
|
|
|
private ModeloFiltroTableroTramites FiltrosTableroActuales
|
|
{
|
|
get
|
|
{
|
|
return ViewState["FiltrosTableroActuales"] as ModeloFiltroTableroTramites
|
|
?? new ModeloFiltroTableroTramites();
|
|
}
|
|
set
|
|
{
|
|
ViewState["FiltrosTableroActuales"] = value;
|
|
}
|
|
}
|
|
|
|
// Permite reconstruir las filas agrupadoras sin repetir la consulta en cada postback.
|
|
private List<ModeloFilaTableroTramites> FilasTableroActuales
|
|
{
|
|
get
|
|
{
|
|
return ViewState["FilasTableroActuales"] as List<ModeloFilaTableroTramites>
|
|
?? new List<ModeloFilaTableroTramites>();
|
|
}
|
|
set
|
|
{
|
|
ViewState["FilasTableroActuales"] = value;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
protected override void OnInit(EventArgs argumentos)
|
|
{
|
|
base.OnInit(argumentos);
|
|
UcEstatusSolicitud.ObtenerCondiciones = UcCondicionesSolicitud.Capturar;
|
|
|
|
bool esCliente = CurrentUser.EsDesarrollador;
|
|
PanelFiltroDepartamento.Visible = !esCliente;
|
|
PestanaSeguimientoCondiciones.Visible = !esCliente;
|
|
GvTramites.Columns[1].Visible = !esCliente;
|
|
CampoSoloBloqueados.Visible = !esCliente;
|
|
|
|
DdlAgrupacion.Items.Add(new ListItem(
|
|
"Por trámite",
|
|
((byte)AgrupacionTableroTramites.PorTramite).ToString(CultureInfo.InvariantCulture)));
|
|
|
|
if (!esCliente)
|
|
{
|
|
DdlAgrupacion.Items.Add(new ListItem(
|
|
"Por cliente",
|
|
((byte)AgrupacionTableroTramites.PorCliente).ToString(CultureInfo.InvariantCulture)));
|
|
}
|
|
}
|
|
|
|
protected void Page_Load(object origen, EventArgs argumentos)
|
|
{
|
|
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(UcFiltros);
|
|
|
|
if (!IsPostBack)
|
|
{
|
|
CargarOpcionesDepartamento();
|
|
CargarTablero();
|
|
return;
|
|
}
|
|
|
|
EnlazarTablero();
|
|
}
|
|
|
|
protected void DdlDepartamentoTramites_Cambio(object origen, EventArgs argumentos)
|
|
{
|
|
EnlazarTablero();
|
|
UpTablero.Update();
|
|
}
|
|
|
|
private void CargarOpcionesDepartamento()
|
|
{
|
|
if (CurrentUser.EsDesarrollador) return;
|
|
var resultado = AppServices.TramiteCatalogService.ListDepartamentos(
|
|
CurrentUser.CveUsuario, CurrentUser.NombreDominio);
|
|
if (!resultado.Success)
|
|
{
|
|
Alert(resultado.UserMessage, TipoMensaje.MsgAdvertencia);
|
|
return;
|
|
}
|
|
DdlDepartamentoTramites.Items.Clear();
|
|
DdlDepartamentoTramites.Items.Add(new ListItem("Todos los departamentos", "-1"));
|
|
foreach (var depto in resultado.Data ?? new List<DepartamentoTramiteModel>())
|
|
DdlDepartamentoTramites.Items.Add(new ListItem(depto.Departamento,
|
|
depto.CveDepartamento.ToString(CultureInfo.InvariantCulture)));
|
|
}
|
|
|
|
protected void UcFiltros_MostrarFiltros(object origen, EventArgs argumentos)
|
|
{
|
|
SincronizarModalFiltros();
|
|
UpFiltros.Update();
|
|
RegistraScript(
|
|
"SIGTableroTramites.mostrarModal('ModalFiltrosTramites');",
|
|
"MostrarFiltrosTramites");
|
|
}
|
|
|
|
protected void UcFiltros_Consultar(object origen, EventArgs argumentos)
|
|
{
|
|
CargarTablero();
|
|
UpTablero.Update();
|
|
}
|
|
|
|
protected void UcFiltros_FiltrosCambiados(object origen, EventArgs argumentos)
|
|
{
|
|
IList<FiltroActivo> filtrosVisibles = UcFiltros.GetFiltros();
|
|
ModeloFiltroTableroTramites filtros = FiltrosTableroActuales;
|
|
|
|
if (!filtrosVisibles.Any(filtro => filtro.Nombre == "Agrupacion"))
|
|
{
|
|
filtros.Agrupacion = AgrupacionTableroTramites.PorTramite;
|
|
}
|
|
|
|
if (!filtrosVisibles.Any(filtro => filtro.Nombre == "Fraccionamiento"))
|
|
{
|
|
filtros.CveFraccionamiento = null;
|
|
}
|
|
|
|
filtros.SoloActivos = filtrosVisibles.Any(filtro => filtro.Nombre == "SoloActivos");
|
|
filtros.SoloBloqueados = !CurrentUser.EsDesarrollador &&
|
|
filtrosVisibles.Any(filtro => filtro.Nombre == "SoloBloqueados");
|
|
if (!filtrosVisibles.Any(filtro => filtro.Nombre == "Estatus"))
|
|
{
|
|
filtros.EstatusSeleccionados.Clear();
|
|
filtros.MostrarAutorizados = false;
|
|
filtros.MostrarCancelados = false;
|
|
}
|
|
FiltrosTableroActuales = filtros;
|
|
|
|
CargarTablero();
|
|
UpTablero.Update();
|
|
}
|
|
|
|
protected void BtnAplicarFiltros_Click(object origen, EventArgs argumentos)
|
|
{
|
|
byte cveAgrupacion;
|
|
int cveFraccionamiento;
|
|
|
|
if (!byte.TryParse(DdlAgrupacion.SelectedValue, out cveAgrupacion) ||
|
|
!Enum.IsDefined(typeof(AgrupacionTableroTramites), cveAgrupacion))
|
|
{
|
|
Alert("Seleccione una agrupación válida.", TipoMensaje.MsgAdvertencia);
|
|
return;
|
|
}
|
|
|
|
FiltrosTableroActuales = new ModeloFiltroTableroTramites
|
|
{
|
|
Agrupacion = (AgrupacionTableroTramites)cveAgrupacion,
|
|
CveFraccionamiento = int.TryParse(DdlFraccionamiento.SelectedValue, out cveFraccionamiento)
|
|
&& cveFraccionamiento > 0 ? (int?)cveFraccionamiento : null,
|
|
EstatusSeleccionados = LstEstatus.Items.Cast<ListItem>()
|
|
.Where(estatus => estatus.Selected)
|
|
.Select(estatus => int.Parse(estatus.Value, CultureInfo.InvariantCulture)).ToList(),
|
|
MostrarAutorizados = ChkMostrarAutorizados.Checked,
|
|
MostrarCancelados = ChkMostrarCancelados.Checked,
|
|
SoloActivos = ChkSoloActivos.Checked,
|
|
SoloBloqueados = !CurrentUser.EsDesarrollador && ChkSoloBloqueados.Checked
|
|
};
|
|
|
|
bool consultaCorrecta = CargarTablero();
|
|
UpTablero.Update();
|
|
|
|
if (consultaCorrecta)
|
|
{
|
|
RegistraScript(
|
|
"SIGTableroTramites.ocultarModal('ModalFiltrosTramites');",
|
|
"OcultarFiltrosTramites");
|
|
}
|
|
}
|
|
|
|
protected void GvTramites_FilaEnlazada(object origen, GridViewRowEventArgs argumentos)
|
|
{
|
|
if (argumentos.Row.RowType != DataControlRowType.DataRow)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var solicitud = (ModeloFilaTableroTramites)argumentos.Row.DataItem;
|
|
for (int indiceCelda = 0; indiceCelda < argumentos.Row.Cells.Count; indiceCelda++)
|
|
{
|
|
string claseCelda = indiceCelda == 0
|
|
? "sig-tramites-columna-grupo"
|
|
: "sig-tramites-columna-normal";
|
|
argumentos.Row.Cells[indiceCelda].CssClass =
|
|
(argumentos.Row.Cells[indiceCelda].CssClass + " " + claseCelda).Trim();
|
|
}
|
|
|
|
argumentos.Row.Attributes["data-cve-agrupacion"] =
|
|
solicitud.CveAgrupacion.ToString(CultureInfo.InvariantCulture);
|
|
argumentos.Row.Attributes["data-nivel"] =
|
|
solicitud.Nivel.ToString(CultureInfo.InvariantCulture);
|
|
|
|
if (solicitud.Nivel == 2)
|
|
{
|
|
argumentos.Row.CssClass = "sig-tramites-agrupacion";
|
|
|
|
return;
|
|
}
|
|
|
|
argumentos.Row.CssClass = "sig-proceso-" +
|
|
solicitud.EstatusProceso.ToString(CultureInfo.InvariantCulture);
|
|
argumentos.Row.ToolTip = solicitud.NombreEstatusProceso;
|
|
if (!CurrentUser.EsDesarrollador)
|
|
ColorDepartamentoTramite.Aplicar(
|
|
argumentos.Row.FindControl("EtiquetaTipoTramite") as Label,
|
|
solicitud.ColorDepartamento);
|
|
|
|
var enlaceFraccionamiento =
|
|
(HyperLink)argumentos.Row.FindControl("EnlaceFraccionamiento");
|
|
var nombreFraccionamientoEtapa =
|
|
(Literal)enlaceFraccionamiento.FindControl("NombreFraccionamientoEtapa");
|
|
nombreFraccionamientoEtapa.Text = string.Join(" · ",
|
|
new[] { solicitud.Fraccionamiento, solicitud.Etapa }
|
|
.Where(nombre => !string.IsNullOrWhiteSpace(nombre)));
|
|
if (solicitud.CveFraccionamiento.GetValueOrDefault() > 0)
|
|
{
|
|
enlaceFraccionamiento.NavigateUrl = ResolveUrl(
|
|
"~/Pages/Fraccionamientos/FraccionamientoDetalle.aspx?id=" +
|
|
solicitud.CveFraccionamiento.Value.ToString(CultureInfo.InvariantCulture));
|
|
}
|
|
|
|
foreach (string nombreBoton in new[] { "BtnEditarEstatus", "BtnDocumentos", "BtnComentarios" })
|
|
{
|
|
var boton = argumentos.Row.FindControl(nombreBoton) as LinkButton;
|
|
if (boton != null)
|
|
{
|
|
boton.Attributes["data-sig-panel-abrir"] = "#" + PanelSeguimiento.ClientID;
|
|
// Ejecuta el postback de WebForms; el evento del panel cancela el href para no duplicarlo.
|
|
boton.OnClientClick = Page.ClientScript.GetPostBackEventReference(boton, string.Empty) + ";";
|
|
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(boton);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void GvTramites_Comando(object origen, GridViewCommandEventArgs argumentos)
|
|
{
|
|
if (argumentos.CommandName != "EditarEstatus" &&
|
|
argumentos.CommandName != "Documentos" &&
|
|
argumentos.CommandName != "Comentarios")
|
|
{
|
|
return;
|
|
}
|
|
|
|
var control = argumentos.CommandSource as Control;
|
|
var fila = control == null ? null : control.NamingContainer as GridViewRow;
|
|
if (fila == null || fila.RowIndex < 0 || fila.RowIndex >= GvTramites.DataKeys.Count)
|
|
{
|
|
Alert("Seleccione una solicitud válida.", TipoMensaje.MsgAdvertencia);
|
|
return;
|
|
}
|
|
|
|
DataKey claveFila = GvTramites.DataKeys[fila.RowIndex];
|
|
int cveSolicitud;
|
|
if (Convert.ToInt32(claveFila.Values["Nivel"]) != 1 ||
|
|
!int.TryParse(Convert.ToString(claveFila.Values["CveSolicitud"]), out cveSolicitud))
|
|
{
|
|
Alert("Seleccione una solicitud válida.", TipoMensaje.MsgAdvertencia);
|
|
return;
|
|
}
|
|
|
|
string pestana = argumentos.CommandName == "Comentarios" ? "comentarios" :
|
|
argumentos.CommandName == "Documentos" ? "documentos" : "estatus";
|
|
AbrirSeguimiento(cveSolicitud, null, pestana);
|
|
}
|
|
|
|
protected void SeguimientoTramite_Cambiado(object origen, EventArgs argumentos)
|
|
{
|
|
CargarTablero();
|
|
UpTablero.Update();
|
|
}
|
|
|
|
private bool CargarTablero()
|
|
{
|
|
DbResult<ModeloResultadoTableroTramites> resultado =
|
|
AppServices.TramiteSolicitudService.ConsultarTablero(
|
|
FiltrosTableroActuales,
|
|
CurrentUser.CveUsuario,
|
|
CurrentUser.NombreDominio);
|
|
|
|
if (!resultado.Success || resultado.Data == null)
|
|
{
|
|
FilasTableroActuales = new List<ModeloFilaTableroTramites>();
|
|
EnlazarTablero();
|
|
Alert(
|
|
resultado.Success ? "No se pudo obtener el tablero." : resultado.UserMessage,
|
|
TipoMensaje.MsgError);
|
|
return false;
|
|
}
|
|
|
|
LstEstatus.Items.Clear();
|
|
foreach (TramiteSolicitudEstatusOptionModel estatus in resultado.Data.Estatus)
|
|
{
|
|
var opcionEstatus = new ListItem(
|
|
estatus.EstatusSolicitud,
|
|
estatus.CveEstatusSolicitud.ToString(CultureInfo.InvariantCulture));
|
|
opcionEstatus.Attributes["data-codigo-estatus"] = estatus.Codigo;
|
|
LstEstatus.Items.Add(opcionEstatus);
|
|
}
|
|
|
|
FilasTableroActuales = resultado.Data.Filas;
|
|
if (!CurrentUser.EsDesarrollador)
|
|
{
|
|
var deptos = AppServices.TramiteCatalogService.ListarDepartamentosPorTipo(
|
|
CurrentUser.CveUsuario, CurrentUser.NombreDominio);
|
|
if (!deptos.Success)
|
|
{
|
|
FilasTableroActuales = new List<ModeloFilaTableroTramites>();
|
|
EnlazarTablero();
|
|
Alert(deptos.UserMessage, TipoMensaje.MsgAdvertencia);
|
|
return false;
|
|
}
|
|
var asignaciones = (deptos.Data ?? new List<TipoTramiteDepartamentoModel>())
|
|
.ToDictionary(item => item.CveTipoTramite);
|
|
foreach (var fila in FilasTableroActuales.Where(f => f.Nivel == 1 && f.CveTipoTramite.HasValue))
|
|
{
|
|
TipoTramiteDepartamentoModel depto;
|
|
if (asignaciones.TryGetValue(fila.CveTipoTramite.Value, out depto))
|
|
{
|
|
fila.CveDepartamento = depto.CveDepartamento;
|
|
fila.ColorDepartamento = depto.Color;
|
|
}
|
|
}
|
|
}
|
|
DdlFraccionamiento.DataSource = resultado.Data.Fraccionamientos;
|
|
DdlFraccionamiento.DataTextField = "Fraccionamiento";
|
|
DdlFraccionamiento.DataValueField = "CveFraccionamiento";
|
|
DdlFraccionamiento.DataBind();
|
|
DdlFraccionamiento.Items.Insert(0, new ListItem("Todos", ""));
|
|
|
|
SincronizarModalFiltros();
|
|
SincronizarFiltrosActivos();
|
|
EnlazarTablero();
|
|
return true;
|
|
}
|
|
|
|
private void EnlazarTablero()
|
|
{
|
|
IEnumerable<ModeloFilaTableroTramites> filas = FilasTableroActuales;
|
|
int departamento;
|
|
if (!CurrentUser.EsDesarrollador &&
|
|
int.TryParse(DdlDepartamentoTramites.SelectedValue, out departamento) &&
|
|
departamento > 0)
|
|
{
|
|
var resultados = filas.Where(f => f.Nivel == 1 && f.CveDepartamento == departamento).ToList();
|
|
var grupos = new HashSet<int>(resultados.Select(f => f.CveAgrupacion));
|
|
filas = filas.Where(f => f.Nivel == 1
|
|
? f.CveDepartamento == departamento
|
|
: grupos.Contains(f.CveAgrupacion));
|
|
}
|
|
GvTramites.DataSource = filas.ToList();
|
|
GvTramites.DataBind();
|
|
}
|
|
|
|
private void SincronizarModalFiltros()
|
|
{
|
|
ModeloFiltroTableroTramites filtros = FiltrosTableroActuales;
|
|
DdlAgrupacion.SelectedValue = ((byte)filtros.Agrupacion).ToString(CultureInfo.InvariantCulture);
|
|
string cveFraccionamiento = filtros.CveFraccionamiento.HasValue
|
|
? filtros.CveFraccionamiento.Value.ToString(CultureInfo.InvariantCulture) : "";
|
|
|
|
DdlFraccionamiento.ClearSelection();
|
|
ListItem opcion = DdlFraccionamiento.Items.FindByValue(cveFraccionamiento);
|
|
if (opcion != null)
|
|
{
|
|
opcion.Selected = true;
|
|
}
|
|
|
|
foreach (ListItem estatus in LstEstatus.Items)
|
|
{
|
|
estatus.Selected = filtros.EstatusSeleccionados.Contains(
|
|
int.Parse(estatus.Value, CultureInfo.InvariantCulture));
|
|
}
|
|
|
|
ChkMostrarAutorizados.Checked = filtros.MostrarAutorizados;
|
|
ChkMostrarCancelados.Checked = filtros.MostrarCancelados;
|
|
LstEstatus.Attributes["data-sig-estatus-anteriores"] =
|
|
string.Join(",", filtros.EstatusSeleccionados);
|
|
ChkSoloActivos.Checked = filtros.SoloActivos;
|
|
ChkSoloBloqueados.Checked = !CurrentUser.EsDesarrollador && filtros.SoloBloqueados;
|
|
}
|
|
|
|
private void SincronizarFiltrosActivos()
|
|
{
|
|
ModeloFiltroTableroTramites filtros = FiltrosTableroActuales;
|
|
var filtrosActivos = new List<FiltroActivo>
|
|
{
|
|
new FiltroActivo
|
|
{
|
|
Nombre = "Agrupacion",
|
|
Titulo = "Agrupación",
|
|
Descripcion = DdlAgrupacion.SelectedItem.Text,
|
|
Orden = 1,
|
|
Visible = true
|
|
}
|
|
};
|
|
|
|
if (filtros.CveFraccionamiento.HasValue)
|
|
{
|
|
filtrosActivos.Add(new FiltroActivo
|
|
{
|
|
Nombre = "Fraccionamiento",
|
|
Titulo = "Fraccionamiento",
|
|
Descripcion = DdlFraccionamiento.SelectedItem.Text,
|
|
Orden = 2,
|
|
Visible = true
|
|
});
|
|
}
|
|
|
|
if (filtros.SoloActivos)
|
|
{
|
|
filtrosActivos.Add(new FiltroActivo
|
|
{
|
|
Nombre = "SoloActivos",
|
|
Titulo = "Solo activos",
|
|
Descripcion = "Tipos de trámite activos",
|
|
Orden = 3,
|
|
Visible = true
|
|
});
|
|
}
|
|
|
|
if (filtros.SoloBloqueados && !CurrentUser.EsDesarrollador)
|
|
{
|
|
filtrosActivos.Add(new FiltroActivo
|
|
{
|
|
Nombre = "SoloBloqueados",
|
|
Titulo = "Solo bloqueados",
|
|
Descripcion = "Pendiente de habilitar",
|
|
Orden = 4,
|
|
Visible = true
|
|
});
|
|
}
|
|
|
|
if (filtros.EstatusSeleccionados.Count > 0 ||
|
|
filtros.MostrarAutorizados || filtros.MostrarCancelados)
|
|
{
|
|
filtrosActivos.Add(new FiltroActivo
|
|
{
|
|
Nombre = "Estatus",
|
|
Titulo = "Estatus",
|
|
Descripcion = string.Join(", ", LstEstatus.Items.Cast<ListItem>()
|
|
.Where(estatus => estatus.Selected)
|
|
.Select(estatus => estatus.Text)),
|
|
Orden = 5,
|
|
Visible = true
|
|
});
|
|
}
|
|
|
|
UcFiltros.SetFiltros(filtrosActivos);
|
|
}
|
|
private int CveSolicitudSeguimiento
|
|
{
|
|
get { return (int?)ViewState["CveSolicitudSeguimiento"] ?? 0; }
|
|
set { ViewState["CveSolicitudSeguimiento"] = value; }
|
|
}
|
|
|
|
private int CveFraccionamientoSeguimiento
|
|
{
|
|
get { return (int?)ViewState["CveFraccionamientoSeguimiento"] ?? 0; }
|
|
set { ViewState["CveFraccionamientoSeguimiento"] = value; }
|
|
}
|
|
|
|
private void AbrirSeguimiento(int cveSolicitud, int? cveFraccionamiento = null, string seccion = null)
|
|
{
|
|
DbResult<ModeloContextoCambioEstatus> resultado =
|
|
AppServices.TramiteSolicitudService.ObtenerContextoCambioEstatus(
|
|
cveSolicitud, CurrentUser.CveUsuario, CurrentUser.NombreDominio);
|
|
if (!resultado.Success || resultado.Data == null)
|
|
{
|
|
Alert(resultado.UserMessage, TipoMensaje.MsgAdvertencia);
|
|
return;
|
|
}
|
|
ModeloContextoCambioEstatus contexto = resultado.Data;
|
|
if (cveFraccionamiento.HasValue &&
|
|
contexto.Solicitud.CveFraccionamiento != cveFraccionamiento.Value)
|
|
{
|
|
Alert("La solicitud no pertenece al fraccionamiento.", TipoMensaje.MsgAdvertencia);
|
|
return;
|
|
}
|
|
CveSolicitudSeguimiento = cveSolicitud;
|
|
CveFraccionamientoSeguimiento = contexto.Solicitud.CveFraccionamiento;
|
|
TituloSeguimiento.Text = contexto.Solicitud.Folio + " · " + contexto.Solicitud.TipoTramite;
|
|
NombreFraccionamientoEtapaSeguimiento.Text = string.Join(" · ",
|
|
new[] { contexto.Solicitud.Fraccionamiento, contexto.Solicitud.Etapa }
|
|
.Where(nombre => !string.IsNullOrWhiteSpace(nombre)));
|
|
EnlaceFraccionamientoSeguimiento.NavigateUrl = ResolveUrl(
|
|
"~/Pages/Fraccionamientos/FraccionamientoDetalle.aspx?id=" +
|
|
CveFraccionamientoSeguimiento.ToString(CultureInfo.InvariantCulture));
|
|
PestanaSeguimientoCondiciones.Visible = !CurrentUser.EsDesarrollador;
|
|
if (!CurrentUser.EsDesarrollador)
|
|
{
|
|
UcCondicionesSolicitud.Cargar(contexto);
|
|
}
|
|
UcEstatusSolicitud.Cargar(contexto);
|
|
UcDocumentosSolicitud.Cargar(cveSolicitud, CveFraccionamientoSeguimiento, contexto.Documentos);
|
|
UcComentariosSolicitud.Cargar(cveSolicitud);
|
|
UcSupervisionesSolicitud.CveFraccionamiento = CveFraccionamientoSeguimiento;
|
|
UcSupervisionesSolicitud.CveFraccionamientoEtapa = contexto.Solicitud.CveFraccionamientoEtapa;
|
|
UcSupervisionesSolicitud.CveSolicitud = cveSolicitud;
|
|
UcSupervisionesSolicitud.Cargar();
|
|
CargarAccionesPendientesSeguimiento();
|
|
UpEncabezadoSeguimiento.Update();
|
|
MostrarSeguimiento(seccion);
|
|
}
|
|
|
|
private void MostrarSeguimiento(string seccion = null)
|
|
{
|
|
if (CurrentUser.EsDesarrollador && seccion == "condiciones")
|
|
{
|
|
seccion = null;
|
|
}
|
|
int indice = seccion == "condiciones" ? 1 : seccion == "documentos" ? 2 :
|
|
seccion == "comentarios" ? 3 : seccion == "supervisiones" ? 4 : 0;
|
|
PestanasSeguimiento.ActiveTabIndex = indice;
|
|
// El clic abre el panel. Restaurarlo sólo si una carga de archivo recargó la página.
|
|
if (!ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
|
|
{
|
|
RegistraScript("SIGPanelLateral.abrir('" + PanelSeguimiento.ClientID + "');");
|
|
return;
|
|
}
|
|
RegistraScript(
|
|
"$find('" + PestanasSeguimiento.ClientID + "').set_activeTabIndex(" +
|
|
indice.ToString(CultureInfo.InvariantCulture) + ");");
|
|
}
|
|
|
|
private void ActualizarSeguimiento()
|
|
{
|
|
CargarAccionesPendientesSeguimiento();
|
|
UpEncabezadoSeguimiento.Update();
|
|
SeguimientoTramite_Cambiado(this, EventArgs.Empty);
|
|
}
|
|
|
|
protected void EstatusSeguimiento_SeleccionCambiada(object origen, EventArgs argumentos)
|
|
{
|
|
UcCondicionesSolicitud.AjustarEstatus(UcEstatusSolicitud.EstatusSeleccionado);
|
|
}
|
|
|
|
protected void EstatusSeguimiento_RequisitosPendientes(object origen, EventArgs argumentos)
|
|
{
|
|
RefrescarRequisitosSeguimiento();
|
|
MostrarSeguimiento(UcEstatusSolicitud.SeccionPendiente);
|
|
}
|
|
|
|
protected void EstatusSeguimiento_Cambiado(object origen, EventArgs argumentos)
|
|
{
|
|
bool ofrecerProgramacion = UcEstatusSolicitud.OfrecerProgramacion;
|
|
AbrirSeguimiento(CveSolicitudSeguimiento, CveFraccionamientoSeguimiento);
|
|
SeguimientoTramite_Cambiado(this, EventArgs.Empty);
|
|
if (ofrecerProgramacion)
|
|
{
|
|
UcSupervisionesSolicitud.Programar();
|
|
}
|
|
}
|
|
|
|
protected void CondicionesSeguimiento_Cambiado(object origen, EventArgs argumentos)
|
|
{
|
|
ActualizarSeguimiento();
|
|
MostrarSeguimiento("condiciones");
|
|
}
|
|
|
|
protected void DocumentosSeguimiento_Cambiados(object origen, EventArgs argumentos)
|
|
{
|
|
RefrescarRequisitosSeguimiento();
|
|
ActualizarSeguimiento();
|
|
MostrarSeguimiento("documentos");
|
|
}
|
|
|
|
protected void DocumentosSeguimiento_MostrarSolicitado(object origen, EventArgs argumentos)
|
|
{
|
|
MostrarSeguimiento("documentos");
|
|
}
|
|
|
|
protected void ComentariosSeguimiento_Cambiado(object origen, EventArgs argumentos)
|
|
{
|
|
ActualizarSeguimiento();
|
|
MostrarSeguimiento("comentarios");
|
|
}
|
|
|
|
protected void ComentariosSeguimiento_MostrarSolicitado(object origen, EventArgs argumentos)
|
|
{
|
|
MostrarSeguimiento("comentarios");
|
|
}
|
|
|
|
private void CargarAccionesPendientesSeguimiento()
|
|
{
|
|
DbResult<List<ModeloAccionPendienteSolicitud>> resultado =
|
|
AppServices.TramiteSolicitudService.ListarAccionesPendientes(
|
|
CveSolicitudSeguimiento, CurrentUser.CveUsuario, CurrentUser.NombreDominio);
|
|
List<ModeloAccionPendienteSolicitud> acciones = resultado.Success && resultado.Data != null
|
|
? resultado.Data : new List<ModeloAccionPendienteSolicitud>();
|
|
SeccionAccionesPendientesSeguimiento.Visible = acciones.Count > 0;
|
|
AccionesPendientesSeguimiento.DataSource = acciones;
|
|
AccionesPendientesSeguimiento.DataBind();
|
|
if (!resultado.Success)
|
|
{
|
|
Alert(resultado.UserMessage, TipoMensaje.MsgAdvertencia);
|
|
}
|
|
}
|
|
|
|
private bool RefrescarRequisitosSeguimiento()
|
|
{
|
|
DbResult<ModeloContextoCambioEstatus> resultado =
|
|
AppServices.TramiteSolicitudService.ObtenerContextoCambioEstatus(
|
|
CveSolicitudSeguimiento, CurrentUser.CveUsuario, CurrentUser.NombreDominio);
|
|
if (!resultado.Success || resultado.Data == null)
|
|
{
|
|
Alert(resultado.UserMessage, TipoMensaje.MsgAdvertencia);
|
|
return false;
|
|
}
|
|
UcDocumentosSolicitud.Cargar(CveSolicitudSeguimiento, CveFraccionamientoSeguimiento, resultado.Data.Documentos);
|
|
UpEncabezadoSeguimiento.Update();
|
|
return true;
|
|
}
|
|
|
|
|
|
}
|
|
}
|