View difference between Paste ID: mGNUw40j and 8Shj1J6z
SHOW: | | - or go back to the newest paste.
1
#Region "Page Load"
2
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
3
        pnlSelectOrg.Visible = True
4
        pnlEditOrg.Visible = False
5
        pnlOrgUsers.Visible = False
6
        pnlAddUser.Visible = False
7
8-
            ' Fill the DropDownList
8+
9
            BindOrgs()
10
        End If
11
12
        If ddlOrgs.SelectedItem.Text = "Please select an organization to edit" Then
13
            lnkEditOrg.Enabled = False
14
        End If
15-
    End Sub
15+
    End Sub
16
17
    Private Sub BindOrgs()
18
        If ddlOrgs.Items.Count = 0 Then
19
            ' We don't want to have an organization loaded from default so put a dummy item in the drop down list
20
            ddlOrgs.Items.Add("Please select an organization to edit")
21
        Else
22
            ddlOrgs.Items.Clear()
23
            ddlOrgs.Items.Add("Please select an organization to edit")
24
        End If
25
26
        ' Since binding the drop down list to the dataset is going to remove our dummy item, add items in a loop from
27
        ' the dataset
28
29
        Dim sql As String = "Select * from Organizations"
30
        dsOrg = d.GetDataSet(sql, "text")
31
        For i As Integer = 0 To dsOrg.Tables(0).Rows.Count - 1
32
            ddlOrgs.Items.Add(dsOrg.Tables(0).Rows(i)("OrganizationName"))
33
            ddlOrgs.Items(i + 1).Value = dsOrg.Tables(0).Rows(i)("OrganizationID")
34
        Next
35
    End Sub
36
#End Region
37
38
#Region "Organizations"
39
    Protected Sub ddlOrgs_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlOrgs.SelectedIndexChanged
40
        Dim targetOrg As Integer = CInt(ddlOrgs.SelectedItem.Value)
41
        Dim sql As String = _
42
                        "select * from Users as a " & _
43
                        "inner join OrgUsers as b on a.UserID = b.UserID where b.OrgID = " & ddlOrgs.SelectedItem.Value
44
        Dim drUsers As SqlDataReader = d.GetReader(sql)
45
        grdOrgUsers.DataSource = drUsers
46
        grdOrgUsers.DataBind()
47
        drUsers.Close()
48
49
        pnlOrgUsers.Visible = True
50
        GetOrgModules(ddlOrgs.SelectedItem.Value)
51
        pnlOrgModules.Visible = True
52
53
        lnkEditOrg.Enabled = True
54
        chkModules.Enabled = False
55
    End Sub
56
57
    Protected Sub lnkEditOrg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkEditOrg.Click
58
        txtModOrgName.Text = ddlOrgs.SelectedItem.Text
59
        pnlSelectOrg.Visible = False
60
        pnlEditOrg.Visible = True
61
        GetOrgModules(ddlOrgs.SelectedItem.Value)
62
        chkModules.Visible = True
63
        chkModules.Enabled = True
64
    End Sub
65
66
    Protected Sub lnkSaveModOrg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkSaveModOrg.Click
67
        ' Get the list of Modules selected for this organization
68
        Dim ModuleList As New List(Of Integer)
69
        For i As Integer = 0 To chkModules.Items.Count - 1
70
            If chkModules.Items(i).Selected Then
71
                ModuleList.Add(chkModules.Items(i).Value)
72
            End If
73
        Next
74
75
        ' Update the organization name (new/edit)
76
        If ddlOrgs.SelectedItem.Text = "Please select an organization to edit" Then
77
            lblError.Text = "Please select an organization to edit"
78
        ElseIf txtModOrgName.Text = ddlOrgs.SelectedItem.Text Then
79
            AddUpdateOrg(txtModOrgName.Text, "Update", ddlOrgs.SelectedItem.Value)
80
        Else
81
            AddUpdateOrg(txtModOrgName.Text, "Add")
82
        End If
83
84
        BindOrgs()
85
        chkModules.Enabled = False
