Imports System.Data Imports System.Data.SqlClient Imports EDOKALib.Common '''Diese klasse beinhaltet die Logik für die Mitarbeiter Public Class Mitarbeiter #Region "Members" Private _mitarbeiterNr As Integer = 0 Private _vorname As String Private _nachname As String Private _kurzZeichen As String Private _anrede As String Private _tgNummer As String Private _email As String Private _fax As String Private _telefon As String Private _unterschriftText As String Private _spracheNr As Integer Private _fuerMandantNr As Integer 'arbeitet für diesen mandant Private _showTipp As Boolean 'display tipp bim startup Private _partnerNr As Integer Private _mandantNr As Integer 'zugehörigkeit des mitarbeiter Private _isAktiv As Boolean Private _erstelltAm As DateTime Private _mutiertAm As DateTime Private _mutiererMitarbeiterNr As Integer Private _isMailEmpfang As Boolean 'meldung via email Private _isEdokaMessage As Boolean 'DANGER: feld in db heisst "EdokaMesasge" Private _funktion As String Private _isMailDirektVersenden As Boolean Private _rang As String Private _isMailDokumentRueckgang As Boolean Private _klassifizierungNr As Integer Private _isEdokaMail As Boolean 'meldung via edoka empfangen Private _isJournalisierung As Boolean Private _isGebMeldung As Boolean Private _mail1 As String Private _funktionsgruppen As BusinessFacade.Funktionsgruppe() #End Region #Region "Constructor" '''Erstellt eine neue Instanz für einen neuen Mitarbeiter Public Sub New() Try Catch ex As Exception Throw ex End Try End Sub '''Erstellt eine neue Instanz für einen bestehenden Mitarbeiter ''' Public Sub New(ByVal mitarbeiterNr As Integer) Try Dim ds As New DataSet() DataAccess.Mitarbeiter.GetById(mitarbeiterNr, ds) LoadData(ds) Catch ex As Exception Throw ex End Try End Sub '''Erstellt eine neue Instanz für einen bestehenen Mitarbeiter ''' Public Sub New(ByVal tgNummer As String) Try Dim ds As New DataSet() DataAccess.Mitarbeiter.GetByTgNummer(tgNummer, ds) LoadData(ds) Catch ex As Exception Throw ex End Try End Sub #End Region #Region "Public methods" '''Gibt eine Liste mit allen Mitarbeitern zurück '''Das DataSet welches gefüllt werden soll Public Overloads Shared Sub GetListe(ByRef dsMitarbeiter As DataSet) Try DataAccess.Mitarbeiter.GetListe(0, 0, dsMitarbeiter) Catch ex As Exception Throw ex End Try End Sub '''Gibt eine Liste mit allen Mitarbeitern zurück '''Nur Mitarbeiter von diesem Team '''Das DataSet welches gefüllt werden soll Public Overloads Shared Sub GetListeByTeamNr(ByVal teamNr As Integer, ByRef dsMitarbeiter As DataSet) Try DataAccess.Mitarbeiter.GetListe(teamNr, 0, dsMitarbeiter) Catch ex As Exception Throw ex End Try End Sub '''Gibt eine Liste mit allen Mitarbeitern zurück '''Nur Mitarbeiter von dieser Funktionsgruppe '''Das DataSet welches gefüllt werden soll Public Overloads Shared Sub GetListeByFunktionsGruppeNr(ByVal funktionsGruppeNr As Integer, ByRef dsMitarbeiter As DataSet) Try DataAccess.Mitarbeiter.GetListe(0, funktionsGruppeNr, dsMitarbeiter) Catch ex As Exception Throw ex End Try End Sub '''Erstellt ein neues Standard Profil für den angegebenen Mitarbeiter '''Die datenbank Nummer des Mutierers (ID) Public Function CreateNewStandardProfil(ByVal mutiererMitarbeiterNr As Integer) Try DataAccess.Mitarbeiter.CreateNewStandardProfil(_mitarbeiterNr, mutiererMitarbeiterNr) Catch ex As Exception Throw ex End Try End Function '''Speichert die Änderungen an einem Mitarbeiter ''' Public Function Save(ByVal mutiererMitarbeiterNr As Integer) Try Save(Nothing, Nothing, mutiererMitarbeiterNr) Catch ex As Exception Throw ex End Try End Function '''Speichert die Änderungen an einem Mitarbeiter inklusive Funktionsgruppen- und Team-Zuordnungen ''' ''' ''' Public Function Save(ByVal dsMaTeams As DataSet, ByVal dsMaFunktionsGruppen As DataSet, ByVal mutiererMitarbeiterNr As Integer) Try 'daten des mitarbeiters speichern If _mitarbeiterNr <= 0 Then 'neuer mitarbeiter _mitarbeiterNr = DataAccess.Mitarbeiter.Insert(_vorname, _nachname, _kurzZeichen, _anrede, _tgNummer, _ _email, _fax, _telefon, _unterschriftText, _spracheNr, _fuerMandantNr, _showTipp, _partnerNr, _mandantNr, _ _isAktiv, _isMailEmpfang, _isEdokaMessage, _funktion, _isMailDirektVersenden, _rang, _isMailDokumentRueckgang, _ _klassifizierungNr, _isEdokaMail, _isJournalisierung, _isGebMeldung, _mail1, mutiererMitarbeiterNr) Else 'besthender mitarbeiter DataAccess.Mitarbeiter.Update(_mitarbeiterNr, _vorname, _nachname, _kurzZeichen, _anrede, _tgNummer, _ _email, _fax, _telefon, _unterschriftText, _spracheNr, _fuerMandantNr, _showTipp, _partnerNr, _mandantNr, _ _isAktiv, _isMailEmpfang, _isEdokaMessage, _funktion, _isMailDirektVersenden, _rang, _isMailDokumentRueckgang, _ _klassifizierungNr, _isEdokaMail, _isJournalisierung, _isGebMeldung, _mail1, mutiererMitarbeiterNr) End If 'je nach klassifizierung müssen min ein team, bzw funktionsgruppe ausgewählt werden Dim klassifizierung As New klassifizierung(_klassifizierungNr) 'checks auf ds == null finden in GetRowCountAfterSave() statt If klassifizierung.IsTeamZwingend Then If Not GetRowCountAfterSave(dsMaTeams) > 0 Then Throw New MitarbeiterException(String.Format(BusinessFacade.Meldungstext.GetInhaltById(310), klassifizierung.Bezeichnung)) Return 1 End If Else 'wenn nicht zwingend darf keine zuordnung enthalten sein. If GetRowCountAfterSave(dsMaTeams) > 0 Then Throw New MitarbeiterException(String.Format(BusinessFacade.Meldungstext.GetInhaltById(317), klassifizierung.Bezeichnung)) Return 1 End If End If If klassifizierung.IsFunktionsgruppeZwingend Then If Not GetRowCountAfterSave(dsMaFunktionsGruppen) > 0 Then Throw New MitarbeiterException(String.Format(BusinessFacade.Meldungstext.GetInhaltById(311), klassifizierung.Bezeichnung)) Return 1 End If Else 'wenn nicht zwingend darf keine zuordnung enthalten sein. If GetRowCountAfterSave(dsMaFunktionsGruppen) > 0 Then Throw New MitarbeiterException(String.Format(BusinessFacade.Meldungstext.GetInhaltById(318), klassifizierung.Bezeichnung)) Return 1 End If End If If Not IsNothing(dsMaTeams) Then 'zuordnungen speichern Dim row As DataRow Dim teamMitarbeiter As BusinessFacade.TeamMitarbeiter For Each row In dsMaTeams.Tables(0).Rows Select Case row.RowState Case DataRowState.Added 'neue zuordnung erstellen teamMitarbeiter = New BusinessFacade.TeamMitarbeiter() teamMitarbeiter.Anteil = Tools.CToInt32(row("anteil")) teamMitarbeiter.IsAktiv = row("aktiv") teamMitarbeiter.MandantNr = row("mandantnr") teamMitarbeiter.MitarbeiterNr = _mitarbeiterNr teamMitarbeiter.Team = New BusinessFacade.Team(Tools.CToInt32(row("teamnr"))) teamMitarbeiter.Save(mutiererMitarbeiterNr) Case DataRowState.Modified 'bestehende speichern teamMitarbeiter = New BusinessFacade.TeamMitarbeiter(Tools.CToInt32(row("teammitarbeiternr"))) teamMitarbeiter.Anteil = row("anteil") teamMitarbeiter.IsAktiv = row("aktiv") teamMitarbeiter.Save(mutiererMitarbeiterNr) 'Case DataRowState.Deleted 'bestehende löschen -> kb310370 'BusinessFacade.TeamMitarbeiter.Delete(Tools.CToInt32(row("teammitarbeiternr", DataRowVersion.Original)), mutiererMitarbeiterNr) End Select Next End If If Not IsNothing(dsMaFunktionsGruppen) Then 'zuordnungen speichern Dim row As DataRow For Each row In dsMaFunktionsGruppen.Tables(0).Rows Select Case row.RowState Case DataRowState.Added If Common.Tools.CToBool(row("aktiv")) Then 'neue verbindung herstellen BusinessFacade.MitarbeiterFunktionsgruppe.Insert(Tools.CToInt32(row("mitarbeiternr")), Tools.CToInt32(row("funktionsgruppenr")), mutiererMitarbeiterNr) End If Case DataRowState.Modified BusinessFacade.MitarbeiterFunktionsgruppe.SetAktiv(Tools.CToInt32(row("mitarbeiter_funktionsgruppenr")), Common.Tools.CToBool(row("aktiv")), mutiererMitarbeiterNr) 'Case DataRowState.Deleted 'bestehende löschen -> kb310370 'BusinessFacade.MitarbeiterFunktionsgruppe.Delete(Tools.CToInt32(row("mitarbeiter_funktionsgruppenr", DataRowVersion.Original)), mutiererMitarbeiterNr) End Select Next End If 'members refreshen Dim dsRefresh As New DataSet() DataAccess.Mitarbeiter.GetById(_mitarbeiterNr, dsRefresh) LoadData(dsRefresh) Catch ex As Exception Throw ex End Try End Function #End Region #Region "Private methods" '''lädt die daten in die klassen member ''' Private Sub LoadData(ByVal ds As DataSet) Try If Not Common.Tools.ValidateDS(ds) Then Return End If _mitarbeiterNr = Tools.CToInt32(ds.Tables(0).Rows(0)("mitarbeiterNr")) _vorname = Tools.CToString(ds.Tables(0).Rows(0)("vorname")) _nachname = Tools.CToString(ds.Tables(0).Rows(0)("name")) _kurzZeichen = Tools.CToString(ds.Tables(0).Rows(0)("kurzzeichen")) _anrede = Tools.CToString(ds.Tables(0).Rows(0)("anrede")) _tgNummer = Tools.CToString(ds.Tables(0).Rows(0)("tgnummer")) _email = Tools.CToString(ds.Tables(0).Rows(0)("email")) _fax = Tools.CToString(ds.Tables(0).Rows(0)("fax")) _telefon = Tools.CToString(ds.Tables(0).Rows(0)("telefon")) _unterschriftText = Tools.CToString(ds.Tables(0).Rows(0)("unterschrift_text")) _spracheNr = Tools.CToInt32(ds.Tables(0).Rows(0)("sprache")) _fuerMandantNr = Tools.CToInt32(ds.Tables(0).Rows(0)("fuermandant")) _showTipp = Common.Tools.CToBool(ds.Tables(0).Rows(0)("showtip")) _partnerNr = Tools.CToInt32(ds.Tables(0).Rows(0)("partnernr")) _mandantNr = Tools.CToInt32(ds.Tables(0).Rows(0)("mandantnr")) _isAktiv = Common.Tools.CToBool(ds.Tables(0).Rows(0)("aktiv")) _erstelltAm = Tools.CToDateTime(ds.Tables(0).Rows(0)("erstellt_am")) _mutiertAm = Tools.CToDateTime(ds.Tables(0).Rows(0)("mutiert_am")) _mutiererMitarbeiterNr = Tools.CToInt32(ds.Tables(0).Rows(0)("mutierer")) _isMailEmpfang = Common.Tools.CToBool(ds.Tables(0).Rows(0)("mailempfang")) _isEdokaMessage = Common.Tools.CToBool(ds.Tables(0).Rows(0)("EdokaMesasge")) _funktion = Tools.CToString(ds.Tables(0).Rows(0)("funktion")) _isMailDirektVersenden = Common.Tools.CToBool(ds.Tables(0).Rows(0)("MailDirektVersenden")) _rang = Tools.CToString(ds.Tables(0).Rows(0)("Rang")) _isMailDokumentRueckgang = Common.Tools.CToBool(ds.Tables(0).Rows(0)("MailDokumentrueckgang")) _klassifizierungNr = Tools.CToInt32(ds.Tables(0).Rows(0)("klassifizierung")) _isEdokaMail = Common.Tools.CToBool(ds.Tables(0).Rows(0)("edoka_mail")) _isJournalisierung = Common.Tools.CToBool(ds.Tables(0).Rows(0)("journalisierung")) _isGebMeldung = Common.Tools.CToBool(ds.Tables(0).Rows(0)("GebMeldung")) _mail1 = Tools.CToString(ds.Tables(0).Rows(0)("Mail_1")) Catch ex As Exception TKBLib.Errorhandling.TraceHelper.Msg("EDOKALib.BF.Parameter.LoadData", ex.Message + " " + ex.StackTrace, TraceLevel.Error) Throw ex End Try End Sub '''Gibt die Anzahl der Rows zurück, welche sie nach dem Speichern haben werden '''Das zu überprüfende DataSet '''Der neue rowCount Private Function GetRowCountAfterSave(ByVal ds2Validate As DataSet) As Integer Try 'validierung nicht möglich, es werden keines row mehr da sein nach dem speichern If IsNothing(ds2Validate) Then Return 0 End If Dim row As DataRow Dim newRowCount As Integer = 0 'neue rows zählen For Each row In ds2Validate.Tables(0).Rows If Convert.ToBoolean(row("aktiv")) And _ (row.RowState = DataRowState.Added Or _ row.RowState = DataRowState.Modified Or _ row.RowState = DataRowState.Unchanged) Then newRowCount = newRowCount + 1 End If Next Return newRowCount Catch ex As Exception Throw ex End Try End Function #End Region #Region "Properties" Public ReadOnly Property MitarbeiterNr() As Integer Get Return _mitarbeiterNr End Get End Property Public Property Vorname() As String Get Return _vorname End Get Set(ByVal Value As String) _vorname = Value End Set End Property Public Property Nachname() As String Get Return _nachname End Get Set(ByVal Value As String) _nachname = Value End Set End Property Public ReadOnly Property AnzeigeName() As String Get Return _nachname + " " + _vorname End Get End Property Public Property KurzZeichen() As String Get Return _kurzZeichen End Get Set(ByVal Value As String) _kurzZeichen = Value End Set End Property Public Property Anrede() As String Get Return _anrede End Get Set(ByVal Value As String) _anrede = Value End Set End Property Public Property TGNummer() As String Get Return _tgNummer End Get Set(ByVal Value As String) _tgNummer = Value End Set End Property Public Property EMail() As String Get Return _email End Get Set(ByVal Value As String) _email = Value End Set End Property Public Property Fax() As String Get Return _fax End Get Set(ByVal Value As String) _fax = Value End Set End Property Public Property Telefon() As String Get Return _telefon End Get Set(ByVal Value As String) _telefon = Value End Set End Property Public Property UnterschritText() As String Get Return _unterschriftText End Get Set(ByVal Value As String) _unterschriftText = Value End Set End Property Public Property SpracheNr() As Integer Get Return _spracheNr End Get Set(ByVal Value As Integer) _spracheNr = Value End Set End Property Public Property FuerMandantNr() As Integer Get Return _fuerMandantNr End Get Set(ByVal Value As Integer) _fuerMandantNr = Value End Set End Property Public Property ShowTipp() As Boolean Get Return _showTipp End Get Set(ByVal Value As Boolean) _showTipp = Value End Set End Property Public Property PartnerNr() As Integer Get Return _partnerNr End Get Set(ByVal Value As Integer) _partnerNr = Value End Set End Property Public Property MandantNr() As Integer Get Return _mandantNr End Get Set(ByVal Value As Integer) _mandantNr = Value End Set End Property Public Property IsAktiv() As Boolean Get Return _isAktiv End Get Set(ByVal Value As Boolean) _isAktiv = Value End Set End Property Public ReadOnly Property ErstelltAm() As DateTime Get Return _erstelltAm End Get End Property Public ReadOnly Property MutiertAm() As DateTime Get Return _mutiertAm End Get End Property Public ReadOnly Property MutiererMitarbeiterNr() As Integer Get Return _mutiererMitarbeiterNr End Get End Property Public Property IsMailEmpfang() As Boolean Get Return _isMailEmpfang End Get Set(ByVal Value As Boolean) _isMailEmpfang = Value End Set End Property Public Property IsEdokaMessage() As Boolean Get Return _isEdokaMessage End Get Set(ByVal Value As Boolean) _isEdokaMessage = Value End Set End Property Public Property Funktion() As String Get Return _funktion End Get Set(ByVal Value As String) _funktion = Value End Set End Property Public Property IsMailDirektVersenden() As Boolean Get Return _isMailDirektVersenden End Get Set(ByVal Value As Boolean) _isMailDirektVersenden = Value End Set End Property Public Property Rang() As String Get Return _rang End Get Set(ByVal Value As String) _rang = Value End Set End Property Public Property IsMailDokumentRueckgang() As Boolean Get Return _isMailDokumentRueckgang End Get Set(ByVal Value As Boolean) _isMailDokumentRueckgang = Value End Set End Property Public Property KlassifizierungNr() As Integer Get Return _klassifizierungNr End Get Set(ByVal Value As Integer) _klassifizierungNr = Value End Set End Property Public Property IsEdokaMail() As Boolean Get Return _isEdokaMail End Get Set(ByVal Value As Boolean) _isEdokaMail = Value End Set End Property Public Property Journalisierung() As Boolean Get Return _isJournalisierung End Get Set(ByVal Value As Boolean) _isJournalisierung = Value End Set End Property Public Property IsGebMeldung() As Boolean Get Return _isGebMeldung End Get Set(ByVal Value As Boolean) _isGebMeldung = Value End Set End Property Public Property Mail1() As String Get Return _mail1 End Get Set(ByVal Value As String) _mail1 = Value End Set End Property #End Region End Class '''Diese Klasse behandelt eine Mitarbeiter spezifische Ausnahme Public Class MitarbeiterException Inherits Exception Dim _message As String Public Sub New(ByVal message As String) _message = message End Sub Public Overrides ReadOnly Property Message() As String Get Return _message End Get End Property End Class