Imports System.Data.SqlTypes
Imports System.Data.SqlClient
'''Servicekatalog-Verwaltung
'''TKB.VV.SLA.clsServiceKatalogDaten
'''TKB.VV.SLA.clsServiceKatalogSLATree
'''TKB.VV.Utils.Tabellenspalte
'''TKB.VV.Utils.MySecurity
'''TKB.VV.Utils.MyMessage
'''TKB.VV.Sysadmin.DomainTable
'''TKB.VV.SLA.clsServiceKatalogTree
'''TKB.VV.SLA
'''TKB.VV.Sysadmin
'''TKB.VV.Utils
Public Class frmServicekatalog
#Region "Deklarationen"
Dim Treeviewdata As New TKB.VV.SLA.clsServiceKatalogTree
Dim SLATreeviewdata As New TKB.VV.SLA.clsServiceKatalogSLATree
Dim Servicekatalogdaten As New TKB.VV.SLA.clsServiceKatalogDaten
Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte
Dim ServiceKatalogSLAKatalog As TKB.VV.Sysadmin.DomainTable
Dim sec As New TKB.VV.Utils.MySecurity
Dim msg As New TKB.VV.Utils.MyMessage
Dim FormReadonly As Boolean = False
Dim FormDataChanged As Boolean = False
Dim ForSelect As Boolean = False
Dim ServiceKatalognr As Integer = 0
Dim Vertragsleistungsnr As Integer = 0
Dim Neuer_Datensatz As Boolean = False
#End Region
#Region "Formular"
'''
''' Constructor New
'''
''' Optional ServicekatalogNr = -1
''' Optional Readonly = false
''' Optional SelectLeistung = falöse
''' Optional Vertragsleistungsnr = 0
''' Die otionalen Paramter Servicekatalognr, SelectLeistung und Vertragsleistungsnummer werden benötigt, um entweder ein
''' Leistungselement aus dem Vertragselement anzuzeigen bzw. ein Leistungselement auszuwählen
Sub New(Optional ByVal Servicekatalognr As Integer = -1, Optional ByVal FormReadonly As Boolean = False, Optional ByVal SelectLeistung As Boolean = False, Optional ByVal Vertragsleistungsnr As Integer = 0, Optional CreateNew as Boolean=False)
InitializeComponent()
Me.ServiceKatalognr = Servicekatalognr
Me.Vertragsleistungsnr = Vertragsleistungsnr
Me.FormReadonly = FormReadonly
If CreateNew Then
Me.Neuer_Datensatz = True
End If
Me.ForSelect = SelectLeistung
If Me.ForSelect = True Then Me.FormReadonly = True
End Sub
'''
''' Schliessen des Formulares
'''
'''
'''
'''
Private Sub frmServicekatalog_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.Neuer_Datensatz = True Then
Globals.MyEventHanlder.Keine_Leistung_Selektiert(Me.Vertragsleistungsnr)
End If
If Me.FormReadonly = True Then Exit Sub
check_changes()
End Sub
'''
''' Formular aufbauen
'''
'''
'''
''' Ist der Paramter SelectLeistung = True, werden die Update-Funktionen des Formulars unterdrückt, dafür werden die Funktionen für die Leistungsauswahl aktiviert
Private Sub frmServicekatalog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Treeviewdata.Load_Tree(Me.treeServiceKatalog, Me.cbselaktiv.CheckState)
'Treeviewdata.Set_Images(Me.treeServiceKatalog)
SLATreeviewdata.Load_Tree(Me.TreeSLA)
Load_Securitylevel()
sec.Set_Form_Security(Me)
Me.TSBtnSelect.Visible = False
Me.MenuSplitter.Visible = False
Me.LeistungÜbernehmenToolStripMenuItem.Visible = False
If Me.FormReadonly Then
Me.TSBtnSave.Visible = False
Me.TSBtnSelect.Visible = False
Me.TSBtnCopy.Visible = False
Me.TSBtnNew.Visible = False
Me.TSBtnDelete.Visible = False
Me.MenuSplitter.Visible = False
Me.LeistungÜbernehmenToolStripMenuItem.Visible = False
End If
If Me.ForSelect = True Then
Me.TSBtnSelect.Visible = True
Me.TSBtnNew.Visible = True
Me.TSBtnSelect.Visible = True
Me.TSBtnCopy.Visible = False
'Me.TSBtnNew.Visible = False
Me.TSBtnDelete.Visible = False
Me.MenuSplitter.Visible = True
Me.LeistungÜbernehmenToolStripMenuItem.Visible = True
End If
If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then
Me.FormReadonly = True
Me.ctxMenuTreeServiceKatalog.Enabled = False
If Me.ForSelect = True Then
Me.LeistungÜbernehmenToolStripMenuItem.Enabled = True
End If
Else
Me.FormReadonly = False
End If
If Me.ServiceKatalognr <> -1 Then
Me.treeServiceKatalog.Enabled = False
Me.treeServiceKatalog.SelectedNode = FindNode(Me.treeServiceKatalog.Nodes, ServiceKatalognr, "")
Me.treeServiceKatalog.Enabled = True
End If
If Me.FormReadonly Then sec.Set_Form_Readonly(Me)
End Sub
'''
''' Suchen eines Knoten Treeview
'''
''' Nodes des TreeView
''' Tag.Keyvalue
''' Node.Text als Suchbegriff
'''
'''
Public Function FindNode(ByVal _nodeCollection As TreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As TreeNode
Dim tmpNode As TreeNode
For Each _child As TreeNode In _nodeCollection
If _child.Tag = SearchVal Then Return _child
tmpNode = FindNode(_child.Nodes, SearchVal, SearchString)
If Not tmpNode Is Nothing Then
Return tmpNode
End If
Next
Return Nothing
End Function
'''
''' Laden der Securitylevel-Daten in die Combobox
'''
'''
Private Sub Load_Securitylevel()
Dim seclevel As New TKB.VV.DB.clsSecurityLevel
Dim secleveldata As New DataTable
seclevel.cpMainConnectionProvider = Globals.conn
Globals.conn.OpenConnection()
secleveldata = seclevel.SelectAll
Globals.conn.CloseConnection(True)
Me.cboxSecurityLevel.DataSource = secleveldata
Me.cboxSecurityLevel.DisplayMember = "Bezeichnung"
Me.cboxSecurityLevel.ValueMember = "SecurityLevelNr"
seclevel.Dispose()
End Sub
Private Sub Show_Data(ByVal Servicekatalognr As Integer)
Me.Servicekatalogdaten.Get_Data(Servicekatalognr)
Me.txtBezeichnung_intern.Text = Me.Servicekatalogdaten.sBezeichnung_intern.Value
Me.txtBezeichnung_extern.Text = Me.Servicekatalogdaten.sBezeichnung_extern.Value
Me.txtBemerkung.Text = Me.Servicekatalogdaten.sBemerkung.Value
Me.txtmutiert_am.Text = Me.Servicekatalogdaten.daMutiert_am.ToString
Me.txterstellt_am.Text = Me.Servicekatalogdaten.daErstellt_am.ToString
Me.txtMutierer.Text = Me.Servicekatalogdaten.iMutierer.Value
Me.cbaktiv.Checked = Me.Servicekatalogdaten.bAktiv.Value = True
Me.cbextern.Checked = Me.Servicekatalogdaten.bExtern.Value = True
Me.cboxSecurityLevel.SelectedValue = Me.Servicekatalogdaten.iSecurityLevelNr.Value
Me.FormDataChanged = False
If Me.Servicekatalogdaten.iParentID > 0 Then Me.cboxSecurityLevel.Enabled = False Else Me.cboxSecurityLevel.Enabled = True
Refresh_SLATable()
End Sub
'''
''' Prüfung, ob Verbindungstabelle geändert wurde.
'''
'''
Private Sub check_changes()
If Me.FormReadonly Then Exit Sub
Dim msgres As MsgBoxResult
If Me.ServiceKatalogSLAKatalog.Tabledata.HasChanges Then
msgres = msg.Show_MessageYesNo(5)
If msgres = MsgBoxResult.Yes Then
Me.ServiceKatalogSLAKatalog.Save_Data()
End If
End If
If Me.FormDataChanged Then
msgres = msg.Show_MessageYesNo(3)
If msgres = MsgBoxResult.Yes Then
save_katalogdata()
End If
End If
End Sub
Private Sub NeuerKatalogToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuerKatalogToolStripMenuItem.Click
Dim Katalogname As String = InputBox("Katalogname", "Neuer Katalog")
If Katalogname <> "" Then
Dim key As Integer = Me.Servicekatalogdaten.Insert_Katalogelement(Katalogname, 0)
Treeviewdata.Load_Tree(Me.treeServiceKatalog, Me.cbselaktiv.CheckState)
End If
End Sub
Private Sub NeueLeistungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeueLeistungToolStripMenuItem.Click
Dim Katalogname As String = InputBox("Leistungsname", "Neue Leistung")
If Katalogname <> "" Then
Dim key As Integer = Me.Servicekatalogdaten.Insert_Katalogelement(Katalogname, Me.treeServiceKatalog.SelectedNode.Tag)
Treeviewdata.Load_Tree(Me.treeServiceKatalog, Me.cbselaktiv.CheckState)
End If
End Sub
Private Sub save_katalogdata()
If Me.Servicekatalogdaten.bAktiv.Value = True And Me.cbaktiv.Checked = False Then
If msg.Show_MessageYesNo(700) = MsgBoxResult.No Then Exit Sub
End If
Me.Servicekatalogdaten.sBezeichnung_intern = New SqlString(CType(Me.txtBezeichnung_intern.Text, String))
Me.Servicekatalogdaten.sBezeichnung_extern = New SqlString(CType(Me.txtBezeichnung_extern.Text, String))
Me.Servicekatalogdaten.sBemerkung = New SqlString(CType(Me.txtBemerkung.Text, String))
Me.Servicekatalogdaten.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
Me.Servicekatalogdaten.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32))
Me.Servicekatalogdaten.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked, Boolean))
Me.Servicekatalogdaten.bExtern = New SqlBoolean(CType(Me.cbextern.Checked, Boolean))
Me.Servicekatalogdaten.iSecurityLevelNr = New SqlInt32(CType(Me.cboxSecurityLevel.SelectedValue, Int32))
Me.Servicekatalogdaten.Save_Data()
If Me.cbaktiv.Checked Then
Me.treeServiceKatalog.SelectedNode.NodeFont = Me.Treeviewdata.fnt_normal
Else
Me.Servicekatalogdaten.Delete_Servicekatalog()
Me.treeServiceKatalog.SelectedNode.NodeFont = Me.Treeviewdata.fnt_Strikeout
Delete_all_Childs(Me.treeServiceKatalog.SelectedNode.Nodes)
End If
End Sub
Private Sub Delete_all_Childs(ByVal nodes As TreeNodeCollection)
For Each tn As TreeNode In nodes
Me.Servicekatalogdaten.Delete_Servicekatalog(tn.Tag)
tn.NodeFont = Me.Treeviewdata.fnt_Strikeout
Delete_all_Childs(tn.Nodes)
Next
End Sub
Private Sub txtBezeichnung_intern_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtBezeichnung_intern.TextChanged, txtBezeichnung_extern.TextChanged, txtBemerkung.TextChanged, cbaktiv.CheckedChanged, cboxSecurityLevel.TextChanged, cbextern.CheckedChanged, cboxSecurityLevel.TextUpdate
If sender.name = "cbaktiv" Then
Try
If cbaktiv.Checked = True And Me.treeServiceKatalog.SelectedNode.Parent.NodeFont.Strikeout = True Then
Me.cbaktiv.Checked = False
msg.show_standardmessage(601, MsgBoxStyle.Critical)
Exit Sub
End If
Catch
End Try
End If
Me.FormDataChanged = True
End Sub
#End Region
#Region "TreeServiceKatalog"
Private Sub treeServiceKatalog_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles treeServiceKatalog.AfterSelect
Show_Data(Me.treeServiceKatalog.SelectedNode.Tag)
Refresh_Details()
End Sub
Private Sub treeServiceKatalog_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles treeServiceKatalog.MouseDown
Try
check_changes()
Dim selectPoint As New System.Drawing.Point()
Dim mouseEvents As MouseEventArgs
mouseEvents = e
selectPoint.Y = mouseEvents.Y
selectPoint.X = mouseEvents.X
Me.treeServiceKatalog.SelectedNode = Me.treeServiceKatalog.GetNodeAt(selectPoint)
If IsNothing(Me.treeServiceKatalog.SelectedNode) Then
Me.NeueLeistungToolStripMenuItem.Enabled = False
Else
If Me.TSBtnSave.Enabled = True Then Me.NeueLeistungToolStripMenuItem.Enabled = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
'Public Function FindNode(ByVal _nodeCollection As TreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As TreeNode
' Dim tmpNode As TreeNode
' For Each _child As TreeNode In _nodeCollection
' If _child.Tag = SearchVal Then Return _child
' tmpNode = FindNode(_child.Nodes, SearchVal, SearchString)
' If Not tmpNode Is Nothing Then
' Return tmpNode
' End If
' Next
' Return Nothing
'End Function
#End Region
#Region "SLA"
Private Sub Refresh_SLATable()
Try
check_changes()
Me.ServiceKatalogSLAKatalog.dispose()
Catch
End Try
Dim keyvalue As String = ""
keyvalue = Me.treeServiceKatalog.SelectedNode.Tag
Me.C1DatenSLA.Enabled = False
Me.ServiceKatalogSLAKatalog = New TKB.VV.Sysadmin.DomainTable("servicekatalog_slakatalog", keyvalue, Globals.clsmitarbeiter.iMitarbeiternr.Value)
Me.C1DatenSLA.DataSource = ServiceKatalogSLAKatalog.Tabledata
Me.C1DatenSLA.DataMember = ServiceKatalogSLAKatalog.Tabledata.Tables(0).TableName
Me.SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenSLA, "servicekatalog_slakatalog", Me.ServiceKatalogSLAKatalog.Tabledata)
Me.C1DatenSLA.Enabled = True
End Sub
'''
''' Bei inaktiven Einträgen Schrift "grau" setzen und durchstreichen
'''
'''
'''
'''
Private Sub C1Vertragselemente_FetchRowStyle(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs) Handles C1DatenSLA.FetchRowStyle
Try
If Me.C1DatenSLA.Columns("aktiv").CellValue(e.Row) = False Then
Dim FNT As Font = e.CellStyle.Font
e.CellStyle.Font = New Font(FNT, FontStyle.Strikeout)
e.CellStyle.ForeColor = Color.Gray
End If
Catch
End Try
End Sub
#End Region
#Region "SLA"
Private Sub TreeSLA_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeSLA.DoubleClick
If TreeSLA.SelectedNode.Tag <> 0 And Not Me.FormReadonly Then
Me.ServiceKatalogSLAKatalog.Insert_Bottom_Table("ServiceKatalognr", Me.treeServiceKatalog.SelectedNode.Tag, "slakatalognr", Me.TreeSLA.SelectedNode.Tag)
Me.ServiceKatalogSLAKatalog.Save_Data()
Refresh_SLATable()
End If
End Sub
#End Region
#Region "Toolstrip"
'''
''' Schliessen-Button
'''
'''
'''
'''
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
'''
''' Save Button
'''
'''
'''
'''
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
If Me.FormDataChanged Then
save_katalogdata()
Me.FormDataChanged = False
End If
End Sub
#End Region
#Region "Menu"
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.Close()
End Sub
#End Region
'''
''' Gewählter Servicekatalog übergeben
'''
'''
'''
'''
Private Sub TSBtnSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSelect.Click
Me.Neuer_Datensatz = False
Globals.MyEventHanlder.Leistung_Selektiert(Me.Vertragsleistungsnr, Me.treeServiceKatalog.SelectedNode.Tag)
Me.Close()
End Sub
'''
''' Context-Menueintrag im ctxMenuTreeServicekatalog für die Übernahme der Leistung
'''
'''
'''
'''
Private Sub LeistungÜbernehmenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LeistungÜbernehmenToolStripMenuItem.Click
TSBtnSelect_Click(sender, e)
End Sub
'''
''' Register-Wechsel im TabControl
'''
'''
'''
'''
Private Sub tabctrlDetails_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tabctrlDetails.SelectedIndexChanged
Refresh_Details()
End Sub
'''
''' Registerlaschen in TabCtrlDetails aktualisieren
'''
'''
Private Sub Refresh_Details()
Select Case Me.tabctrlDetails.SelectedTab.Text
Case "Vertragsbeziehungen"
Refresh_Vertragsbeziehungen()
Case Else
End Select
End Sub
#Region "Vertragsbeziehungen"
'''
''' Services aktualiseren
'''
'''
Private Sub Refresh_Vertragsbeziehungen()
Dim filtertext As String = "none"
Try
filtertext = Me.C1Vertragsbeziehungen.Columns("Aktiv").FilterText
Catch ex As Exception
End Try
Dim bm As Integer = 0
bm = Me.C1Vertragsbeziehungen.Bookmark
Me.C1Vertragsbeziehungen.Enabled = False
Me.Servicekatalogdaten.Get_Vertragsbeziehungen(Me.C1Vertragsbeziehungen, Me.treeServiceKatalog.SelectedNode.Tag)
Me.SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Vertragsbeziehungen, "Vertragsleistung_Servicekatalog", Me.Servicekatalogdaten.Vertragsbeziehungen.Tabledata)
sec.Set_Form_Security(Me)
If filtertext <> "none" Then Me.C1Vertragsbeziehungen.Columns("Aktiv").FilterText = filtertext
Try
Me.C1Vertragsbeziehungen.Bookmark = bm
Catch ex As Exception
End Try
Me.C1Vertragsbeziehungen.Enabled = True
End Sub
#End Region
Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click
If msg.Show_MessageYesNo(510) = MsgBoxResult.Yes Then
Me.cbaktiv.Checked = False
Me.save_katalogdata()
'Dim i As Integer = Me.treeServiceKatalog.SelectedNode.Tag
'Me.Servicekatalogdaten.Delete_Servicekatalog(Me.treeServiceKatalog.SelectedNode.Tag)
'Me.treeServiceKatalog.SelectedNode.NodeFont = Me.Treeviewdata.fnt_Strikeout
'Me.Delete_all_Childs(Me.treeServiceKatalog.SelectedNode.Nodes)
'Treeviewdata.Load_Tree(Me.treeServiceKatalog)
'Treeviewdata.Set_Images(Me.treeServiceKatalog)
'Me.treeServiceKatalog.SelectedNode = FindNode(Me.treeServiceKatalog.Nodes, i, "")
'Me.treeServiceKatalog.SelectedNode.NodeFont = Me.Treeviewdata.fnt_Strikeout
End If
End Sub
Private Sub BtnAddSLA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddSLA.Click
TreeSLA_DoubleClick(sender, e)
End Sub
Private Sub cbselaktiv_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbselaktiv.CheckStateChanged
Treeviewdata.Load_Tree(Me.treeServiceKatalog, Me.cbselaktiv.CheckState)
End Sub
Private Sub C1Vertragsbeziehungen_FetchRowStyle(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs) Handles C1Vertragsbeziehungen.FetchRowStyle
Try
If Me.C1Vertragsbeziehungen.Columns("aktiv").CellValue(e.Row) = False Then
Dim FNT As Font = e.CellStyle.Font
e.CellStyle.Font = New Font(FNT, FontStyle.Strikeout)
e.CellStyle.ForeColor = Color.Gray
End If
Catch
End Try
End Sub
'''
''' Neuer Service erfassen
'''
'''
'''
'''
Private Sub TSBtnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnNew.Click
Dim f As New frmServicekatalog
f.ShowDialog()
frmServicekatalog_Load(sender, e)
End Sub
End Class