Imports IntraSell_DLL
Imports IntraSell_Net_Base

Public Class ucMitarbeiter
    Dim FremdeTischeBedienen As Boolean = True
    Public Event MitarbeiterSelected(ByRef MitarbeiterNr As Integer, ByRef MitarbeiterName As String)
    Shared MitarbeiterNr As Integer
    Shared MitarbeiterName As String
    Public Property FilterPosition As String = ""

    Public Sub DatenAktualisierenMitarbeiter()
        Try
            FremdeTischeBedienen = HasRecht(Rechte.Fremde_Tische_bedienen)
            OfmitarbeiterTableAdapter.Connection = CurrentDB
            OfmitarbeiterTableAdapter.Fill(DsTouchVorgang.ofmitarbeiter)

            'Me.FlowLayoutPanelMitarbeiter.Controls.Clear()
            Dim hasMitarbeiter As Boolean = DsTouchVorgang.ofmitarbeiter.Rows.Count > 0
            If hasMitarbeiter Then

                For Each MitarbeiterRow As dsTouchVorgang.ofmitarbeiterRow In DsTouchVorgang.ofmitarbeiter.Rows
                    If Not MitarbeiterRow.IsNameNull Then

                        Dim found As Button = FindByTag(FlowLayoutPanelMitarbeiter, MitarbeiterRow.IDNR)
                        If found Is Nothing Then
                            Dim btn = New Button With {
                                .Tag = MitarbeiterRow.IDNR,
                                .Text = MitarbeiterRow.Name,
                                .Height = 60,
                                .Width = 140,
                                .Enabled = FremdeTischeBedienen Or MitarbeiterRow.IDNR = MitarbeiterID,
                                .ForeColor = Color.Black,
                                .BackColor = MitarbeiterFarbe(MitarbeiterRow.IDNR)
                            }

                            Dim position = FirstRow("select position from ofMitarbeiter where idnr =" & MitarbeiterRow.IDNR)
                            Dim show As Boolean = True
                            If Not FilterPosition = "" Then
                                show = FilterPosition.Equals(position)
                            End If
                            If show Then

                                If IsNull(position) Then
                                    position = "Kellner"
                                End If
                                If position = "Zusteller" Then
                                    btn.Image = My.Resources.Zusteller32x
                                ElseIf position = "Chef" Then
                                    btn.Image = My.Resources.Boss32x
                                ElseIf position = "Kellner" Then
                                    btn.Image = My.Resources.Waiter32x
                                Else
                                    btn.Image = My.Resources.Waiter32x
                                End If
                                btn.ImageAlign = ContentAlignment.MiddleRight

                                AddHandler btn.Click, AddressOf ButtonMitarbeiter_Click
                                FlowLayoutPanelMitarbeiter.Controls.Add(btn)
                                found = btn
                            End If

                        End If

                        If found IsNot Nothing Then
                            If MitarbeiterRow.IDNR = MitarbeiterID Then 'Angemeldet
                                Highlight(found)
                            Else
                                found.BackColor = MitarbeiterFarbe(MitarbeiterRow.IDNR)
                                UnHighlight(found)
                            End If
                        End If

                    End If
                Next

            Else 'Keine Mitarbeiter angelegt 
                Dim lblHint As Label = FindByTag(FlowLayoutPanelMitarbeiter, -2)
                If lblHint Is Nothing Then
                    Dim msg = "In Maske Stammdaten->Mitarbeiter einen Mitarbeiter mit Rolle Kellner, Zusteller, etc. anlegen."
                    'lblHint.Multiline = True
                    lblHint = New Label With {
                        .Width = 400,
                        .Height = 60,
                        .Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, FontStyle.Regular, GraphicsUnit.Point, 0),
                        .Tag = -2,
                        .Text = msg
                    }
                    FlowLayoutPanelMitarbeiter.Controls.Add(lblHint)
                End If

                ' MsgBox(msg, MsgBoxStyle.Information, "Legen Sie zuerst die Mitarbeiter an")
            End If

            Dim btnMitarbeiterAnlegen As Button = FindByTag(FlowLayoutPanelMitarbeiter, -1)
            If btnMitarbeiterAnlegen Is Nothing Then
                btnMitarbeiterAnlegen = New Button With {
                    .Tag = -1,
                    .Text = "Mitarbeiter anlegen",
                    .Height = 60,
                    .Width = 120
                }
                FlowLayoutPanelMitarbeiter.Controls.Add(btnMitarbeiterAnlegen)
                AddHandler btnMitarbeiterAnlegen.Click, AddressOf btnMitarbeiterAnlegen_Click
            End If

        Catch ex As Exception
            HandleAppError(ex, Silent:=True)
        End Try
    End Sub

    Function FindByTag(p As Panel, tag As String) As Control
        For Each c As Control In p.Controls
            If c.Tag IsNot Nothing Then
                If CStr(c.Tag) = tag Then Return c
            End If
        Next
        Return Nothing
    End Function

    Private Sub ButtonMitarbeiter_Click(sender As Object, e As EventArgs) ' Handles ButtonMitarbeiter.Click
        Try
            Dim btn As Button = CType(sender, Button)

            MitarbeiterNr = btn.Tag
            If VarValue_Default("MITARBEITER_AUSWAHL_MIT_ANMELDEN", "false") Then
                If btn.Tag <> MitarbeiterID Then
                    Login.Logout()
                    Login.LogInUsername = MitarbeiterUsername(btn.Tag)
                    Login.ShowDialog()
                    MitarbeiterNr = MitarbeiterID
                End If
            End If

            If FremdeTischeBedienen Or btn.Tag = MitarbeiterID Then
                For Each c In FlowLayoutPanelMitarbeiter.Controls
                    c.BackColor = MitarbeiterFarbe(c.tag)
                    c.FlatStyle = FlatStyle.Standard
                Next
                Highlight(btn)
            Else
                'keine Berechtigung Tische zu übernehmen 
                'MessageLabel.Text = "Keine Berechtigung"
                'Me.FlowLayoutPanelOrders.Controls.Add(MessageLabel)
                Exit Sub
            End If
            MitarbeiterNr = CType(sender, Button).Tag
            MitarbeiterName = CType(sender, Button).Text
            RaiseEvent MitarbeiterSelected(MitarbeiterNr, MitarbeiterName)

        Catch ex As Exception
            HandleAppError(ex)
        End Try

    End Sub

    Private Sub btnMitarbeiterAnlegen_Click(sender As Object, e As EventArgs)
        Try
            Mitarbeiter.BeginNew("Zusteller")
            Mitarbeiter.ShowDialog()
            DatenAktualisierenMitarbeiter()
        Catch ex As Exception
            HandleAppError(ex)
        End Try

    End Sub

End Class
