TFS_ANTIGUO/SIGPC/ProyectoSIGPC/Forms/Usuarios/frwRol.aspx.cs
kledezma 7fdadc4709 KLB
git-tfs-id: [http://192.168.1.10:8080/tfs/AyA]$/SINORT;C519
2021-01-22 15:05:35 +00:00

1420 lines
No EOL
52 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*===========================================================================================================================
* Instituto Costarricense de Acueductos y Alcantarillados. - 2015
* Administración de la Seguridad
* Nombre de la Pantalla: frwRol.aspx
*
* Explicación de los contenidos del archivo
*===========================================================================================================================
* HISTORIAL
*
* PERSONA DIA MES - AÑO DESCRIPCIÓN
* Esteban Gutierrez Rapso 11 05 - 2015 Se inicia con el diseño de la pagina
* …………………………………………………………
* …………………………………………………………
*===========================================================================================================================
* Derechos Reservados (C) 2015 AyA.
* ESTE CÓDIGO ES PROVEÍDO “TAL CUAL ES” SIN GARANTÍA ALGUNA
* DE NINGÚN TIPO, SEA IMPLICITA O EXPLICITA.
* NO SE PERMITE SU REPRODUCCIÓN PARCIAL O TOTAL, NI SU COMERCIALIZACIÓN
*===========================================================================================================================
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using AyABL;
using AyABL.AUT.Autenticacion;
using AyABL.APL;
using AyABL.Usuario;
using System.Configuration;
using AyADAL;
using AyABL.RCS;
using AyAEL.USR;
public partial class Forms_Usuarios_frwRol : General
{
#region Inicializar Formulario (R0)
override protected void OnInit(EventArgs e) //M0
{
try
{
base.OnInit(e);
InicializarFormulario();
}
catch (Exception ex)
{
MensajeError("Error en R0M0", ex);
}
}
private void InicializarFormulario() //M1
{
try
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
construirGridView();
Javascript.CheckAllGridViewItems(Page);
cuwBusquedaList.Buscar += new _controlesusuario_Estandar_cuwBusquedaList.SearchEvent(Buscar);
}
catch (Exception ex)
{
MensajeError("Error en R0M1", ex);
}
}
#endregion
#region Variables (R1)
GridView grvListaDatosRolesTemp;
RolItemMenuComandoBL objRolItemMenuComandoBL;
ItemMenuBL objItemMenuBL;
ComandoBL objComandoBL;
UsuarioRolBL objUsuarioRolBL;
AplicacionBL objAplicacionBL;
ActividadesBL objActividadesBL;
RolBL objRolBL = new RolBL();
ArrayList arlCondicionesFiltroBusqueda = new ArrayList();
#endregion
#region Eventos Formulario (R2)
protected void Page_Load(object sender, EventArgs e) //M0
{
try
{
if ((!IsPostBack) && (Session.Count > 0))
{
//ComandosxMenu();
llenarGridView(true);
ComandosxMenu();
llenarlblApp();
llenarDDLAcceso();
llenarDDLActividades();
mostrarFilaTabla(1);
}
}
catch (Exception ex)
{
MensajeError("Error en R2M0", ex);
}
}
#endregion
#region Eventos Controles Web (R3)
/// <summary>
/// Metodo que se utiliza para extraer información del registro de la base de datos y ser mostrado en el acordeon de Controles
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grvListaDatosRoles_RowCommand(object sender, GridViewCommandEventArgs e) //M0
{
try
{
if (e.CommandName == "editar")
{
int i = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = grvListaDatosRoles.Rows[i];
int intPkRol = Convert.ToInt32(selectedRow.Cells[2].Text);
ViewState["PkRol"] = intPkRol;
ViewState["MODO"] = "Modifica";
mostrarFilaTabla(2);
limpiarCampos();
mostrarDatos(intPkRol);
}
}
catch (Exception ex)
{
MensajeError("Error en R3M0 " , ex);
}
}
/// <summary>
/// Metodo que se utiliza para la paginación del Grid en caso de que el Rol desee ver mas registros
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grvListaDatosRoles_PageIndexChanging(object sender, GridViewPageEventArgs e) //M1
{
try
{
grvListaDatosRoles.PageIndex = e.NewPageIndex;
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M1", ex);
}
}
///<summary>
///Activar el botón de Refrescar
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void btnRefrescar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M2
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M2 " + MensajesAplicacion.RefrescarFallido.ToString(), ex);
}
}
/// <summary>
/// Activa el evento del botón Buscar (binoculares)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBuscar_Click(object sender, System.Web.UI.ImageClickEventArgs e) //M3
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M3" + MensajesAplicacion.BusquedaFallido.ToString(), ex);
}
}
/// <summary>
/// Activa el evento del boton Nuevo
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnNuevo_Click(object sender, EventArgs e) //M4
{
try
{
ViewState["MODO"] = "Nuevo";
ViewState["PkRol"] = "";
mostrarFilaTabla(2);
limpiarCampos();
cargarArbol();
txtRol.Focus();
}
catch (Exception ex)
{
MensajeError("Error en R3M4 " + MensajesAplicacion.GuardadoFallido.ToString(), ex);
}
}
/// <summary>
/// Metodo que activa el botón de Eliminar
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEliminar_Click(object sender, EventArgs e) //M5
{
try
{
objUsuarioRolBL = new UsuarioRolBL();
// recorro el grid
foreach (GridViewRow row in grvListaDatosRoles.Rows)
{
HtmlInputCheckBox chkTemp = (HtmlInputCheckBox)row.Controls[0].Controls[1];
if (chkTemp != null)
{
// si el registro esta marcado
if (chkTemp.Checked)
{
int intPkEliminar = Convert.ToInt32(row.Cells[2].Text);
objUsuarioRolBL.objUsuarioRolEL.Rol = intPkEliminar;
// si no hay usuarios en ese role
if (!objUsuarioRolBL.usuariosAsociados())
{
eliminarDatos(intPkEliminar);
}
else
{
MensajeAlerta("No se puede eliminar el rol debido a que tiene usuarios asociados.");
}
}
}
}
llenarGridView(true);
}
catch (Exception ex)
{
MensajeError("Error en R3M5 " + MensajesAplicacion.BorradoFallido.ToString(), ex);
}
}
///<summary>
///Activa el metodo del boton Anterior, regresa a la primera fila de la tabla
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void btnAnterior_Click(object sender, EventArgs e) //M7
{
try
{
llenarGridView(true);
divDatosSuperiores.Visible = true;
divDatosInferiores.Visible = false;
divDatosInferiores2.Visible = false;
divDatosInferiores3.Visible = false;
}
catch (Exception ex)
{
MensajeError("Error en R3M7", ex);
}
}
/// <summary>
/// Activa el evento del boton guardar.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGuardar_Click(object sender, EventArgs e) //M8
{
try
{
if (Page.IsValid)
{
string strMensaje = string.Empty;
if (txtRol.Text != string.Empty && txtDescripcion.Text != string.Empty && ddlAcceso.SelectedValue != "-1")
{
if (validarTreeview())
{
if (GuardarDatos())
{
MensajeInformativo("La información se guardó satisfactoriamente");
llenarGridView(true);
ComandosxMenu();
llenarlblApp();
llenarDDLAcceso();
mostrarFilaTabla(1);
}
else
MensajeInformativo("La información no se guardó, revise y vuelva a intentarlo");
mostrarFilaTabla(1);
}
else
{
MensajeAlerta("Debe seleccionar al menos una opcion del arbol organizacional.");
}
}
else
{
MensajeAlerta("Debe completar los datos del rol antes de proseguir.");
txtRol.Focus();
}
}
}
catch (Exception ex)
{
MensajeError("Error en R3M8" + MensajesAplicacion.GuardadoFallido.ToString(), ex);
}
}
/// <summary>
/// Asocia los actividades al rol de usuario
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAgregarActividad_Click(object sender, EventArgs e) //M9
{
try
{
string strMensaje = string.Empty;
if (txtRol.Text != string.Empty && txtDescripcion.Text != string.Empty && ddlAcceso.SelectedValue != "-1")
{
if (AgregarActividades())
{
//Guarda los datos del arbol
MensajeInformativo("Se agregó la actividad satisfactoriamente");
llenarGridViewActividades();
ddlActividad.SelectedValue = "-1";
}
else
MensajeInformativo("La actividad no se agregó, revise y vuelva a intentarlo");
//mostrarFilaTabla(1);
}
else
{
MensajeAlerta("Debe completar los datos del rol antes de proseguir.");
txtRol.Focus();
}
}
catch (Exception ex)
{
MensajeError("Error en R3M9" + MensajesAplicacion.GuardadoFallido.ToString(), ex);
}
}
/// <summary>
/// Metodo que se utiliza para extraer información del registro de la base de datos y ser mostrado en el acordeon de Controles
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grvListaActividadesRoles_RowCommand(object sender, GridViewCommandEventArgs e) //M0
{
try
{
if (e.CommandName == "eliminar")
{
int i = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = grvListaActividades.Rows[i];
int intPkActividad = Convert.ToInt32(selectedRow.Cells[0].Text);
ViewState["PkActividad"] = intPkActividad;
ViewState["MODO"] = "Modifica";
mostrarFilaTabla(2);
eliminarActividad(intPkActividad);
llenarGridViewActividades();
}
}
catch (Exception ex)
{
MensajeError("Error en R3M0 ", ex);
}
}
#endregion
#region Metodos Personalizados (R4)
/// <summary>
/// Oculta las filas que lo requieran
/// </summary>
/// <param name="p_intFila"></param>
private void mostrarFilaTabla(int p_intFila) //M0
{
try
{
divDatosSuperiores.Visible = false;
divDatosInferiores.Visible = false;
divDatosInferiores2.Visible = false;
divDatosInferiores3.Visible = false;
switch (p_intFila)
{
case 1:
llenarGridView(true);
divDatosSuperiores.Visible = true;
break;
case 2:
llenarGridView(true);
divDatosInferiores.Visible = true;
divDatosInferiores2.Visible = true;
divDatosInferiores3.Visible = true;
break;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo que se utiliza para contruir el Grid al inicio de la pantalla
/// </summary>
private void construirGridView() //M1
{
try
{
grvListaDatosRolesTemp = (GridView)tdLista.FindControl("grvListaDatosRoles");
GridViewBoundField bdfPkRol = new GridViewBoundField("PKROL", "PK", false, false, false);
GridViewBoundField bdfNombreRol = new GridViewBoundField("NOMBREROL", "Rol", true, false, true);
GridViewBoundField bdfDescripcion = new GridViewBoundField("DESCRIPCIONROL", "Descripción", true, false, true);
GridViewBoundField bdfActivoRol = new GridViewBoundField("ACTIVOROL", "Activo", true, "Si", "No", true);
//GridViewBoundField bdfAplicacion = new GridViewBoundField("ETIQUETAAPLICACION", "Aplicación", true, false, true);
grvListaDatosRolesTemp.Columns.Add(bdfPkRol);
grvListaDatosRolesTemp.Columns.Add(bdfNombreRol);
grvListaDatosRolesTemp.Columns.Add(bdfDescripcion);
grvListaDatosRolesTemp.Columns.Add(bdfActivoRol);
//grvListaDatosRolesTemp.Columns.Add(bdfAplicacion);
grvListaDatosRolesTemp.Columns[0].ItemStyle.Width = 25;
grvListaDatosRolesTemp.Columns[1].ItemStyle.Width = 25;
cuwBusquedaList.LlenarCHKLBusqueda(grvListaDatosRolesTemp);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo que se encarga de agregar el filtro de busqueda seleccionado por el usuario
/// </summary>
/// <returns></returns>
private void condicionesBusqueda() //M2
{
AyABL.AyABL objBL = new AyABL.AyABL();
CondicionDAL condicion;
DateTime dteFechaInicio = new DateTime();
DateTime dteFechaFin = new DateTime();
ListItem li = new ListItem();
string p_parametros;
p_parametros = this.cuwBusquedaList.getValorBusqueda();
try
{
if (p_parametros != "")
{
//aqui se construye el listItem con los datos que vienen del control en formato {valor : texto , valor : texto}
char[] separadorTuplas = { ',' };
char[] separadorValores = { ':' };
string[] arrayTupla = p_parametros.Split(separadorTuplas);
for (int i = 0; i <= (arrayTupla.Length - 1); i++)
{
if (arrayTupla[i].ToString() != "")
{
string[] arrayValores = arrayTupla[i].ToString().Split(separadorValores);
li = new ListItem(arrayValores[1], arrayValores[0]);
if (li.Value.Contains("FECHA") && li.Text != string.Empty)
{
if (li.Value.Contains("INICIO"))
{
dteFechaInicio = Convert.ToDateTime(li.Text.ToString());
dteFechaFin = DateTime.Now;
}
if (li.Value.Contains("FIN"))
{
dteFechaFin = Convert.ToDateTime(li.Text.ToString());
if (dteFechaFin != null || dteFechaInicio != null)
if (dteFechaInicio < dteFechaFin || dteFechaFin == dteFechaInicio)
{
objBL = new AyABL.AyABL();
arlCondicionesFiltroBusqueda = objBL.buscarPorFechas(Tablas.BITACORA, dteFechaInicio, dteFechaFin, operadorLogico.AND, arlCondicionesFiltroBusqueda);
}
else
MensajeInformativo(AyABL.BASESDEDATOS.ADS + "Interfaz: " + "Verifique que la Fecha de Inicio sea menor que la Fecha Final" + "M2");
else
MensajeInformativo(AyABL.BASESDEDATOS.ADS + "Interfaz: " + "Verifique que los campos de las fechas no estén vacíos" + "M2");
}
else
{
objBL = new AyABL.AyABL();
arlCondicionesFiltroBusqueda = objBL.buscarPorFechas(Tablas.BITACORA, dteFechaInicio, dteFechaFin, operadorLogico.AND, arlCondicionesFiltroBusqueda);
}
}
else
{
if (li.Value.Contains("booleano") && li.Text != "2")
{
condicion = new CondicionDAL();
char[] separadorColumna = { '|' };
string[] strColumna = li.Value.Split(separadorColumna);
condicion.valorIzquierdo = strColumna[1].ToString();
condicion.operadorGeneral = operadorGeneral.EQUAL;
condicion.operadorLogico = operadorLogico.AND;
condicion.valorDerecho = li.Text.Trim();
arlCondicionesFiltroBusqueda.Add(condicion);
}
else
{
if (li.Text != string.Empty && !li.Value.Contains("booleano"))
{
condicion = new CondicionDAL();
condicion.valorIzquierdo = li.Value;
condicion.operadorGeneral = operadorGeneral.LIKEALL;
condicion.operadorLogico = operadorLogico.AND;
condicion.valorDerecho = "%" + li.Text.Trim() + "%";
arlCondicionesFiltroBusqueda.Add(condicion);
}
}
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo que se utiliza para limpiar los campos en la pantalla
/// </summary>
private void limpiarCampos() //M3
{
try
{
txtRol.Text = string.Empty;
txtDescripcion.Text = string.Empty;
ddlAcceso.SelectedValue = "-1";
ddlActividad.SelectedValue = "-1";
grvListaActividades.DataSource = null;
grvListaActividades.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo que se utiliza con el buscador de la parte superior de la pantalla, y hace que se despliegue la información de acuerdo
/// a lo solicitado
/// </summary>
private void Buscar() //M4
{
try
{
llenarGridView(true);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo que se utiliza para el despliegue de los botones
/// </summary>
private void ComandosxMenu() //M6
{
try
{
//General general = null;
DataSet dsComandos = getComandos();
if (dsComandos != null)
{
foreach (DataRow drTemp in dsComandos.Tables[0].Rows)
{
switch (drTemp["NOMBRECOMANDO"].ToString().ToUpper())
{
case "NUEVO":
btnNuevo.Visible = true;
break;
case "ELIMINAR":
btnEliminar.Visible = true;
break;
case "MODIFICA":
//Inicio de variable tipo VIEWSTATE
ViewState["PUEDEMODIFICAR"] = true;
btnGuardar.Visible = true;
break;
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region Metodos Controles a Datos (R5)
/// <summary>
/// guarda y modifica registros en la tabla.
/// </summary>
/// <returns></returns>
private bool GuardarDatos() //M0
{
bool blnValorRetornado = false; //Se utiliza para verificar si se ejecuto el proceso tanto de guardar como el de eliminar
int intPk = 0;
TransaccionDAL tdlTransaccion = new TransaccionDAL("ADS");
try
{
string strModo = ViewState["MODO"].ToString();
ViewState["PUEDEMODIFICAR"] = true;
objRolBL = new RolBL();
objRolBL.objRolEL.PK = 0;
objRolBL.objRolEL.Nombre = this.txtRol.Text.Trim();
objRolBL.objRolEL.Descripcion = this.txtDescripcion.Text.Trim();
objRolBL.objRolEL.Activo = true;
if (ddlAcceso.SelectedValue != "-1")
{
objRolBL.objRolEL.ACCESOINFORMACION = int.Parse(ddlAcceso.SelectedValue);
Session["ACCESOINSORMACION"] = int.Parse(ddlAcceso.SelectedValue);
}
tdlTransaccion.BeginTransaction();
if (strModo == "Nuevo")
{
int intPkRolAcceso = 0;
intPk = objRolBL.insertarRol(ref intPkRolAcceso);
//Guarda los datos del arbol
InsertaDatosArbol(intPk);
blnValorRetornado = true;
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.INSERT.ToString(),
MensajesBitacora.IngresarRegistro + ": " + intPk + ", " + txtRol.Text + ", " + txtDescripcion.Text,
"frwRole.aspx",
Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"])
);
tdlTransaccion.CommitTransaction();
}
else if (strModo == "Modifica")
{
if (Convert.ToBoolean(ViewState["PUEDEMODIFICAR"]) != false)
{
objRolBL.objRolEL.PK = Convert.ToInt32(ViewState["PkRol"]);
objRolBL.actualizarRol();
objRolItemMenuComandoBL = new RolItemMenuComandoBL();
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Rol = Convert.ToInt32(ViewState["PkRol"]);
objRolItemMenuComandoBL.eliminarRolexComandoxMenuItem();
InsertaDatosArbol(Convert.ToInt32(ViewState["PkRol"]));
blnValorRetornado = true;
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.UPDATE.ToString(),
MensajesBitacora.ModificarRegistro + ": " + Convert.ToInt32(ViewState["PkRol"]) + ", " + txtRol.Text + ", " + txtDescripcion.Text,
"frwRole.aspx",
Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"])
);
tdlTransaccion.CommitTransaction();
}
}
}
catch (Exception ex)
{
tdlTransaccion.RollBackTransaction();
throw (ex);
}
return blnValorRetornado;
}
#region Guarda Datos Arbol
/// <summary>
/// Metodo utilitario para insertar cada nodo del árbol y sus respectivos permisos en la base de datos
/// </summary>
/// <param name="p_intPkRole"></param>
/// <param name="tdlTransaccion"></param>
private void InsertaDatosArbol(int p_intPkRole) //M1
{
// recorro los hijos de la raíz del árbol (El nombre de la aplicación)
foreach (TreeNode tndRol in trvRol.Nodes[0].ChildNodes)
{
InsertaPantallasArbol(p_intPkRole, Convert.ToInt32(tndRol.Value), tndRol);
}
}
/// <summary>
/// Metodo que se utiliza para insertar el datos de las pantallas
/// </summary>
/// <param name="p_intPkRole"></param>
/// <param name="p_intPKmenu"></param>
/// <param name="p_tndNode"></param>
/// <param name="tdlTransaccion"></param>
/// <returns></returns>
private bool InsertaPantallasArbol(int p_intPkRole, int p_intPKmenu, TreeNode p_tndPantallas)//M2
{
bool hijoInsertado = false; // determina si algún hijo del menu o pantalla actual fue insertado
try
{
// si tiene hijos
if (p_tndPantallas.ChildNodes.Count > 0)
{
// si el nodo no es un comando, agarro como PKMENU el que viene del nodo, si es un comando, conservo el valor PKMENU que viene como parametro
if (p_tndPantallas.Target != "C")
{
p_intPKmenu = Convert.ToInt32(p_tndPantallas.Value);
}
// recorro los hijos del nodo recibido como parametro del metodo
foreach (TreeNode tndHijo in p_tndPantallas.ChildNodes)
{
// los mando a insertarDatosArbol y acumulo las respuestas de los inserts de hijos
bool aux = InsertaPantallasArbol(p_intPkRole, p_intPKmenu, tndHijo);
// ** nota, solo el comando consultar va a activar en el arbol de permisos, los permisos a consultar la pantalla o modulo que se encuentren
// por encima de este, si tengo otros comandos al mismo nivel del comando consultar, estos no brindaran el permiso de consulta a la pantalla padre
// o modulo en el que se encuentren
if (/*(tndHijo.Text == "Consultar") || */(tndHijo.Target == string.Empty))
{
hijoInsertado = (hijoInsertado || aux);
}
}
// si inserte un hijo o si el nodo esta chequeado, chequeo el nodo
p_tndPantallas.Checked = (p_tndPantallas.Checked || hijoInsertado);
if (p_tndPantallas.Checked)
{
bool aux = InsertarComandos(p_intPkRole, p_intPKmenu, p_tndPantallas);
hijoInsertado = (hijoInsertado || aux);
}
}
// si no tiene hijos (hoja)
else
{
hijoInsertado = InsertarComandos(p_intPkRole, p_intPKmenu, p_tndPantallas);
}
}
catch (Exception ex)
{
throw ex;
}
return hijoInsertado;
}
/// <summary>
/// Metodo que se utiliza para insertar la información de los comandos
/// </summary>
/// <param name="p_intPkRole"></param>
/// <param name="p_intPkMenu"></param>
/// <param name="p_tndNode"></param>
/// <param name="tdlTransaccion"></param>
/// <returns></returns>
private bool InsertarComandos(int p_intPkRole, int p_intPkMenu, TreeNode p_tndNode ) //M3
{
bool insertado = false;
try
{
// si es un comando
if (p_tndNode.Target == "C")
{
// si esta chequeado
if (p_tndNode.Checked)
{
objRolItemMenuComandoBL = new RolItemMenuComandoBL();
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Rol = p_intPkRole;
objRolItemMenuComandoBL.objRolItemMenuComandoEL.ItemMenu = p_intPkMenu;
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Comando = Convert.ToInt32(p_tndNode.Value);
objRolItemMenuComandoBL.insertarRolexComandoxMenuItem();
insertado = true;
}
}
//si es un módulo o pantalla
else
{
// si este no tiene como hijo a un comando
if (!tieneHijoComando(p_tndNode))
{
objRolItemMenuComandoBL = new RolItemMenuComandoBL();
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Rol = p_intPkRole;
objRolItemMenuComandoBL.objRolItemMenuComandoEL.ItemMenu = p_intPkMenu;
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Comando = Convert.ToInt32(Comandos.Consultar);
objRolItemMenuComandoBL.insertarRolexComandoxMenuItem();
insertado = true;
}
// si el nodo actual tiene un hijo que sea comando
else
{
// si este comando esta chequeado
if (hijoComandoChequeado(p_tndNode))
{
// regreso true porque el paso recursivo anterior me tuvo que agregar el consultar del menu
return true;
}
else
{
return false;
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return insertado;
}
/// <summary>
/// Devuelve si el nodo enviado como parametro tiene un comando de hijo
/// </summary>
/// <param name="p_tndNode"></param>
/// <returns></returns>
private bool tieneHijoComando(TreeNode p_tndNode) //M4
{
bool blnConComando = false;
try
{
foreach (TreeNode tndHijo in p_tndNode.ChildNodes)
{
// si es un comando
if (tndHijo.Target == "C")
{
blnConComando = true;
break;
}
}
}
catch (Exception ex)
{
throw ex;
}
return blnConComando;
}
/// <summary>
/// Devuelve si el nodo enviado como parametro tiene un comando de hijo
/// </summary>
/// <param name="p_tndNode"></param>
/// <returns></returns>
private bool hijoComandoChequeado(TreeNode p_tndNode) //M5
{
bool comandoChequeado = false;
try
{
foreach (TreeNode tndHijo in p_tndNode.ChildNodes)
{
// si es un comando
if (tndHijo.Checked)
{
comandoChequeado = true;
break;
}
}
}
catch (Exception ex)
{
throw ex;
}
return comandoChequeado;
}
private bool validarTreeview()
{
bool valorRetornado = false;
try
{
// recorro los hijos de la raíz del árbol (El nombre de la aplicación)
foreach (TreeNode tndRol in trvRol.Nodes[0].ChildNodes)
{
if (tndRol.Checked == true)
return true;
}
}
catch(Exception ex)
{ throw ex; }
return valorRetornado;
}
#endregion
/// <summary>
/// Metodo que se utiliza para eliminar registros de la base de datos
/// </summary>
/// <param name="p_intPksAEliminar"></param>
private void eliminarDatos(int p_intPkRole) //M6
{
try
{
objRolItemMenuComandoBL = new RolItemMenuComandoBL();
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Rol = p_intPkRole;
objRolItemMenuComandoBL.eliminarRolexComandoxMenuItem();
objRolBL = new RolBL();
objRolBL.objRolEL.PK = p_intPkRole;
objRolBL.eliminarRol();
// Se procede a ingresar el registro de bitacora para almacenar la accion del usuario
GuardarEventoBitacora(Session["LOGIN"].ToString(), AccionBitacora.DELETE, MensajesBitacora.EliminarRegistro + " con la PK " + p_intPkRole, "frwRol.aspx", Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]));
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// guarda y modifica registros en la tabla.
/// </summary>
/// <returns></returns>
private bool AgregarActividades() //M7
{
bool blnValorRetornado = false; //Se utiliza para verificar si se ejecuto el proceso tanto de guardar como el de eliminar
TransaccionDAL tdlTransaccion = new TransaccionDAL("SIGDD");
int intPkRolAcceso = 0;
int intPk = 0;
try
{
tdlTransaccion.BeginTransaction();
if (ViewState["PkRol"].ToString() == "" || ViewState["PkRol"].ToString() == null)
{
string strModo = ViewState["MODO"].ToString();
ViewState["PUEDEMODIFICAR"] = true;
objRolBL = new RolBL();
objRolBL.objRolEL.PK = 0;
objRolBL.objRolEL.Nombre = this.txtRol.Text.Trim();
objRolBL.objRolEL.Descripcion = this.txtDescripcion.Text.Trim();
objRolBL.objRolEL.Activo = true;
if (ddlAcceso.SelectedValue != "-1")
objRolBL.objRolEL.ACCESOINFORMACION = int.Parse(ddlAcceso.SelectedValue);
intPk = objRolBL.insertarRol(ref intPkRolAcceso);
ViewState["PkRol"] = intPk.ToString();
//Guarda los datos del arbol
InsertaDatosArbol(intPk);
//asocia actividades al rol
}
else
{
objRolBL = new RolBL();
objRolBL.objRolEL.PK = Convert.ToInt32(ViewState["PkRol"]);
DataSet dsActividades = objRolBL.dsRolAccesoPorRol(null);
if (dsActividades.Tables.Count > 0)
{
if (dsActividades.Tables[0].Rows.Count > 0)
{
intPkRolAcceso = int.Parse(dsActividades.Tables[0].Rows[0]["PKROLACCESO"].ToString());
}
}
}
objRolBL.objRolAccesoActividadEL.FKACTIVIDAD = int.Parse(ddlActividad.SelectedValue);
objRolBL.objRolAccesoActividadEL.FKROLACCESO = intPkRolAcceso;
intPk = objRolBL.asociarActividadRol(tdlTransaccion);
ViewState["MODO"] = "Modifica";
blnValorRetornado = true;
GuardarEventoBitacora(
Session["LOGIN"].ToString(),
AccionBitacora.INSERT.ToString(),
MensajesBitacora.IngresarRegistro + ": " + intPk + ", " + txtRol.Text + ", " + ddlActividad.SelectedItem.Text,
"frwRol.aspx",
Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"])
);
tdlTransaccion.CommitTransaction();
}
catch (Exception ex)
{
tdlTransaccion.RollBackTransaction();
throw (ex);
}
return blnValorRetornado;
}
/// <summary>
/// Metodo que se utiliza para eliminar actividades de la base de datos
/// </summary>
/// <param name="p_intPksAEliminar"></param>
private void eliminarActividad(int p_intPkActividad) //M6
{
try
{
objRolBL = new RolBL();
objRolBL.objRolAccesoActividadEL.PK = p_intPkActividad;
p_intPkActividad = objRolBL.elminarActividadRol();
// Se procede a ingresar el registro de bitacora para almacenar la accion del usuario
GuardarEventoBitacora(Session["LOGIN"].ToString(), AccionBitacora.DELETE, MensajesBitacora.EliminarRegistro + " con la PK " + p_intPkActividad, "frwRol.aspx", Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]));
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region Metodos Datos a Controles (R6)
/// <summary>
/// Carga el grid principal
/// </summary>
/// <param name="p_Llenar"></param>
private void llenarGridView(bool p_Llenar) //M0
{
try
{
if (!IsPostBack || p_Llenar)
{
condicionesBusqueda();
objRolBL = new RolBL();
objRolBL.objRolEL.Aplicacion = Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]);
DataSet dsRoles = objRolBL.dsListaRoles(arlCondicionesFiltroBusqueda);
General.detalleGridView(dsRoles, grvListaDatosRolesTemp, lblTotalDatos);
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Muestra los datos del registro
/// </summary>
/// <param name="p_intPkConsultar"></param>
private void mostrarDatos(int p_intPkConsultar) //M1
{
try
{
objRolBL = new RolBL();
objRolBL.objRolEL.PK = p_intPkConsultar;
objRolBL.objRolEL.Rol= Int32.Parse(ViewState["PkRol"].ToString());
DataSet dsRol = objRolBL.dsListaRoles(arlCondicionesFiltroBusqueda);
if (dsRol.Tables[0].Rows.Count > 0)
{
txtRol.Text = dsRol.Tables[0].Rows[0]["NOMBREROL"].ToString();
txtDescripcion.Text = dsRol.Tables[0].Rows[0]["DESCRIPCIONROL"].ToString();
cargarArbol();
}
objRolBL.objRolEL.PK = p_intPkConsultar;
DataSet dsAcceso = objRolBL.dsAccesoUsuario(objRolBL.objRolEL);
if (dsAcceso.Tables[0].Rows.Count > 0)
{
ddlAcceso.SelectedValue = dsAcceso.Tables[0].Rows[0]["ACCESOINFORMACIONROLACCESO"].ToString();
}
llenarGridViewActividades();
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Muestra en pantalla los roles que se le pueden asignar al usuario
/// </summary>
private void llenarlblApp() //M2
{
try
{
objAplicacionBL = new AplicacionBL();
objAplicacionBL.objAplicacionEL.PK = Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]);
DataSet dsAplicacion = objAplicacionBL.dsListaAplicacion(objAplicacionBL.objAplicacionEL);
}
catch(Exception ex)
{
throw ex;
}
}
/// <summary>
/// Llena el dropdownlist de Cantonales según la aplicación
/// </summary>
private void llenarDDLAcceso() //M2
{
try
{
ddlAcceso.Items.Clear();
ddlAcceso.Items.Insert(0, new ListItem("Todo", "0"));
ddlAcceso.Items.Insert(0, new ListItem("Region", "1"));
ddlAcceso.Items.Insert(0, new ListItem("Dependencia", "2"));
ddlAcceso.Items.Insert(0, new ListItem("Seleccione", "-1"));
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo secundario para cargar el arbol que muestra el menu y sus comandos
/// </summary>
/// <param name="p_intPadre"></param>
/// <param name="p_tndNodoRaiz"></param>
private void cargarArbol() //M3
{
try
{
//Construir el Nodo Raíz
TreeNode tdnNodoRaiz = new TreeNode();
tdnNodoRaiz.ShowCheckBox = true;
tdnNodoRaiz.Text = ConfigurationManager.AppSettings["SIGLAS"].ToString();
tdnNodoRaiz.Value = "-1";
// limpio el arbol
trvRol.Nodes.Clear();
cargarArbolItems(Convert.ToInt32(tdnNodoRaiz.Value), tdnNodoRaiz, Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]));
//tdnNodoRaiz.ExpandAll();
trvRol.Nodes.Add(tdnNodoRaiz);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Metodo para cargar en el arbol los comandos
/// </summary>
/// <param name="p_intPKItemMenu"></param>
/// <param name="p_tndNodoPantalla"></param>
private void cargarArbolItems(int p_intPadre, TreeNode p_tndNodoRaiz, int p_intFkApp) //M5
{
int intPadreItem = 0;
try
{
//Obtener los datos
objRolBL = new RolBL();
objRolBL.objRolEL.Padre = p_intPadre;
objRolBL.objRolEL.ItemMenu = 0;
objRolBL.objRolEL.Aplicacion = p_intFkApp;
DataSet dsPantallas = objRolBL.getComandosxItemxApl(Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]));
//Verifica si el Dataset esta vacio
if (dsPantallas.Tables[0].Rows.Count > 0)
{
//Agregar cada pantalla
foreach (DataRow drPantallas in dsPantallas.Tables[0].Rows)
{
TreeNode tdnNodoPantallas = new TreeNode();
tdnNodoPantallas.Text = drPantallas["ETIQUETAITEMMENU"].ToString();
tdnNodoPantallas.Value = drPantallas["PKITEMMENU"].ToString();
intPadreItem = Int32.Parse(drPantallas["PKITEMMENU"].ToString());
p_tndNodoRaiz.ChildNodes.Add(tdnNodoPantallas);
//if (ViewState["MODO"].ToString() == "Modifica")
// tdnNodoPantallas.Checked = true;
//Verifica que el Modo se esté en Modificar para checkear los Items Menu
if (ViewState["MODO"].ToString() == "Modifica")
{
//Obtiener el comando consulta
objRolBL = new RolBL();
objRolBL.objRolEL.ItemMenu = Int32.Parse(drPantallas["PKITEMMENU"].ToString());
objRolBL.objRolEL.Aplicacion = p_intFkApp;
objRolBL.objRolEL.Rol= Int32.Parse(ViewState["PkRol"].ToString());
DataSet dsPantallasRole = objRolBL.getComandosxItemxRol();
//Verifica que el Dataset esté vacío
if (dsPantallasRole.Tables[0].Rows.Count > 0)
{
//Buscar el MenuItem para checkearlo
foreach (DataRow drPantallasRole in dsPantallasRole.Tables[0].Rows)
{
if (drPantallas["PKITEMMENU"].ToString() == drPantallasRole["PKITEMMENU"].ToString())
{
if (ViewState["MODO"].ToString() == "Modifica")
{
objRolItemMenuComandoBL = new RolItemMenuComandoBL();
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Rol = Int32.Parse(ViewState["PkRol"].ToString());
objRolItemMenuComandoBL.objRolItemMenuComandoEL.ItemMenu = Convert.ToInt32(drPantallas["PKITEMMENU"]);
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Comando = Convert.ToInt32(drPantallas["PKCOMANDO"]);
tdnNodoPantallas.Checked = objRolItemMenuComandoBL.RolexMenuxComandoCheckeado();
//if (tdnNodoPantallas.Checked == true)
// tdnNodoPantallas.Parent.Checked = true;
}
}
}
}
// busco los hijos del hijo
cargarArbolItems(Int32.Parse(drPantallas["PKITEMMENU"].ToString()), tdnNodoPantallas, p_intFkApp);
}
else
cargarArbolItems(Int32.Parse(drPantallas["PKITEMMENU"].ToString()), tdnNodoPantallas, p_intFkApp);
}
}
else
{
cargarComandosItems(p_intPadre, p_tndNodoRaiz);
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Carga los comandos
/// </summary>
/// <param name="p_intPKMenu"></param>
/// <param name="p_tndNodoPantalla"></param>
private void cargarComandosItems(int p_intPKMenu, TreeNode p_tndNodoPantalla) //M6
{
try
{
objRolBL = new RolBL();
objRolBL.objRolEL.ItemMenu = p_intPKMenu;
objRolBL.objRolEL.Aplicacion = Convert.ToInt32(ConfigurationManager.AppSettings["pkApp"]);
DataSet dsComandosRole = objRolBL.getComandosxItem();
// si el role, menu y comando tiene comandos
if (dsComandosRole.Tables[0].Rows.Count != 0 && dsComandosRole.Tables[0].Rows[0]["ETIQUETAITEMMENU"].ToString() != "Inicio")
{
// agrego cada comando
foreach (DataRow drComando in dsComandosRole.Tables[0].Rows)
{
TreeNode tdnNodoComandos = new TreeNode();
tdnNodoComandos.Text = drComando["NOMBRECOMANDO"].ToString();
tdnNodoComandos.Value = drComando["PKCOMANDO"].ToString();
tdnNodoComandos.Target = "C";
p_tndNodoPantalla.ChildNodes.Add(tdnNodoComandos);
if (ViewState["MODO"].ToString() == "Modifica")
{
objRolItemMenuComandoBL = new RolItemMenuComandoBL();
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Rol = Int32.Parse(ViewState["PkRol"].ToString());
objRolItemMenuComandoBL.objRolItemMenuComandoEL.ItemMenu = p_intPKMenu;
objRolItemMenuComandoBL.objRolItemMenuComandoEL.Comando = Convert.ToInt32(drComando["PKCOMANDO"]);
tdnNodoComandos.Checked = objRolItemMenuComandoBL.RolexMenuxComandoCheckeado();
if (tdnNodoComandos.Checked == true)
tdnNodoComandos.Parent.Checked = true;
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Llena el combo de actividades
/// </summary>
/// <param name="p_Llenar"></param>
private void llenarDDLActividades() //M7
{
try
{
//Limpia el control
ddlActividad.Items.Clear();
//Instancia el bjeto
objActividadesBL = new ActividadesBL();
objActividadesBL.objactividadesEL.ASTATE = true;
DataSet dsActividades = objActividadesBL.listarActividadesMantenimiento(null, true, null);
if (dsActividades.Tables[0].Rows.Count != 0)
{
ddlActividad.DataSource = dsActividades;
ddlActividad.DataTextField = dsActividades.Tables[0].Columns["DESCRIPCIONACTIVIDAD"].ColumnName;
ddlActividad.DataValueField = dsActividades.Tables[0].Columns["PKACTIVIDAD"].ColumnName;
ddlActividad.DataBind();
ddlActividad.Items.Insert(0, new ListItem("Seleccione", "-1"));
}
else
ddlActividad.Items.Insert(0, new ListItem("----- No existen actividades -----", "-1"));
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Carga el grid principal
/// </summary>
/// <param name="p_Llenar"></param>
private void llenarGridViewActividades() //M8
{
try
{
condicionesBusqueda();
objRolBL = new RolBL();
objRolBL.objRolEL.PK = Convert.ToInt32(ViewState["PkRol"]);
DataSet dsActividades = objRolBL.dsListaActividadesPorRol(null);
if (dsActividades.Tables.Count > 0)
{
if (dsActividades.Tables[0].Rows.Count > 0)
{
grvListaActividades.DataSource = dsActividades;
grvListaActividades.DataBind();
}
else
{
grvListaActividades.DataSource = null;
grvListaActividades.DataBind();
}
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}