martes, 18 de febrero de 2020

Clase Controles y Permisos

Imports DevExpress.XtraBars.Ribbon

Public Class ControlesPermisos
 

#Region "Declaraciones"

    Private Shared mDtListadoControles As New DataTable
    Private Shared WithEvents RibbonControl As DevExpress.XtraBars.Ribbon.RibbonControl
    Private Shared Solapas As DevExpress.XtraBars.Ribbon.RibbonPage
    Private Shared Grupo As DevExpress.XtraBars.Ribbon.RibbonPageGroup
    Private Shared Category As DevExpress.XtraBars.Ribbon.RibbonPageCategory
    Private Shared Boton As DevExpress.XtraBars.BarItemLink

#End Region

#Region "Funciones"

    Public Shared Sub RegistrarControles(ByRef unform As Form)
        Dim nombreControl As String
        Dim descripcionControl As String = "testing-Seguridad"
        Dim descripcionControlRibbon As String = "testing-Ribbon"

        'RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl
        'RibbonControl.Name = unControl.Name

        Solapas = New DevExpress.XtraBars.Ribbon.RibbonPage
        Grupo = New DevExpress.XtraBars.Ribbon.RibbonPageGroup
        Category = New DevExpress.XtraBars.Ribbon.RibbonPageCategory
        Dim sol As String = Category.Name

        Dim Ctrl As Control
        For i As Integer = 0 To unform.Controls.Count - 1
            Ctrl = unform.Controls.Item(i)
            If Ctrl.Name <> "" Then
                If TypeOf (Ctrl) Is DevExpress.XtraBars.Ribbon.RibbonControl Then
                    nombreControl = Ctrl.Name
                    'DesactivarElementosDelRibbon1(Ctrl, nombreControl)
                    SubRegistrarControles(Ctrl, unform)
                Else
                    nombreControl = Ctrl.Name
                    ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_INGRESAR_CONTROL_POR_APLICACION", My.Application.IDAPLICACION, nombreControl, descripcionControl)

                    'Ctrl.Visible = False
                    'Ctrl.Enabled = False
                End If
            End If

        Next
    End Sub
    '-------------------------------------------------------------------
    '-------------------------------------------------------------------

    Private Shared Sub SubRegistrarControles(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonControl, ByRef unform As Form)
        Dim A_siguiente As Boolean = True
        '************************************************************

        '************************************************************
        RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl
        RibbonControl.Name = unControl.Name
        Solapas = New DevExpress.XtraBars.Ribbon.RibbonPage
        Grupo = New DevExpress.XtraBars.Ribbon.RibbonPageGroup
        Category = New DevExpress.XtraBars.Ribbon.RibbonPageCategory

        For i As Integer = 0 To unform.Controls.Count - 1
            Dim descripcionControlRibbon As String = "Sin asignar. Aplicación: Seguridad"
            For Each Category In unControl.PageCategories                                                                                                   'Categorias

                Dim CTcontrol As String = Category.Name
                Dim CTcontrol_TAG As String = Convert.ToString(Category.Tag)
                If CTcontrol_TAG = "" Then
                    CTcontrol_TAG = descripcionControlRibbon
                    GrabarControl(CTcontrol, CTcontrol_TAG)
                Else
                    GrabarControl(CTcontrol, CTcontrol_TAG)
                End If

                For Each pagegroup As DevExpress.XtraBars.Ribbon.RibbonPage In Category.Pages                                                               'paginas

                    Dim CTgrupopage As String = pagegroup.Name
                    Dim CTPagegroup_TAG As String = Convert.ToString(pagegroup.Tag)
                    If CTPagegroup_TAG = "" Then
                        CTPagegroup_TAG = descripcionControlRibbon
                        GrabarControl(CTgrupopage, CTPagegroup_TAG)
                    Else
                        GrabarControl(CTgrupopage, CTPagegroup_TAG)
                    End If

                    For Each group As DevExpress.XtraBars.Ribbon.RibbonPageGroup In pagegroup.Groups                                                        'grupos de botones
                        Dim CTgrupoBBI As String = group.Name
                        Dim CTgrupoBBI_TAG As String = Convert.ToString(group.Tag)
                        If CTgrupoBBI_TAG = "" Then
                            CTgrupoBBI_TAG = descripcionControlRibbon
                            GrabarControl(CTgrupoBBI, CTgrupoBBI_TAG)
                        Else
                            GrabarControl(CTgrupoBBI, CTPagegroup_TAG)
                        End If

                        For io As Integer = 0 To pagegroup.Groups.Count - 1
                            If A_siguiente = True Then
                                For Each button As DevExpress.XtraBars.BarButtonItem In group.Ribbon.Items.OfType(Of DevExpress.XtraBars.BarButtonItem)()   'botones
                                    Dim CtBBI As String = button.Name
                                    Dim CtBBI_TAG As String = Convert.ToString(button.Tag)
                                    If button.Name <> "" Then
                                        If CtBBI_TAG = "" Then
                                            CtBBI_TAG = descripcionControlRibbon
                                            GrabarControl(CtBBI, CtBBI_TAG)
                                        Else
                                            GrabarControl(CtBBI, CtBBI_TAG)
                                        End If
                                        'ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_INGRESAR_CONTROL_POR_APLICACION", My.Application.IDAPLICACION, CtBBI, descripcionControlRibbon)
                                    End If
                                Next
                                A_siguiente = False
                            End If
                        Next
                    Next
                Next
            Next
        Next
    End Sub

    Private Shared Sub GrabarControl(ByVal Tcontrol As String, ByVal descCtrl As String)
        Dim evaluar As Boolean = True
        Dim T_control As String = Tcontrol
        Dim D_DescTctrl As String = descCtrl
        ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_INGRESAR_CONTROL_POR_APLICACION", My.Application.IDAPLICACION, T_control, D_DescTctrl)

    End Sub


    Public Shared Sub DesactivarControlesAplicacion(ByRef unForm As Form)
        Dim Ctrl As Control
        For i As Integer = 0 To unForm.Controls.Count - 1
            Ctrl = unForm.Controls.Item(i)
            If Ctrl.Name <> "" Then
                If TypeOf (Ctrl) Is DevExpress.XtraBars.Ribbon.RibbonControl Then
                    DesactivarElementosDelRibbon(Ctrl)
                Else
                    Ctrl.Visible = False
                    Ctrl.Enabled = False
                End If
            End If
        Next
    End Sub

    Private Shared Sub DesactivarElementosDelRibbon(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonControl)
        RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl
        RibbonControl.Name = unControl.Name
        Solapas = New DevExpress.XtraBars.Ribbon.RibbonPage
        Grupo = New DevExpress.XtraBars.Ribbon.RibbonPageGroup
        Category = New DevExpress.XtraBars.Ribbon.RibbonPageCategory
        'Boton = New DevExpress.XtraBars.BarItemLink
        For Each Solapas In unControl.Pages 'Recorro las solapas
            Solapas.Visible = False

            For Each Grupo In Solapas.Groups  'Los grupos
                Grupo.Visible = False
                Grupo.Enabled = False
                For Each Boton In Grupo.ItemLinks 'Los botones
                    Boton.Item.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
                    Boton.Item.Enabled = False
                Next
            Next
        Next
    End Sub

    Public Shared Sub ActivarControlesPorPefil(ByRef unForm As Form, ByVal unIdAplicacion As Integer, ByVal unIdPerfil As Integer)
        '2) Obtengo el listado de los controles habilitados POR PERFIL desde el sistema de seguridad
        mDtListadoControles = New DataTable
        mDtListadoControles = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_PERFIL", unIdAplicacion, unIdPerfil)
        If Not IsNothing(mDtListadoControles) Then
            Dim Ctrl As Control
            For i As Integer = 0 To unForm.Controls.Count - 1
                Ctrl = unForm.Controls.Item(i)
                If Ctrl.Name <> "" Then
                    Dim nombreControl As String = Ctrl.Name
                    If TypeOf (Ctrl) Is DevExpress.XtraBars.Ribbon.RibbonControl Then
                        RecorrerRibbon(Ctrl)
                    ElseIf TypeOf (Ctrl) Is DevExpress.XtraBars.Ribbon.RibbonStatusBar Then
                        ActivarControlPorSeguridad(Ctrl)
                    Else
                        ActivarControlPorSeguridad(Ctrl) 'Controles que no son de devexpress
                    End If
                End If
            Next
        End If
    End Sub

    Public Shared Sub ActivarControlesPorUsuario(ByRef unForm As Form, ByVal unIdAplicacion As Integer, ByVal unIdUsuario As Integer)
        '2) Obtengo el listado de los controles habilitados POR PERFIL desde el sistema de seguridad
        mDtListadoControles = New DataTable
        mDtListadoControles = ConexionSQL.EjecutarSP("SP_HERRAMIENTAS_SIGMA_SEGURIDAD_LISTADO_CONTROLES_POR_USUARIO", unIdAplicacion, unIdUsuario)
        If Not IsNothing(mDtListadoControles) Then
            Dim Ctrl As Control
            For i As Integer = 0 To unForm.Controls.Count - 1
                Ctrl = unForm.Controls.Item(i)
                If Ctrl.Name <> "" Then
                    Dim nombreControl As String = Ctrl.Name
                    If TypeOf (Ctrl) Is DevExpress.XtraBars.Ribbon.RibbonControl Then
                        RecorrerRibbon(Ctrl)
                    ElseIf TypeOf (Ctrl) Is DevExpress.XtraBars.Ribbon.RibbonStatusBar Then
                        ActivarControlPorSeguridad(Ctrl)
                    Else
                        ActivarControlPorSeguridad(Ctrl) 'Controles que no son de devexpress
                    End If
                End If
            Next
        End If
    End Sub

    Private Shared Sub RecorrerRibbon(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonControl)

        RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl
        RibbonControl.Name = unControl.Name
        Solapas = New DevExpress.XtraBars.Ribbon.RibbonPage
        Grupo = New DevExpress.XtraBars.Ribbon.RibbonPageGroup
        Category = New DevExpress.XtraBars.Ribbon.RibbonPageCategory

        For Each Category In unControl.PageCategories 'Categorias
            ActivarControlPorSeguridad(Category)
        Next
        For Each Solapas In unControl.Pages 'Recorro las solapas
            ActivarControlPorSeguridad(Solapas)

            For Each Grupo In Solapas.Groups  'Los grupos
                ActivarControlPorSeguridad(Grupo)
                For Each Boton In Grupo.ItemLinks 'Los botones
                    ActivarControlPorSeguridad(Boton)
                Next
            Next
        Next
    End Sub

    Private Shared Sub ActivarControlPorSeguridad(ByRef unControl As Control)
        For i As Integer = 0 To mDtListadoControles.Rows.Count - 1
            If unControl.Name = mDtListadoControles.Rows(i).Item("NOMBRECONTROL") Then
                unControl.Visible = mDtListadoControles.Rows(i).Item("VISIBLE")
                unControl.Enabled = mDtListadoControles.Rows(i).Item("ACTIVO")
                Exit Sub
            End If
        Next
    End Sub

    Private Shared Sub ActivarControlPorSeguridad(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonPage)
        For i As Integer = 0 To mDtListadoControles.Rows.Count - 1
            If unControl.Name = mDtListadoControles.Rows(i).Item("NOMBRECONTROL") Then
                unControl.Visible = mDtListadoControles.Rows(i).Item("VISIBLE")
                Exit Sub
            End If
        Next
    End Sub

    Private Shared Sub ActivarControlPorSeguridad(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonPageGroup)
        For i As Integer = 0 To mDtListadoControles.Rows.Count - 1
            If unControl.Name = mDtListadoControles.Rows(i).Item("NOMBRECONTROL") Then
                unControl.Visible = mDtListadoControles.Rows(i).Item("VISIBLE")
                unControl.Enabled = mDtListadoControles.Rows(i).Item("ACTIVO")
                Exit Sub
            End If
        Next
    End Sub

    Private Shared Sub ActivarControlPorSeguridad(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonPageCategory)
        For i As Integer = 0 To mDtListadoControles.Rows.Count - 1
            If unControl.Name = mDtListadoControles.Rows(i).Item("NOMBRECONTROL") Then
                unControl.Visible = mDtListadoControles.Rows(i).Item("VISIBLE")
                Exit Sub
            End If
        Next
    End Sub

    Private Shared Sub ActivarControlPorSeguridad(ByRef unControl As DevExpress.XtraBars.BarItemLink)
        For i As Integer = 0 To mDtListadoControles.Rows.Count - 1
            If unControl.Item.Name = mDtListadoControles.Rows(i).Item("NOMBRECONTROL") Then
                If mDtListadoControles.Rows(i).Item("VISIBLE") Then
                    unControl.Item.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
                Else
                    unControl.Item.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
                End If
                unControl.Item.Enabled = mDtListadoControles.Rows(i).Item("ACTIVO")
                Exit Sub
            End If
        Next
    End Sub

    Private Shared Sub ActivarControlPorSeguridad(ByRef unControl As DevExpress.XtraBars.Ribbon.RibbonStatusBar)
        For i As Integer = 0 To mDtListadoControles.Rows.Count - 1
            If unControl.Name = mDtListadoControles.Rows(i).Item("NOMBRECONTROL") Then
                unControl.Visible = mDtListadoControles.Rows(i).Item("VISIBLE")
                unControl.Enabled = mDtListadoControles.Rows(i).Item("ACTIVO")
                Exit Sub
            End If
        Next
    End Sub

#End Region


End Class

No hay comentarios:

Publicar un comentario

Los mail de oulook no se pueden reenviar.

 cuando en el asunto poseen un caracter especial por ejemplo @#$ los correos no salen y no te muestra ningun correo de rebote, especialmente...