Files
AVISO/Aviso/frmEintragTvNew.vb
2024-11-22 09:45:47 +01:00

771 lines
33 KiB
VB.net

Imports System.Data.SqlClient
Imports VERAG_PROG_ALLGEMEIN
Public Class frmEintragTvNew
Dim AvisoTvNewDAL As New cAvisoTvNewDAL()
Dim myAvisoTvNew As cAvisoTvNew
Dim hatAenderung As Boolean = False
Dim Neuanlage As Boolean = False
Dim list As New List(Of cAvisoTvNew)()
Dim listAll As New List(Of cAvisoTvNew)()
Private isInitializing As Boolean = False
Public Sub New()
InitializeComponent()
InitializeFontComboBoxes()
Icon = cMeineFunktionenAVISO.GetProgrammIcon()
End Sub
Private Sub frmEintragTvNew_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LadeStandorte()
LadeTvTextBezeichnungen()
LadenAlleEintraege()
grpWochentage.Enabled = chkIsRecurring.Checked
dgvAVISOTV.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dgvAVISOTV.MultiSelect = False
dtpStartDate.ShowCheckBox = True
dtpEndDate.ShowCheckBox = True
dtpStartTime.ShowCheckBox = True
dtpEndTime.ShowCheckBox = True
chkIsActive.Checked = True
End Sub
Private Sub LadenAlleEintraege()
Try
AvisoTvNewDAL.LesenAlleAvisoTvNew(listAll)
Catch ex As Exception
MessageBox.Show("Fehler beim Laden aller Einträge: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub LadeStandorte()
Dim standorte As New List(Of String)()
Try
Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError()
If conn Is Nothing Then
MessageBox.Show("Die Datenbankverbindung konnte nicht hergestellt werden.", "Verbindungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
Dim sql As String = "SELECT DISTINCT Standort FROM StandorteTV ORDER BY Standort"
Using cmd As New SqlCommand(sql, conn)
Using dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
Dim standort As String = Convert.ToString(dr("Standort"))
standorte.Add(standort)
End While
End Using
End Using
Catch ex As SqlException
MessageBox.Show("SQL Fehler beim Laden der Standorte: " & ex.Message, "SQL Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
MessageBox.Show("Allgemeiner Fehler beim Laden der Standorte: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
cbxStandort.Items.Clear()
cbxStandort.Items.AddRange(standorte.ToArray())
If cbxStandort.Items.Count > 0 Then cbxStandort.SelectedIndex = 0
End Sub
Private Sub initdgv()
Try
RemoveHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged
Dim standort As String = cbxStandort.SelectedItem?.ToString()
Dim showInactive As Boolean = chkShowInactive.Checked
Dim gefilterteListe As List(Of cAvisoTvNew)
If showInactive Then
gefilterteListe = list.Where(Function(x) x.Standort = standort).ToList()
Else
gefilterteListe = list.Where(Function(x) x.Standort = standort AndAlso x.IsActive).ToList()
End If
dgvAVISOTV.DataSource = Nothing
dgvAVISOTV.Rows.Clear()
If gefilterteListe.Count > 0 Then
dgvAVISOTV.DataSource = gefilterteListe
dgvAVISOTV.Columns("TvTextBezeichnungID").HeaderText = "ID"
dgvAVISOTV.Columns("TvTextBezeichnung").HeaderText = "Bezeichnung"
dgvAVISOTV.Columns("FixeZeile1RTF").HeaderText = "Zeile 1"
dgvAVISOTV.Columns("FixeZeile2").HeaderText = "Zeile 2"
dgvAVISOTV.Columns("FixeZeile3").HeaderText = "Zeile 3"
dgvAVISOTV.Columns("Standort").Visible = False
dgvAVISOTV.Columns("Art").Visible = False
dgvAVISOTV.Columns("StartDate").HeaderText = "Startdatum"
dgvAVISOTV.Columns("EndDate").HeaderText = "Enddatum"
dgvAVISOTV.Columns("StartTime").HeaderText = "Startzeit"
dgvAVISOTV.Columns("EndTime").HeaderText = "Endzeit"
dgvAVISOTV.Columns("IsRecurring").HeaderText = "Wiederholen"
dgvAVISOTV.Columns("IsActive").HeaderText = "Aktiv"
dgvAVISOTV.Columns("IsMonday").Visible = False
dgvAVISOTV.Columns("IsTuesday").Visible = False
dgvAVISOTV.Columns("IsWednesday").Visible = False
dgvAVISOTV.Columns("IsThursday").Visible = False
dgvAVISOTV.Columns("IsFriday").Visible = False
dgvAVISOTV.Columns("IsSaturday").Visible = False
dgvAVISOTV.Columns("IsSunday").Visible = False
dgvAVISOTV.AutoResizeColumns()
AddHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged
If dgvAVISOTV.Rows.Count > 0 Then
dgvAVISOTV.Rows(0).Selected = True
dgvAVISOTV.CurrentCell = dgvAVISOTV.Rows(0).Cells(0)
dgvAVISOTV_SelectionChanged(Nothing, Nothing)
End If
Else
AddHandler dgvAVISOTV.SelectionChanged, AddressOf dgvAVISOTV_SelectionChanged
ClearFields()
myAvisoTvNew = Nothing
End If
Neuanlage = False
hatAenderung = False
Catch ex As Exception
MessageBox.Show("Fehler beim Laden der Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub cbxStandort_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxStandort.SelectedValueChanged
If list IsNot Nothing Then list.Clear()
Dim selectedStandort As String = If(cbxStandort.SelectedItem IsNot Nothing, cbxStandort.SelectedItem.ToString(), "")
Try
AvisoTvNewDAL.LesenAvisoTvNew(0, "", selectedStandort, list)
Catch ex As Exception
MessageBox.Show("Fehler beim Lesen der Einträge: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End Try
LadeTvTextBezeichnungen()
initdgv()
End Sub
Private Sub btnNeu_Click(sender As Object, e As EventArgs)
Dim standort As String = cbxStandort.SelectedItem?.ToString()
If String.IsNullOrEmpty(standort) Then
MessageBox.Show("Bitte wählen Sie einen Standort aus.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return
End If
Dim standortID As Integer = AvisoTvNewDAL.GetStandortID(standort)
If standortID = 0 Then
MessageBox.Show("Ungültiger Standort ausgewählt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
myAvisoTvNew = New cAvisoTvNew() With {
.StandortID = standortID,
.Standort = standort,
.Art = "",
.IsActive = True
}
cmbTvTextBezeichnungAuswahl.SelectedIndex = -1
txtNeueTvTextBezeichnung.Text = ""
Neuanlage = True
hatAenderung = False
Me.Text = "Neuen Eintrag hinzufügen"
End Sub
Public Class ComboBoxItem
Public Property ID As Integer
Public Property DisplayText As String
Public Overrides Function ToString() As String
Return DisplayText
End Function
End Class
Private Sub cmbTvTextBezeichnungAuswahl_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTvTextBezeichnungAuswahl.SelectedIndexChanged
If isInitializing Then
Return
End If
If cmbTvTextBezeichnungAuswahl.SelectedValue Is Nothing OrElse cmbTvTextBezeichnungAuswahl.SelectedValue Is DBNull.Value Then
Return
End If
Try
Dim selectedTvTextBezeichnungID As Integer
Try
selectedTvTextBezeichnungID = Convert.ToInt32(cmbTvTextBezeichnungAuswahl.SelectedValue)
Debug.WriteLine("Selected TvTextBezeichnungID: " & selectedTvTextBezeichnungID)
Catch ex As Exception
MessageBox.Show("Ungültiger Wert für TvTextBezeichnungID: " & ex.Message, "Konvertierungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End Try
If listAll Is Nothing OrElse Not listAll.Any() Then
MessageBox.Show("Die Liste aller AvisoEinträge ist nicht geladen oder leer.", "Datenfehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
Dim selectedAviso As cAvisoTvNew = listAll.FirstOrDefault(Function(x) x.TvTextBezeichnungID = selectedTvTextBezeichnungID AndAlso x.IsActive)
Dim currentStandort As String = cbxStandort.SelectedItem?.ToString()
Dim currentStandortID As Integer = AvisoTvNewDAL.GetStandortID(currentStandort)
If selectedAviso IsNot Nothing Then
Debug.WriteLine("Gefundenes Aviso: TVID = " & selectedAviso.TVID)
myAvisoTvNew = selectedAviso
Neuanlage = False
FillFieldsFromAviso(selectedAviso)
Me.Text = "Eintrag bearbeiten"
txtNeueTvTextBezeichnung.Text = ""
Else
Debug.WriteLine("Kein bestehender Eintrag gefunden. Neuer Eintrag wird erstellt.")
myAvisoTvNew = New cAvisoTvNew() With {
.IsActive = True,
.StandortID = currentStandortID,
.Standort = currentStandort
}
Neuanlage = True
Me.Text = "Neuen Eintrag hinzufügen"
End If
Catch ex As InvalidCastException
MessageBox.Show("Fehler beim Konvertieren der TvTextBezeichnungID: " & ex.Message, "Konvertierungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
MessageBox.Show("Ein unerwarteter Fehler ist aufgetreten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub InitializeFontComboBoxes()
Dim fontFamilies As New List(Of String)()
For Each font As FontFamily In FontFamily.Families
fontFamilies.Add(font.Name)
Next
cmbFontFamily.DataSource = fontFamilies
cmbFontFamily.SelectedItem = rtbZeile1.Font.FontFamily.Name
Dim sizes As Integer() = {8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72}
cmbFontSize.DataSource = sizes.Select(Function(s) s.ToString()).ToList()
cmbFontSize.SelectedItem = CInt(rtbZeile1.Font.Size).ToString()
AddHandler cmbFontFamily.SelectedIndexChanged, AddressOf cmbFontFamily_SelectedIndexChanged
AddHandler cmbFontSize.SelectedIndexChanged, AddressOf cmbFontSize_SelectedIndexChanged
End Sub
' Schriftfamilie ComboBox SelectionChanged
Private Sub cmbFontFamily_SelectedIndexChanged(sender As Object, e As EventArgs)
UpdateFont()
End Sub
' Schriftgröße ComboBox SelectionChanged
Private Sub cmbFontSize_SelectedIndexChanged(sender As Object, e As EventArgs)
UpdateFont()
End Sub
Private Sub UpdateFont()
Dim selectedFontFamily As String = If(cmbFontFamily.SelectedItem, rtbZeile1.Font.FontFamily.Name)
Dim selectedFontSize As Single
If Single.TryParse(cmbFontSize.SelectedItem, selectedFontSize) Then
rtbZeile1.Font = New Font(selectedFontFamily, selectedFontSize, rtbZeile1.Font.Style)
hatAenderung = True
End If
End Sub
' Methode zum Umschalten des Schriftstils
Private Sub ToggleFontStyle(style As FontStyle)
If rtbZeile1.SelectionFont IsNot Nothing Then
Dim currentFont As Font = rtbZeile1.SelectionFont
Dim newFontStyle As FontStyle
If rtbZeile1.SelectionFont.Style.HasFlag(style) Then
' Entferne den Stil
newFontStyle = currentFont.Style And Not style
Else
' Füge den Stil hinzu
newFontStyle = currentFont.Style Or style
End If
' Setze die neue Schriftart
rtbZeile1.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size, newFontStyle)
hatAenderung = True
End If
End Sub
' Fett (Bold) Button Click
Private Sub btnBold_Click(sender As Object, e As EventArgs) Handles btnBold.Click
ToggleFontStyle(FontStyle.Bold)
End Sub
' Kursiv (Italic) Button Click
Private Sub btnItalic_Click(sender As Object, e As EventArgs) Handles btnItalic.Click
ToggleFontStyle(FontStyle.Italic)
End Sub
' Unterstrichen (Underline) Button Click
Private Sub btnUnderline_Click(sender As Object, e As EventArgs) Handles btnUnderline.Click
ToggleFontStyle(FontStyle.Underline)
End Sub
' Textfarbe ändern Button Click
Private Sub btnTextColor_Click(sender As Object, e As EventArgs) Handles btnTextColor.Click
If colorDialogText.ShowDialog() = DialogResult.OK Then
rtbZeile1.SelectionColor = colorDialogText.Color
hatAenderung = True
End If
End Sub
' Hintergrundfarbe ändern Button Click
Private Sub btnBackColor_Click(sender As Object, e As EventArgs) Handles btnBackColor.Click
If colorDialogText.ShowDialog() = DialogResult.OK Then
rtbZeile1.SelectionBackColor = colorDialogText.Color
hatAenderung = True
End If
End Sub
' Links ausrichten Button Click
Private Sub btnAlignLeft_Click(sender As Object, e As EventArgs) Handles btnAlignLeft.Click
rtbZeile1.SelectionAlignment = HorizontalAlignment.Left
hatAenderung = True
End Sub
' Mitte ausrichten Button Click
Private Sub btnAlignCenter_Click(sender As Object, e As EventArgs) Handles btnAlignCenter.Click
rtbZeile1.SelectionAlignment = HorizontalAlignment.Center
hatAenderung = True
End Sub
' Rechts ausrichten Button Click
Private Sub btnAlignRight_Click(sender As Object, e As EventArgs) Handles btnAlignRight.Click
rtbZeile1.SelectionAlignment = HorizontalAlignment.Right
hatAenderung = True
End Sub
Private Sub LadeTvTextBezeichnungen()
isInitializing = True
Dim bezeichnungen As New List(Of cTvTextBezeichnung)()
Try
bezeichnungen = AvisoTvNewDAL.LadenAlleTvTextBezeichnungen()
Catch ex As Exception
MessageBox.Show("Fehler beim Laden der TvTextBezeichnungen: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
isInitializing = False
Return
End Try
Dim items As New List(Of ComboBoxItem)()
For Each bezeichnung In bezeichnungen
items.Add(New ComboBoxItem() With {
.ID = bezeichnung.TvTextBezeichnungID,
.DisplayText = bezeichnung.TvTextBezeichnung
})
Next
cmbTvTextBezeichnungAuswahl.DataSource = items
cmbTvTextBezeichnungAuswahl.DisplayMember = "DisplayText"
cmbTvTextBezeichnungAuswahl.ValueMember = "ID"
cmbTvTextBezeichnungAuswahl.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
cmbTvTextBezeichnungAuswahl.SelectedIndex = -1
cmbPosition.SelectedIndex = -1
isInitializing = False
Debug.WriteLine("TvTextBezeichnungen geladen:")
For Each item In items
Debug.WriteLine($"ID: {item.ID}, Text: {item.DisplayText}")
Next
End Sub
Private Sub txtNeueTvTextBezeichnung_TextChanged(sender As Object, e As EventArgs) Handles txtNeueTvTextBezeichnung.TextChanged
If Not String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then
cmbTvTextBezeichnungAuswahl.SelectedIndex = -1
myAvisoTvNew = New cAvisoTvNew() With {
.TvTextBezeichnung = txtNeueTvTextBezeichnung.Text.Trim(),
.IsActive = True
}
Neuanlage = True
Me.Text = "Neuen Eintrag hinzufügen"
End If
End Sub
Private Sub FillFieldsFromAviso(ByVal aviso As cAvisoTvNew)
cmbTvTextBezeichnungAuswahl.SelectedValue = aviso.TvTextBezeichnungID
If Not String.IsNullOrEmpty(aviso.Position) Then
cmbPosition.SelectedItem = aviso.Position
Else
cmbPosition.SelectedIndex = -1
End If
txtNeueTvTextBezeichnung.Text = ""
' Hier setzt du die Textzeilen, wenn vorhanden
rtbZeile1.Rtf = aviso.FixeZeile1RTF
txtZeile2.Text = aviso.FixeZeile2
txtZeile3.Text = aviso.FixeZeile3
chkIsRecurring.Checked = aviso.IsRecurring.GetValueOrDefault(False)
If aviso.StartDate.HasValue Then
dtpStartDate.Value = aviso.StartDate.Value
dtpStartDate.Checked = True
Else
dtpStartDate.Value = DateTime.Now
dtpStartDate.Checked = False
End If
If aviso.EndDate.HasValue Then
dtpEndDate.Value = aviso.EndDate.Value
dtpEndDate.Checked = True
Else
dtpEndDate.Value = DateTime.Now
dtpEndDate.Checked = False
End If
If aviso.StartTime.HasValue Then
dtpStartTime.Value = DateTime.Today.Add(aviso.StartTime.Value)
dtpStartTime.Checked = True
Else
dtpStartTime.Value = DateTime.Now
dtpStartTime.Checked = False
End If
If aviso.EndTime.HasValue Then
dtpEndTime.Value = DateTime.Today.Add(aviso.EndTime.Value)
dtpEndTime.Checked = True
Else
dtpEndTime.Value = DateTime.Now
dtpEndTime.Checked = False
End If
chkMonday.Checked = aviso.IsMonday.GetValueOrDefault(False)
chkTuesday.Checked = aviso.IsTuesday.GetValueOrDefault(False)
chkWednesday.Checked = aviso.IsWednesday.GetValueOrDefault(False)
chkThursday.Checked = aviso.IsThursday.GetValueOrDefault(False)
chkFriday.Checked = aviso.IsFriday.GetValueOrDefault(False)
chkSaturday.Checked = aviso.IsSaturday.GetValueOrDefault(False)
chkSunday.Checked = aviso.IsSunday.GetValueOrDefault(False)
chkIsActive.Checked = aviso.IsActive
' Text-Einstellungen anwenden
cmbFontFamily.SelectedItem = aviso.FontFamily
cmbFontSize.SelectedItem = aviso.FontSize.ToString()
rtbZeile1.SelectionFont = New Font(aviso.FontFamily, aviso.FontSize, CType([Enum].Parse(GetType(FontStyle), aviso.FontStyle), FontStyle))
rtbZeile1.SelectionColor = Color.FromName(aviso.TextColor)
rtbZeile1.BackColor = Color.FromName(aviso.BackColor)
Select Case aviso.TextAlignment
Case "Left"
rtbZeile1.SelectionAlignment = HorizontalAlignment.Left
Case "Center"
rtbZeile1.SelectionAlignment = HorizontalAlignment.Center
Case "Right"
rtbZeile1.SelectionAlignment = HorizontalAlignment.Right
Case Else
rtbZeile1.SelectionAlignment = HorizontalAlignment.Left
End Select
grpWochentage.Enabled = chkIsRecurring.Checked
End Sub
Private Function ConvertRtfToHtml(rtf As String) As String
Using rtb As New RichTextBox()
rtb.Rtf = rtf
Dim sb As New System.Text.StringBuilder()
' Initialisiere die HTML-Struktur
sb.Append("<html><body>")
Dim currentFont As System.Drawing.Font = rtb.SelectionFont
Dim currentColor As Color = rtb.SelectionColor
Dim currentAlignment As HorizontalAlignment = rtb.SelectionAlignment
Dim text As String = rtb.Text
Dim index As Integer = 0
While index < text.Length
rtb.Select(index, 1)
Dim font As System.Drawing.Font = rtb.SelectionFont
Dim color As Color = rtb.SelectionColor
Dim alignment As HorizontalAlignment = rtb.SelectionAlignment
' Beginne neue Tags, wenn sich das Format ändert
If font IsNot currentFont Then
' Schließe vorherige Font-Tags
If currentFont IsNot Nothing Then
sb.Append("</span></span>")
End If
' Öffne neue Font-Tags
sb.Append("<span style=""font-family:" & font.FontFamily.Name & "; font-size:" & font.Size.ToString() & "pt;"">")
sb.Append("<span style=""color:" & color.Name & ";"">")
currentFont = font
currentColor = color
End If
If alignment <> currentAlignment Then
' Schließe vorherige Ausrichtung
Select Case currentAlignment
Case HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
sb.Append("</div>")
End Select
' Öffne neue Ausrichtung
Select Case alignment
Case HorizontalAlignment.Left
sb.Append("<div style=""text-align:left;"">")
Case HorizontalAlignment.Center
sb.Append("<div style=""text-align:center;"">")
Case HorizontalAlignment.Right
sb.Append("<div style=""text-align:right;"">")
End Select
currentAlignment = alignment
End If
' Füge das aktuelle Zeichen hinzu (HTML-encodiert)
Dim currentChar As Char = text(index)
Select Case currentChar
Case "<"
sb.Append("&lt;")
Case ">"
sb.Append("&gt;")
Case "&"
sb.Append("&amp;")
Case Else
sb.Append(currentChar)
End Select
index += 1
End While
' Schließe verbleibende Tags
If currentFont IsNot Nothing Then
sb.Append("</span></span>")
End If
Select Case currentAlignment
Case HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
sb.Append("</div>")
End Select
sb.Append("</body></html>")
Return sb.ToString()
End Using
End Function
Private Sub btnSpeichern_Click(sender As Object, e As EventArgs) Handles btnSpeichern.Click
Dim verwendeteTvTextBezeichnung As String = ""
Dim isNeueTvTextBezeichnung As Boolean = False
Dim currentStandort As String = cbxStandort.SelectedItem?.ToString()
Dim currentStandortID As Integer = 0
If Not String.IsNullOrEmpty(currentStandort) Then
currentStandortID = AvisoTvNewDAL.GetStandortID(currentStandort)
End If
If currentStandortID = 0 Then
MessageBox.Show("Ungültiger Standort ausgewählt.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
Dim selectedTvTextBezeichnungID As Integer = 0
If cmbTvTextBezeichnungAuswahl.SelectedIndex >= 0 AndAlso String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then
verwendeteTvTextBezeichnung = cmbTvTextBezeichnungAuswahl.Text
selectedTvTextBezeichnungID = Convert.ToInt32(cmbTvTextBezeichnungAuswahl.SelectedValue)
ElseIf Not String.IsNullOrWhiteSpace(txtNeueTvTextBezeichnung.Text) Then
verwendeteTvTextBezeichnung = txtNeueTvTextBezeichnung.Text.Trim()
isNeueTvTextBezeichnung = True
Else
MessageBox.Show("Bitte wählen Sie eine TvTextBezeichnung aus oder geben Sie eine neue TvTextBezeichnung ein.", "Eingabefehler", MessageBoxButtons.OK, MessageBoxIcon.Warning)
cmbTvTextBezeichnungAuswahl.Focus()
Exit Sub
End If
Try
' Konvertiere RTF zu HTML
Dim rtfContent As String = rtbZeile1.Rtf
Dim htmlContent As String = ConvertRtfToHtml(rtfContent)
myAvisoTvNew.TvTextBezeichnung = verwendeteTvTextBezeichnung
myAvisoTvNew.StandortID = currentStandortID
If cmbPosition.SelectedIndex >= 0 Then
myAvisoTvNew.Position = cmbPosition.SelectedItem.ToString()
Else
myAvisoTvNew.Position = Nothing
End If
If isNeueTvTextBezeichnung Then
If AvisoTvNewDAL.IstTvTextBezeichnungVorhanden(myAvisoTvNew.TvTextBezeichnung) Then
MessageBox.Show("Die TvTextBezeichnung ist vorhanden. Bitte wählen Sie eine eindeutige TvTextBezeichnung.", "Eingabefehler", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtNeueTvTextBezeichnung.Focus()
Exit Sub
End If
Else
myAvisoTvNew.TvTextBezeichnungID = selectedTvTextBezeichnungID
End If
' Speichere den HTML-Inhalt
myAvisoTvNew.FixeZeile1RTF = If(String.IsNullOrWhiteSpace(rtbZeile1.Text), Nothing, rtfContent)
myAvisoTvNew.FixeZeile1HTML = If(String.IsNullOrWhiteSpace(rtbZeile1.Text), Nothing, htmlContent)
myAvisoTvNew.FixeZeile2 = If(String.IsNullOrWhiteSpace(txtZeile2.Text), Nothing, txtZeile2.Text.Trim())
myAvisoTvNew.FixeZeile3 = If(String.IsNullOrWhiteSpace(txtZeile3.Text), Nothing, txtZeile3.Text.Trim())
myAvisoTvNew.IsRecurring = chkIsRecurring.Checked
myAvisoTvNew.StartDate = If(dtpStartDate.Checked, CType(dtpStartDate.Value.Date, Date?), Nothing)
myAvisoTvNew.EndDate = If(dtpEndDate.Checked, CType(dtpEndDate.Value.Date, Date?), Nothing)
myAvisoTvNew.StartTime = If(dtpStartTime.Checked, CType(dtpStartTime.Value.TimeOfDay, TimeSpan?), Nothing)
myAvisoTvNew.EndTime = If(dtpEndTime.Checked, CType(dtpEndTime.Value.TimeOfDay, TimeSpan?), Nothing)
myAvisoTvNew.IsMonday = chkMonday.Checked
myAvisoTvNew.IsTuesday = chkTuesday.Checked
myAvisoTvNew.IsWednesday = chkWednesday.Checked
myAvisoTvNew.IsThursday = chkThursday.Checked
myAvisoTvNew.IsFriday = chkFriday.Checked
myAvisoTvNew.IsSaturday = chkSaturday.Checked
myAvisoTvNew.IsSunday = chkSunday.Checked
myAvisoTvNew.IsActive = chkIsActive.Checked
If Neuanlage Then
myAvisoTvNew.Standort = cbxStandort.SelectedItem?.ToString()
If String.IsNullOrEmpty(myAvisoTvNew.Standort) Then
MessageBox.Show("Bitte wählen Sie einen Standort aus.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return
End If
End If
Debug.WriteLine($"Speichern: TVID = {myAvisoTvNew.TVID}, TvTextBezeichnungID = {myAvisoTvNew.TvTextBezeichnungID}, StandortID = {myAvisoTvNew.StandortID}")
' Speichern der Einstellungen
AvisoTvNewDAL.SpeichernAvisoTvNew(myAvisoTvNew)
LadeTvTextBezeichnungen()
list.Clear()
AvisoTvNewDAL.LesenAvisoTvNew(0, "", currentStandort, list)
initdgv()
hatAenderung = False
If isNeueTvTextBezeichnung Then
MessageBox.Show("Die neue TvTextBezeichnung wurde erfolgreich gespeichert.", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
cmbTvTextBezeichnungAuswahl.SelectedValue = myAvisoTvNew.TvTextBezeichnungID
txtNeueTvTextBezeichnung.Text = ""
Else
MessageBox.Show("Die Änderungen wurden erfolgreich gespeichert.", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Fehler beim Speichern der Daten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnLoeschen_Click(sender As Object, e As EventArgs) Handles btnLoeschen.Click
If myAvisoTvNew Is Nothing OrElse myAvisoTvNew.TVID = 0 Then
MessageBox.Show("Bitte wählen Sie einen Eintrag zum Deaktivieren aus.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
Dim antwort As DialogResult = MessageBox.Show("Möchten Sie den ausgewählten Eintrag wirklich deaktivieren?", "Deaktivieren bestätigen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
If antwort = DialogResult.Yes Then
Try
AvisoTvNewDAL.SetzeAufInaktiv(myAvisoTvNew.TVID)
list.Clear()
AvisoTvNewDAL.LesenAvisoTvNew(0, "", cbxStandort.SelectedItem?.ToString(), list)
initdgv()
ClearFields()
myAvisoTvNew = Nothing
Neuanlage = False
hatAenderung = False
MessageBox.Show("Der Eintrag wurde erfolgreich deaktiviert.", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Fehler beim Deaktivieren des Eintrags: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Private Sub dgvAVISOTV_SelectionChanged(sender As Object, e As EventArgs) Handles dgvAVISOTV.SelectionChanged
If dgvAVISOTV.CurrentRow IsNot Nothing AndAlso dgvAVISOTV.CurrentRow.DataBoundItem IsNot Nothing Then
Dim selectedAviso As cAvisoTvNew = CType(dgvAVISOTV.CurrentRow.DataBoundItem, cAvisoTvNew)
If selectedAviso IsNot Nothing Then
myAvisoTvNew = selectedAviso
FillFieldsFromAviso(selectedAviso)
Neuanlage = False
hatAenderung = False
Me.Text = "Eintrag bearbeiten"
End If
End If
End Sub
Private Sub btnAbbrechen_Click(sender As Object, e As EventArgs) Handles btnAbbrechen.Click
If hatAenderung Then
Dim antwort As DialogResult = MessageBox.Show("Es liegen ungespeicherte Änderungen vor. Möchten Sie das Fenster trotzdem schließen?", "Ungespeicherte Änderungen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
If antwort = DialogResult.No Then Exit Sub
End If
Me.Close()
End Sub
Private Sub txt_TextChanged(sender As Object, e As EventArgs) Handles rtbZeile1.TextChanged, txtZeile2.TextChanged, txtZeile3.TextChanged, dtpStartDate.ValueChanged, dtpEndDate.ValueChanged, dtpStartTime.ValueChanged, dtpEndTime.ValueChanged, chkIsRecurring.CheckedChanged, chkMonday.CheckedChanged, chkTuesday.CheckedChanged, chkWednesday.CheckedChanged, chkThursday.CheckedChanged, chkFriday.CheckedChanged, chkSaturday.CheckedChanged, chkSunday.CheckedChanged, chkIsActive.CheckedChanged, cmbTvTextBezeichnungAuswahl.SelectedIndexChanged, txtNeueTvTextBezeichnung.TextChanged
hatAenderung = True
End Sub
Private Sub frmEintragTvNew_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If hatAenderung Then
Dim antwort As DialogResult = MessageBox.Show("Es liegen ungespeicherte Änderungen vor. Möchten Sie das Fenster trotzdem schließen?", "Ungespeicherte Änderungen", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
If antwort = DialogResult.No Then e.Cancel = True
End If
End Sub
Private Sub chkIsRecurring_CheckedChanged(sender As Object, e As EventArgs) Handles chkIsRecurring.CheckedChanged
grpWochentage.Enabled = chkIsRecurring.Checked
End Sub
Private Sub ClearFields()
cmbTvTextBezeichnungAuswahl.SelectedIndex = -1
cmbPosition.SelectedIndex = -1
txtNeueTvTextBezeichnung.Text = ""
rtbZeile1.Text = ""
txtZeile2.Text = ""
txtZeile3.Text = ""
dtpStartDate.Value = DateTime.Now
dtpStartDate.Checked = False
dtpEndDate.Value = DateTime.Now
dtpEndDate.Checked = False
dtpStartTime.Value = DateTime.Now
dtpStartTime.Checked = False
dtpEndTime.Value = DateTime.Now
dtpEndTime.Checked = False
chkIsRecurring.Checked = False
chkMonday.Checked = False
chkTuesday.Checked = False
chkWednesday.Checked = False
chkThursday.Checked = False
chkFriday.Checked = False
chkSaturday.Checked = False
chkSunday.Checked = False
chkIsActive.Checked = True
grpWochentage.Enabled = False
End Sub
Private Sub chkShowInactive_CheckedChanged_1(sender As Object, e As EventArgs) Handles chkShowInactive.CheckedChanged
initdgv()
End Sub
End Class