Files
SIG/Sistemas/PermisosPorUsuario.aspx.vb

490 lines
22 KiB
VB.net

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, 1, UsuarioActual.CveEmpresa) 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 = "<i class='fa fa-ban' aria-hidden='true'></i>"
e.Row.FCLinkButton("LnkUsuario").ForeColor = Drawing.Color.Red
End If
If e.Row.DBCampo("Permitir") = "1" Then
e.Row.FCLinkButton("LnkUsuario").Text = "<i class='fa fa-check' aria-hidden='true'></i>"
e.Row.FCLinkButton("LnkUsuario").ForeColor = Drawing.Color.Green
End If
If (e.Row.DBCampo("CveModuloAcceso")) <> "" Then
e.Row.FCLabel("LnkRol").Text = "<i class='fa fa-check' aria-hidden='true'></i>"
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, CveUsuarioModifico:=UsuarioActual.CveUsuario) 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, CveUsuarioModifico:=UsuarioActual.CveUsuario) 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, CveUsuarioModifico:=UsuarioActual.CveUsuario) 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 = "<i class='fa fa-check' aria-hidden='true'></i>"
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 = "<i class='fa fa-check' aria-hidden='true'></i>"
End If
End If
If (e.Row.DBCampo("Permitir")) = "0" Then
e.Row.FCLinkButton("LnkUsuario").Text = "<i class='fa fa-ban' aria-hidden='true'></i>"
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, CveUsuarioModifico:=UsuarioActual.CveUsuario) 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, CveUsuarioModifico:=UsuarioActual.CveUsuario) 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, CveUsuarioModifico:=UsuarioActual.CveUsuario) 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