Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Imports C1.Win.C1TrueDBGrid
Namespace TKB.VV.SLA
'''
''' Laden der Daten für die SLA-Katalogverwaltung
'''
'''
Public Class clsSLAKatalogdaten
Inherits TKB.VV.Sysadmin.DomainTable
Sub New(ByVal tblname As String)
MyBase.New(tblname)
End Sub
Public Overrides Sub Load_Data()
Tabledata.Tables.Clear()
Dim selectcommand As New SqlCommand
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
selectcommand.CommandText = Me.Select_Proc & "_Level"
selectcommand.Parameters.Add("@Mitarbeiternr", SqlDbType.Int, 4)
selectcommand.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
selectcommand.Parameters(0).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
selectcommand.Parameters(1).Value = 0
selectcommand.CommandType = CommandType.StoredProcedure
selectcommand.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = selectcommand
da.Fill(Tabledata, "Domaintable")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
selectcommand.Dispose()
End Try
End Sub
End Class
'''
''' TreeDatenklasse für den Servicekatalog-Tree
'''
'''
'''
Public Class clsServiceKatalogTree
Dim Treedata As New DataSet
Public fnt_Strikeout As Font
Public fnt_normal As Font
'''
''' Laden der Treedaten und Tree aufbauen
'''
'''
'''
'''
Public Function Load_Tree(ByRef tree As TreeView, Optional ByVal CheckState As Integer = 0)
Load_Treedata(CheckState)
tree.Nodes.Clear()
Load_Treeview(Treedata, tree)
tree.ExpandAll()
End Function
'''
''' Treedaten ab Datenbank laden
'''
'''
'''
Private Function Load_Treedata(ByVal Checkstate) As DataTable
Treedata.Tables.Clear()
Dim selectcommand As New SqlCommand
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
selectcommand.CommandText = "my_servicekatalog_struktur"
selectcommand.Parameters.Add("@Mitarbeiternr", SqlDbType.Int, 4)
selectcommand.Parameters.Add("@CheckState", SqlDbType.Int, 4)
selectcommand.Parameters(0).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
selectcommand.Parameters(1).Value = Checkstate
selectcommand.CommandType = CommandType.StoredProcedure
selectcommand.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = selectcommand
da.Fill(Treedata, "Tree")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
selectcommand.Dispose()
End Try
End Function
'''
''' Interne Relation aufbauen und Tree aufbauen
'''
'''
'''
'''
Private Sub Load_Treeview(ByVal oSourceData As DataSet, ByRef tree As TreeView)
If Not (oSourceData Is Nothing) Then
Dim oView As DataView = oSourceData.Tables(0).DefaultView
Dim oTable As DataTable = oView.Table
Dim oDS As DataSet = New DataSet()
oDS.Tables.Add(oTable.Copy())
If oDS.Relations.Contains("SelfRefenceRelation") = False Then
oDS.Relations.Add("SelfRefenceRelation", _
oDS.Tables(0).Columns("Servicekatalognr"), _
oDS.Tables(0).Columns("Parentid"))
End If
oTable.Dispose()
oTable = Nothing
LoadTreeView(oDS, tree)
oDS.Dispose()
oDS = Nothing
End If
End Sub
'''
''' Tree aufbauen
'''
'''
'''
'''
Private Sub LoadTreeView(ByVal oDS As DataSet, ByRef oTreeview As TreeView)
'Dim oTreeView As TreeView = New TreeView()
Dim oDataRow As DataRow
fnt_Strikeout = New System.Drawing.Font(oTreeview.Font.FontFamily, oTreeview.Font.Size, FontStyle.Strikeout)
fnt_normal = New System.Drawing.Font(oTreeview.Font.FontFamily, oTreeview.Font.Size, FontStyle.Regular)
For Each oDataRow In oDS.Tables(0).Rows
If Not oDataRow.IsNull("Parentid") Then
If oDataRow.Item("Parentid") = 0 Then
'If oDataRow.IsNull("Parentid") Then
Dim oNode As New TreeNode()
oNode.Text = oDataRow("Bezeichnung").ToString()
oNode.Tag = oDataRow("Servicekatalognr").ToString
oNode.SelectedImageIndex = 0
oNode.StateImageIndex = 0
oNode.ImageIndex = 0
If oDataRow("Aktiv") = False Then
oNode.NodeFont = fnt_Strikeout
End If
oTreeview.Nodes.Add(oNode)
RecursivelyLoadTree(oDataRow, oNode)
End If
End If
Next oDataRow
oDS.Dispose()
oDS = Nothing
End Sub
'''
''' Child-Nodes hinzufügen
'''
'''
'''
'''
Private Sub RecursivelyLoadTree(ByVal oDataRow As DataRow, ByRef oNode As TreeNode)
Dim oChildRow As DataRow
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
Dim oChildNode As New TreeNode()
oChildNode.Text = oChildRow("Bezeichnung").ToString()
oChildNode.Tag = oChildRow("Servicekatalognr").ToString()
If oChildRow("Aktiv") = False Then
oChildNode.NodeFont = fnt_Strikeout
End If
oNode.Nodes.Add(oChildNode)
RecursivelyLoadTree(oChildRow, oChildNode)
Next oChildRow
End Sub
'''
''' Images auf den Nodes des TreeVies setzen
'''
'''
'''
'''
Public Function Set_Images(ByRef tree As TreeView)
Dim tn As TreeNode
For Each tn In tree.Nodes
If tn.Nodes.Count > 0 Then
tn.ImageIndex = 0
tn.StateImageIndex = 0
tn.SelectedImageIndex = 0
Else
tn.ImageIndex = 1
tn.StateImageIndex = 1
tn.SelectedImageIndex = 1
End If
RecurseNodes(tn.Nodes)
Next
End Function
'''
''' Nodes rekursiv lesen
'''
'''
'''
'''
Private Function RecurseNodes(ByVal Node As TreeNodeCollection)
For Each tn As TreeNode In Node
If tn.Nodes.Count > 0 Then
tn.ImageIndex = 0
tn.StateImageIndex = 0
tn.SelectedImageIndex = 0
Else
tn.ImageIndex = 1
tn.StateImageIndex = 1
tn.SelectedImageIndex = 1
End If
RecurseNodes(tn.Nodes)
Next
End Function
End Class
Public Class clsServiceKatalogDaten
Inherits TKB.VV.DB.clsServiceKatalog
Public Vertragsbeziehungen As TKB.VV.Sysadmin.DomainTable
Public Function Insert_Katalogelement(ByVal Katalogname As String, ByVal parentid As String)
Dim dbkey As New TKB.VV.DB.clsMyKey_Tabelle
dbkey.cpMainConnectionProvider = Globals.conn
Dim newkey = dbkey.get_dbkey("Servicekatalog")
Me.iServiceKatalogNr = New SqlInt32(CType(newkey, Int32))
Me.iMandantnr = New SqlInt32(CType(Globals.clsmitarbeiter.iMandantnr.Value, Int32))
Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32))
Me.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
Me.bAktiv = New SqlBoolean(CType(True, Boolean))
Me.bExtern = New SqlBoolean(CType(False, Boolean))
Me.sBemerkung = New SqlString(CType("", String))
Me.sBezeichnung_intern = New SqlString(CType(Katalogname, String))
Me.sBezeichnung_extern = New SqlString(CType(Katalogname, String))
Me.iParentID = New SqlInt32(CType(parentid, Int32))
Me.iSecurityLevelNr = New SqlInt32(CType(0, Int32))
Me.cpMainConnectionProvider = Globals.conn
Globals.conn.OpenConnection()
Me.Insert()
Globals.conn.CloseConnection(True)
End Function
Public Function Save_Data()
Globals.conn.OpenConnection()
Me.Update()
Globals.conn.CloseConnection(True)
End Function
Public Function Get_Data(ByVal Servicekatalognr As Integer)
Me.cpMainConnectionProvider = Globals.conn
Globals.conn.OpenConnection()
Me.iServiceKatalogNr = New SqlInt32(CType(Servicekatalognr, Int32))
Me.SelectOne()
Globals.conn.CloseConnection(True)
End Function
Public Function Delete_Servicekatalog(Optional ByVal basenr As Integer = 0)
If basenr <> 0 Then
Get_Data(basenr)
End If
Me.cpMainConnectionProvider = Globals.conn
Me.bAktiv = New SqlBoolean(CType(False, Boolean))
Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32))
Globals.conn.OpenConnection()
Me.Update()
Globals.conn.CloseConnection(True)
End Function
'''
''' Services / Vertragsleistungen auslesen und dem Truedbgrid übergeben.
''' Ist im Feld Termin der Wert "01.01.1900" wird dieser durch NULL ersetzt
'''
''' TruedbGrid
''' Vertragselement, für welches die Dokumente ausgelesen werden
'''
'''
Public Function Get_Vertragsbeziehungen(ByRef c1data As C1TrueDBGrid, ByVal ServiceKatalogNr As Integer)
Vertragsbeziehungen = New TKB.VV.Sysadmin.DomainTable("Vertragsleistung", 1, Trim(Str(ServiceKatalogNr)), Globals.clsmitarbeiter.iMitarbeiternr.Value)
Dim i As Integer = 0
c1data.DataSource = Vertragsbeziehungen.Tabledata
c1data.DataMember = Vertragsbeziehungen.Tabledata.Tables(0).TableName
End Function
End Class
'''
''' TreeDatenklasse für den Servicekatalog-Tree
'''
'''
'''
Public Class clsServiceKatalogSLATree
Dim Treedata As New DataSet
'''
''' Laden der Treedaten und Tree aufbauen
'''
'''
'''
'''
Public Function Load_Tree(ByRef tree As TreeView)
tree.Enabled = False
Load_Treedata()
tree.Nodes.Clear()
LoadTreeView(Treedata, tree)
tree.ExpandAll()
tree.Enabled = True
End Function
'''
''' Treedaten ab Datenbank laden
'''
'''
'''
Private Function Load_Treedata() As DataTable
Dim selectcommand As New SqlCommand
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
selectcommand.CommandText = "my_servicekatalog_sla_struktur"
selectcommand.Parameters.Add("@Mitarbeiternr", SqlDbType.Int, 4)
selectcommand.Parameters(0).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
selectcommand.CommandType = CommandType.StoredProcedure
selectcommand.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = selectcommand
da.Fill(Treedata, "Tree")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
selectcommand.Dispose()
End Try
End Function
Private Function LoadTreeView(ByVal ds As DataSet, ByRef tree As TreeView)
Dim sroot As String = ""
Dim tchild As New TreeNode
Dim tchild1 As New TreeNode
Dim i As Integer
For i = 0 To ds.Tables(0).Rows.Count - 1
If sroot <> ds.Tables(0).Rows(i).Item(1) Then
tchild = tree.Nodes.Add(ds.Tables(0).Rows(i).Item(1))
tchild.Tag = 0
sroot = ds.Tables(0).Rows(i).Item(1)
End If
tchild1 = tchild.Nodes.Add(ds.Tables(0).Rows(i).Item(2))
tchild1.Tag = ds.Tables(0).Rows(i).Item(0)
Next
End Function
Public Function Set_Images(ByRef tree As TreeView)
Dim tn As TreeNode
For Each tn In tree.Nodes
MsgBox(tn.Parent.Text)
If tn.Nodes.Count > 0 Then
tn.ImageIndex = 1
tn.SelectedImageIndex = 2
Else
tn.ImageIndex = 3
End If
RecurseNodes(tn.Nodes)
Next
End Function
Private Function RecurseNodes(ByVal Node As TreeNodeCollection)
For Each tn As TreeNode In Node
If tn.Nodes.Count > 0 Then
tn.ImageIndex = 1
tn.SelectedImageIndex = 2
Else
tn.ImageIndex = 3
End If
RecurseNodes(tn.Nodes)
Next
End Function
End Class
Public Class clsSLA
Inherits TKB.VV.DB.clsSLA
Overloads Sub dispose()
Me.dispose()
End Sub
Public Function SelectAll_Active() As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.pr_sla_selectall_active"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn.scoDBConnection
Try
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("clsSlaKatalogDaten::SLA::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
End Class
End Namespace