86
        pnlOrgUsers.Visible = True
87
    End Sub
88
89
    Private Sub AddUpdateOrg(ByVal OrganizationName As String, ByVal Action As String, Optional ByVal Target As Integer = Nothing)
90
        ' Get the list of Modules selected for this organization
91
        Dim ModuleList As New List(Of Integer)
92
        For i As Integer = 0 To chkModules.Items.Count - 1
93
            If chkModules.Items(i).Selected Then
94
                ModuleList.Add(chkModules.Items(i).Value)
95
            End If
96
        Next
97
98
        Dim sql As String = Nothing
99
100
        Select Case Action
101
            Case "Add"
102
                sql = "insert into Organizations(OrganizationName) values ('" & OrganizationName & "')"
103
104
            Case "Update"
105
                sql = "update Organizations set OrganizationName = '" & OrganizationName & "') " & _
106
                    "where OrganizationID = " & Target
107
108
        End Select
109
110
        Dim dr As SqlDataReader = d.GetReader("select * from OrgModules where OrgID = " & Target)
111
        If dr.HasRows Then
112
            dr.Close()
113
            UpdateModules(Target, ModuleList, "update")
114
        Else
115
            dr.Close()
116
            UpdateModules(Target, ModuleList, "insert")
117
        End If
118
        d.DoCommand(sql)
119
    End Sub
120
121
    Private Sub UpdateModules(ByVal OrganizationID As Integer, ByVal ModuleList As List(Of Integer), ByVal Action As String)
122
        If Action = "insert" Then
123
            For i As Integer = 0 To ModuleList.Count - 1
124
                Dim sql As String = "insert into OrgModules(OrgID, ModuleID) values(" & OrganizationID & ", " & ModuleList.Item(i) & ")"
125
                d.DoCommand(sql)
126
            Next
127
        Else
128
            For i As Integer = 0 To ModuleList.Count - 1
129
                Dim sql As String = "update OrgModules set ModuleID = " & ModuleList.Item(i) & " where OrgID = " & OrganizationID
130
                d.DoCommand(sql)
131
            Next
132
        End If
133
134
        GetOrgModules(OrganizationID)
135
    End Sub
136
137
    Protected Sub lnkCancelModOrg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkCancelModOrg.Click
138
        pnlSelectOrg.Visible = True
139
        pnlOrgUsers.Visible = True
140
        pnlEditOrg.Visible = False
141
    End Sub
142
143
    Protected Sub lnkNewOrg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkNewOrg.Click
144
        pnlEditOrg.Visible = True
145
        pnlSelectOrg.Visible = False
146
    End Sub
147
148
    Private Sub GetOrgModules(ByVal OrganizationID As Integer)
149
        ' Clear all currently selected modules for this Organization
150
        Dim sql As String = "delete * from OrgModules where OrgID = " & OrganizationID
151
        d.DoCommand(sql)
152
153
        sql = "select ModuleID, ModuleName from Modules"
154
        Dim dr As SqlDataReader = d.GetReader(sql)
155
156
        chkModules.DataSource = dr
157
        chkModules.DataTextField = "ModuleName"
158
        chkModules.DataValueField = "ModuleID"
159
        chkModules.DataBind()
160
        dr.Close()
161
162
        sql = "select a.ModuleID, b.ModuleName from OrgModules as a" & vbCrLf & _
163
            "inner join Modules as b on a.ModuleID = b.ModuleID" & vbCrLf & _
164
            "where a.OrgID = " & OrganizationID
165
        Dim drMod = d.GetReader(sql)
166
        If drMod.HasRows Then
167
            chkModules.ClearSelection()
168
            While drMod.Read
169
                For i As Integer = 0 To chkModules.Items.Count - 1
170
                    If chkModules.Items(i).Value = drMod.GetValue(0) Then
171
                        chkModules.Items(i).Selected = True
172
                        Exit For
173
                    End If
174
                Next
175
            End While
176
            drMod.Close()
177
        Else
178
            chkModules.Visible = False
179
        End If
180
    End Sub
181
#End Region
182
183