Option Explicit On Option Strict On Imports System.Data Imports System.Linq Imports Microsoft.VisualBasic Imports Extensiones Partial Class Sistemas_PermisosPorUsuario Inherits ClsPaginas #Region "P R O P I E D A D E S" Private Property UsuarioControlado As Boolean Get Return CBool(ViewState("UsuarioControlado").ToString) End Get Set(value As Boolean) ViewState("UsuarioControlado") = value End Set End Property Private Property DTModulosPadre As DataTable Get Return CType(ViewState("DTModulosPadre"), DataTable) End Get Set(value As DataTable) ViewState("DTModulosPadre") = value End Set End Property Private Property DTRolesModulos As DataTable Get Return CType(ViewState("DTRolesModulos"), DataTable) End Get Set(value As DataTable) ViewState("DTRolesModulos") = value End Set End Property Private Property DTModulos As DataTable Get Return CType(ViewState("DTModulos"), DataTable) End Get Set(value As DataTable) ViewState("DTModulos") = value End Set End Property Private Property DTModulosUsuarios As DataTable Get Return CType(ViewState("DTModulosUsuarios"), DataTable) End Get Set(value As DataTable) ViewState("DTModulosUsuarios") = value End Set End Property Private Property DTAsignarProcesos As DataTable Get Return CType(ViewState("DTAsignarProcesos"), DataTable) End Get Set(value As DataTable) ViewState("DTAsignarProcesos") = value End Set End Property Private Property DTProcesos As DataTable Get Return CType(ViewState("DTProcesos"), DataTable) End Get Set(value As DataTable) ViewState("DTProcesos") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then If UsuarioActual.TipoControl > 0 Then UsuarioControlado = True Else UsuarioControlado = False End If Dim ObjRoles As New ClsSisRoles If ObjRoles.GetRolesModulos(-1, -1) Then DTRolesModulos = ObjRoles.DtResultados End If ObjRoles.Dispose() CargaDTModulos() CargaDdlAccesoModulos() CargaCombosProcesos() End If End Sub #Region "A C C E S O A M O D U L O S" Private Sub CargaDTModulos() Dim ObjModulos As New ClsModulos If ObjModulos.GetModulosEmpresas(-1, -1, "-1", "-1", UsuarioActual.CveEmpresa) Then DTModulos = ObjModulos.DtResultados End If ObjModulos.Dispose() If DTModulos IsNot Nothing Then DTModulosPadre = DTModulos.FiltraParametros(String.Format("CvePadre = 0 OR Agrupacion = 'S'"), "", {"CvePadre", "Padres"}) End If End Sub Private Sub CargaDdlAccesoModulos() DdlUsuario.Items.Clear() DdlUsuario.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveUsuario", "Usuario"}) DdlUsuario.DataBind() DdlUsuario.SelectedIndex = 0 DdlUsuario.Items.Insert(0, New ListItem("Todos", "-1")) Dim CveRol As Integer = GlobalDTUsuarios(CveUsuario:=DdlUsuario.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveRol").ToEntero DdlRol.Items.Clear() DdlRol.DataSource = GlobalDTRoles(-1).FiltraParametros(String.Format("CveRol = {0}", CveRol)) DdlRol.DataBind() DdlRol.Items.Insert(0, New ListItem("Todos", "-1")) DdlPadre.Items.Clear() DdlPadre.DataSource = DTModulosPadre DdlPadre.DataBind() DdlPadre.Items.Insert(0, New ListItem("Todos", "-1")) DdlPadre.Items.Insert(1, New ListItem("Raíz", "0")) DdlModulo.Items.Clear() DdlModulo.DataSource = DTModulos.FiltraParametros("CveModulo > 0 AND Agrupacion = 'N'", "", {"CveModulo", "Modulo"}) DdlModulo.DataBind() DdlModulo.Items.Insert(0, New ListItem("Todos", "-1")) DdlUsuario.SelectedIndex = 0 DdlPadre.SelectedIndex = 0 DdlRol.SelectedIndex = 0 DdlModulo.SelectedIndex = 0 UpModulos.Update() UpDatos.Update() End Sub Protected Sub DdlUsuario_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlUsuario.SelectedIndexChanged If DdlUsuario.SelectedValue.ToEntero > -1 Then Dim CveRol As Integer = GlobalDTUsuarios(CveUsuario:=DdlUsuario.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveRol").ToEntero DdlRol.Items.Clear() DdlRol.DataSource = GlobalDTRoles(-1).FiltraParametros(String.Format("CveRol = {0}", CveRol)) DdlRol.DataBind() DdlRol.Items.Insert(0, New ListItem("Todos", "-1")) DdlPadre.Items.Clear() DdlPadre.DataSource = DTModulosPadre DdlPadre.DataBind() DdlPadre.Items.Insert(0, New ListItem("Todos", "-1")) DdlPadre.SelectedIndex = 0 Dim CvePadre = DdlPadre.SelectedValue.ToEntero DdlModulo.Items.Clear() DdlModulo.DataSource = DTModulos '.FiltraParametros($"CveRol ={CveRol}") DdlModulo.DataBind() DdlModulo.Items.Insert(0, New ListItem("Todos", "-1")) Else CargaDdlAccesoModulos() End If UpModulos.Update() UpDatos.Update() End Sub Protected Sub DdlPadre_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPadre.SelectedIndexChanged If DTModulos IsNot Nothing Then Dim CvePadre As Integer = DdlPadre.SelectedValue.ToEntero DdlModulo.Items.Clear() If CvePadre > 0 Then DdlModulo.Items.Clear() DdlModulo.DataSource = DTModulos.FiltraParametros($"CvePadre = {CvePadre}", "", {"CveModulo", "Modulo"}) DdlModulo.Items.Insert(0, New ListItem("Todos", "-1")) Else DdlModulo.Items.Clear() DdlModulo.DataSource = DTModulos.FiltraParametros("CveModulo > 0", "", {"CveModulo", "Modulo"}) DdlModulo.Items.Insert(0, New ListItem("Todos", "-1")) End If DdlModulo.DataBind() End If UpModulos.Update() UpDatos.Update() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click Dim CveUsuario As Integer = DdlUsuario.SelectedValue.ToEntero Dim CvePadre As Integer = DdlPadre.SelectedValue.ToEntero Dim CveRol As Integer = DdlRol.SelectedValue.ToEntero Dim CveModulo As Integer = DdlModulo.SelectedValue.ToEntero 'Dim ObjPermisos As New ClsSisUsuarios 'If ObjPermisos.GetUsuariosModulos(CveUsuario, UsuarioActual.CveEmpresa, If(UsuarioControlado, UsuarioActual.CveUsuario, -1)) Then ' DTModulos = ObjPermisos.DtResultados.FiltraParametros("Liga <> '' ") 'Else ' DTModulos = Nothing 'End If Dim ObjUsuarios As New ClsSisUsuarios If ObjUsuarios.GetPermisosPorUsuario(CveUsuario, CveRol, CvePadre, CveModulo, UsuarioActual.CveEmpresa, If(UsuarioControlado, UsuarioActual.CveUsuario, -1)) Then DTModulosUsuarios = ObjUsuarios.DtResultados.FiltraParametros("Liga <> '' ") End If ObjUsuarios.Dispose() GvModulosAcceso.DataSource = DTModulosUsuarios GvModulosAcceso.DataBind() UpModulos.Update() UpGvModulosAcceso.Update() UpDatos.Update() End Sub Protected Sub GvModulosAcceso_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvModulosAcceso.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If (e.Row.DBCampo("Permitir")) = "0" Then e.Row.FCLinkButton("LnkUsuario").Text = "" e.Row.FCLinkButton("LnkUsuario").ForeColor = Drawing.Color.Red End If If e.Row.DBCampo("Permitir") = "1" Then e.Row.FCLinkButton("LnkUsuario").Text = "" e.Row.FCLinkButton("LnkUsuario").ForeColor = Drawing.Color.Green End If If (e.Row.DBCampo("CveModuloAcceso")) <> "" Then e.Row.FCLabel("LnkRol").Text = "" e.Row.FCLabel("LnkRol").ForeColor = Drawing.Color.Green End If End If End Sub Protected Sub LnkUsuario_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim CveModuloAcceso As Integer = If(GvRow.DataKey("CveModuloAcceso") IsNot Nothing, GvRow.DataKey("CveModuloAcceso").ToEntero, -1) HdnPermitir.Value = GvRow.DataKey("Permitir") HdnCveModuloAcceso.Value = GvRow.DataKey("CveModuloAcceso") HdnCveUsuario.Value = GvRow.DataKey("CveUsuario") HdnCveModulo.Value = GvRow.DataKey("CveModulo") 'SI EL MODULO YA LO TRAE EL ROL If (GvRow.DataKey("Permitir") Is Nothing Or GvRow.DataKey("Permitir") = String.Empty) Then ChkModuloDenegar.Enabled = True ChkModuloPermitir.Enabled = False End If 'SI SE HA ASIGNADO UN VALOR AL MODULO If (GvRow.DataKey("Permitir") IsNot Nothing AndAlso GvRow.DataKey("Permitir") <> String.Empty) Then Dim Permitir As Boolean = CBool(GvRow.DataKey("Permitir")) ChkModuloDenegar.Enabled = Permitir ChkModuloPermitir.Enabled = Not Permitir End If 'QUITA LOS VALORES ASIGNADOS AL CHECBOX ChkModuloDenegar.Checked = False ChkModuloPermitir.Checked = False UpDivModulosPermisos.Update() RegistraScript("$('#DivModulosPermisos').modal('show');") End Sub Protected Sub BtnModulosPermisos_Click(sender As Object, e As EventArgs) Handles BtnModulosPermisos.Click Dim ObjUsuarios As New ClsSisUsuarios ''Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If HdnCveModuloAcceso.Value <> "" Then If HdnPermitir.Value = "" OrElse HdnPermitir.Value = "0" Then If ObjUsuarios.UpdateUsuariosModulos(HdnCveUsuario.Value.ToEntero, HdnCveModulo.Value.ToEntero, Not ChkModuloDenegar.Checked) Then Alert("Se ha actualizado el acceso al modulo correctamente") End If End If 'SI EL MODULO TRARE EL PERMISO Y ESTA ASIGNADO TAMBIEN (2 palomitas) If HdnPermitir.Value = "1" Then If ObjUsuarios.UpdateUsuariosModulos(HdnCveUsuario.Value.ToEntero, HdnCveModulo.Value.ToEntero, Not ChkModuloDenegar.Checked) Then Alert("Se ha actualizado el acceso al modulo correctamente") End If End If Else If HdnPermitir.Value = "" OrElse HdnPermitir.Value = "1" Then If ObjUsuarios.UpdateUsuariosModulos(HdnCveUsuario.Value.ToEntero, HdnCveModulo.Value.ToEntero, ChkModuloPermitir.Checked) Then Alert("Se ha actualizado el acceso al modulo correctamente") End If End If End If ObjUsuarios.Dispose() BtnConsultar_Click(BtnConsultar, EventArgs.Empty) End Sub #End Region #Region "P R O C E S O S" Private Sub CargaCombosProcesos() DdlUsuarioProceso.Items.Clear() DdlUsuarioProceso.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) DdlUsuarioProceso.DataBind() DdlUsuarioProceso.SelectedIndex = 0 DdlUsuarioProceso.Items.Insert(0, New ListItem("Todos", "-1")) Dim CveRol As Integer = GlobalDTUsuarios(CveUsuario:=DdlUsuario.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveRol").ToEntero DdlRolProceso.Items.Clear() DdlRolProceso.DataSource = GlobalDTRoles(-1).FiltraParametros(String.Format("CveRol = {0}", CveRol)) DdlRolProceso.DataBind() DdlRolProceso.Items.Insert(0, New ListItem("Todos", "-1")) DdlModuloPadreProcesos.Items.Clear() DdlModuloPadreProcesos.DataSource = DTModulosPadre DdlModuloPadreProcesos.DataBind() DdlModuloPadreProcesos.Items.Insert(0, New ListItem("Todos", "-1")) DdlModuloPadreProcesos.Items.Insert(1, New ListItem("Raíz", "0")) DdlModuloProceso.Items.Clear() DdlModuloProceso.DataSource = DTModulos.FiltraParametros("CveModulo > 0 AND Agrupacion = 'N'", "", {"CveModulo", "Modulo"}) DdlModuloProceso.DataBind() DdlModuloProceso.Items.Insert(0, New ListItem("Todos", "-1")) DdlUsuarioProceso.SelectedIndex = 0 DdlRolProceso.SelectedIndex = 0 DdlModuloPadreProcesos.SelectedIndex = 0 DdlModuloProceso.SelectedIndex = 0 Dim ObjProcesos As New ClsSisProcesos If ObjProcesos.GetProcesos(-1) Then DTProcesos = ObjProcesos.DtResultados End If ObjProcesos.Dispose() DdlProceso.DataSource = DTProcesos DdlProceso.DataBind() DdlProceso.Items.Insert(0, New ListItem("Todos", "-1")) DdlProceso.SelectedIndex = 0 UpProcesos.Update() UpDatos.Update() End Sub Protected Sub DdlUsuarioProceso_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlUsuarioProceso.SelectedIndexChanged Dim CveRol As Integer = GlobalDTUsuarios(CveUsuario:=DdlUsuarioProceso.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveRol").ToEntero DdlRolProceso.Items.Clear() DdlRolProceso.DataSource = GlobalDTRoles(-1).FiltraParametros(String.Format("CveRol = {0}", CveRol)) DdlRolProceso.DataBind() DdlRolProceso.Items.Insert(0, New ListItem("Todos", "-1")) UpProcesos.Update() UpDatos.Update() End Sub Protected Sub DdlModuloPadreProcesos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlModuloPadreProcesos.SelectedIndexChanged If DTModulos IsNot Nothing Then Dim CvePadre As Integer = DdlModuloPadreProcesos.SelectedValue.ToEntero If CvePadre > 0 Then DdlModuloProceso.Items.Clear() DdlModuloProceso.DataSource = DTModulos.FiltraParametros($"CvePadre = {CvePadre}", "", {"CveModulo", "Modulo"}) DdlModuloProceso.Items.Insert(0, New ListItem("Todos", "-1")) Else DdlModuloProceso.Items.Clear() DdlModuloProceso.DataSource = DTModulos.FiltraParametros("CveModulo > 0", "", {"CveModulo", "Modulo"}) DdlModuloProceso.Items.Insert(0, New ListItem("Todos", "-1")) End If DdlModuloProceso.DataBind() End If UpProcesos.Update() UpDatos.Update() End Sub Protected Sub DdlOpcionProceso_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlModuloProceso.SelectedIndexChanged If DTProcesos IsNot Nothing Then DdlProceso.Items.Clear() Dim CveModulo As Integer = DdlModuloProceso.SelectedValue.ToEntero DdlProceso.DataSource = DTProcesos.FiltraParametros($"CveModulo = {CveModulo}") DdlProceso.DataBind() DdlProceso.Items.Insert(0, New ListItem("Todos", "-1")) End If UpProcesos.Update() UpDatos.Update() End Sub Protected Sub BtnConsultarProcesos_Click(sender As Object, e As EventArgs) Handles BtnConsultarProcesos.Click Dim CveUsuario As Integer = DdlUsuarioProceso.SelectedValue.ToEntero Dim CvePadre As Integer = DdlModuloProceso.SelectedValue.ToEntero Dim CveRol As Integer = DdlRolProceso.SelectedValue.ToEntero Dim CveModulo As Integer = DdlModuloProceso.SelectedValue.ToEntero Dim CveProceso As Integer = DdlProceso.SelectedValue.ToEntero Dim dt As DataTable = Nothing Dim ObjUsuarios As New ClsSisUsuarios If ObjUsuarios.GetPermisosPorUsuarioProcesos(CveUsuario, CvePadre, CveRol, CveModulo, CveProceso, UsuarioActual.CveUsuario) Then dt = ObjUsuarios.DtResultados End If ObjUsuarios.Dispose() GvModulosPermiso.DataSource = dt GvModulosPermiso.DataBind() UPPAltaProcesos.Update() UpDatos.Update() End Sub Protected Sub GvModulosPermiso_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvModulosPermiso.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then 'cuando el Módulo es heredado del rol If (e.Row.DBCampo("CveModuloAcceso")) <> "" Then e.Row.Cells(1).CssClass = "bg-yellow" ' = "bg-font-yellow" '.BackColor = Color.Gold End If 'cuando el Módulo es heredado del Rol If (e.Row.DBCampo("CveModuloUsuarioAcceso")) <> "" Then e.Row.Cells(1).CssClass = "bg-purple-plum" End If 'cuando el Proceso es heredado del Rol If (e.Row.DBCampo("CveProcesoAcceso")) <> "" Then e.Row.FCLabel("LblRol").Text = "" e.Row.FCLabel("LblRol").ForeColor = Drawing.Color.Green Else If e.Row.DBCampo("Permitir") = "1" Then e.Row.FCLinkButton("LnkUsuario").ForeColor = Drawing.Color.Green e.Row.FCLinkButton("LnkUsuario").Text = "" End If End If If (e.Row.DBCampo("Permitir")) = "0" Then e.Row.FCLinkButton("LnkUsuario").Text = "" e.Row.FCLinkButton("LnkUsuario").ForeColor = Drawing.Color.Red End If End If End Sub 'Protected Sub GvModulosPermisos_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles GvModulosPermiso.RowCreated ' If e.Row.RowType = DataControlRowType.Header Txhen ' Dim FC As New SortedList ' FC.Add(0, " ,4,1,ColumnaenBlanco") ' FC.Add(3, "Acceso,4,2,Titulos") ' GetMultiRowHeader(DirectCast(sender, GridView), e, FC, "Titulos") ' End If 'End Sub Protected Sub LnkUsuarioProceso_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim CveModuloAcceso As Integer = If(GvRow.DataKey("CveModuloAcceso") IsNot Nothing, GvRow.DataKey("CveModuloAcceso").ToEntero, -1) HdnPermitirProceso.Value = GvRow.DataKey("Permitir") HdnCveModuloAccesoProceso.Value = GvRow.DataKey("CveModuloAcceso") HdnCveUsuarioProceso.Value = GvRow.DataKey("CveUsuario") HdnCveProceso.Value = GvRow.DataKey("CveProceso") 'SI EL MODULO YA LO TRAE EL ROL If (GvRow.DataKey("Permitir") Is Nothing Or GvRow.DataKey("Permitir") = String.Empty) Then ChkDenegarProceso.Enabled = True ChkPermitirProceso.Enabled = False End If 'SI SE HA ASIGNADO UN VALOR AL MODULO If (GvRow.DataKey("Permitir") IsNot Nothing AndAlso GvRow.DataKey("Permitir") <> String.Empty) Then Dim Permitir As Boolean = CBool(GvRow.DataKey("Permitir")) ChkDenegarProceso.Enabled = Permitir ChkPermitirProceso.Enabled = Not Permitir End If 'QUITA LOS VALORES ASIGNADOS AL CHECBOX ChkDenegarProceso.Checked = False ChkPermitirProceso.Checked = False UpDivProcesosPermisos.Update() RegistraScript("$('#DivProcesosPermisos').modal('show');") End Sub Protected Sub BtnAceptarProceso_Click(sender As Object, e As EventArgs) Handles BtnAceptarProceso.Click Dim ObjUsuarios As New ClsSisUsuarios ''Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If HdnCveModuloAccesoProceso.Value <> "" Then If HdnPermitirProceso.Value = "" OrElse HdnPermitirProceso.Value = "0" Then If ObjUsuarios.UpdateUsuariosProcesos(HdnCveUsuarioProceso.Value.ToEntero, HdnCveProceso.Value.ToEntero, Not ChkDenegarProceso.Checked) Then Alert("Se ha actualizado el proceso correctamente") End If End If 'SI EL MODULO TRARE EL PERMISO Y ESTA ASIGNADO TAMBIEN (2 palomitas) If HdnPermitirProceso.Value = "1" Then If ObjUsuarios.UpdateUsuariosProcesos(HdnCveUsuarioProceso.Value.ToEntero, HdnCveProceso.Value.ToEntero, Not ChkDenegarProceso.Checked) Then Alert("Se ha actualizado el proceso correctamente") End If End If Else If HdnPermitirProceso.Value = "" OrElse HdnPermitirProceso.Value = "1" Then If ObjUsuarios.UpdateUsuariosProcesos(HdnCveUsuarioProceso.Value.ToEntero, HdnCveProceso.Value.ToEntero, ChkPermitirProceso.Checked) Then Alert("Se ha actualizado el proceso correctamente") End If End If End If ObjUsuarios.Dispose() BtnConsultarProcesos_Click(BtnConsultarProcesos, EventArgs.Empty) End Sub #End Region End Class