Imports System.Data
Imports LYB.VB
Imports LYB.VB.CLASSES

Partial Class group2_Medlemmar
    Inherits System.Web.UI.Page
    Private dw As DataView
    Private member As Member
    Dim data As New DataUtils
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim btnLedning As Web.UI.WebControls.LinkButton = Master.FindControl("btnLedning")
        btnLedning.Style.Add("color", "yellow")
        Dim btnBildarkiv As LinkButton = Master.FindControl("btnBildarkiv")
        btnBildarkiv.Style.Add("color", "yellow")
        Dim btnKalender As LinkButton = Master.FindControl("btnKalender")
        btnKalender.Style.Add("color", "yellow")
        Dim btnRepertoar As LinkButton = Master.FindControl("btnRepertoar")
        btnRepertoar.Style.Add("color", "yellow")

        Dim btnMedlemmar As LinkButton = Master.FindControl("btnMedlemmar")
        btnMedlemmar.Style.Add("color", "white")

        Dim webPages As DataView = Data.GetWebPagesData(2)
        lblLastChanged.Text = Resources.Resource.PageLastChanged & " " & data.FindWebPageData(webPages, "Medlemmar")

        If Not Me.IsPostBack Then
            member = CType(Session("member"), Member)
            FillMailAddressList(lstMailAddresses, member.CurrentLoginGroup)
            FillMemberTable()
        End If
        If lstMailAddresses.SelectedIndex > 0 Then
            FillMemberTable()
        End If
        'If Session("refreshMemberTable") = True Then
        '    Session("refreshMemberTable") = False
        '    FillMemberTable()
        'End If
    End Sub
    Protected Sub FillMemberTable()
        Dim display As New Display
        Dim data As New DataUtils
        membersTable.BorderWidth = System.Web.UI.WebControls.Unit.Parse("0")
        membersTable.CellPadding = 0
        membersTable.CellSpacing = 0
        member = CType(Session("member"), Member)
        Dim tbrowHeading As New TableRow
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Välj", member.FontFamily, member.FontSize))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Namn / E-post", member.FontFamily, member.FontSize))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("&nbsp;", member.FontFamily, member.FontSize))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Adress", member.FontFamily, member.FontSize))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Telnr hem", member.FontFamily, member.FontSize))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Telnr arb", member.FontFamily, member.FontSize))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Mobilnr", member.FontFamily, member.FontSize))
        'tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Notnr"))
        tbrowHeading.Cells.Add(display.MakeTableHeaderCell("Ändra", member.FontFamily, member.FontSize))
        membersTable.Rows.Add(tbrowHeading)
        Dim memberid As Integer
        Dim userIDCookie As String() = {"", "", ""}
        Try
            userIDCookie = data.GetUserIDCookie(Request)
            memberid = CType(userIDCookie(0), Integer)
        Catch ee As System.Exception
            If InStr(ee.Message, "not set to an instance") > 0 Or InStr(ee.Message, "Objektreferensen har inte angetts till en instans av ett objekt.") > 0 Then
                memberid = member.MemberID
            Else
                Throw New Exception(ee.Message)
            End If
        End Try
        dw = data.GetMembers(memberid)
        Session("dw_members") = dw
        Dim loggedInMemberID As Integer = memberid
        Dim loggedInMemberIsAdministrator As Boolean = data.IsMemberAdministrator(memberid, dw)
        Dim specialFunctions As New ArrayList
        Dim saveFunctionName As String = ""
        If Not IsNothing(dw) Then
            For Each row As DataRowView In dw
                If row.Item("functiontype") <> "A" And row.Item("functiontype") <> "S" And row.Item("functiontype") <> "R" Then
                    Dim membersMailAddress As String = ""
                    If Not row.Item("MailAddressHome") Is System.DBNull.Value Then
                        If Trim(row.Item("MailAddressHome")) <> "" Then
                            membersMailAddress = row.Item("MailAddressHome")
                        End If
                    End If
                    If Not row.Item("MailAddressWork") Is System.DBNull.Value Then
                        If Trim(row.Item("MailAddressWork")) <> "" Then
                            If membersMailAddress = "" Then
                                membersMailAddress = row.Item("MailAddressWork")
                            Else
                                membersMailAddress = membersMailAddress & ";" & row.Item("MailAddressWork")
                            End If
                        End If
                    End If
                    If row.Item("sortorder") = 0 Then
                        specialFunctions.Add(membersMailAddress)
                    Else
                        If saveFunctionName <> row.Item("FunctionName").ToString Then
                            Dim functionHeaderRow As New TableRow
                            functionHeaderRow.Cells.Add(display.MakeTableCell("<br>" & row.Item("FunctionName").ToString, member.FontFamily, "1.5", "bold", 7))
                            membersTable.Rows.Add(functionHeaderRow)
                        End If
                        saveFunctionName = row.Item("FunctionName").ToString
                        Dim tbrow As New TableRow
                        If membersMailAddress = "" Then
                            tbrow.Cells.Add(display.MakeTableCell("&nbsp;", member.FontFamily, member.FontSize))   ' 2008-08-03
                            tbrow.Cells.Add(display.MakeTableCell(row.Item("Lastname").ToString & " " & row.Item("Firstname").ToString, member.FontFamily, member.FontSize))
                        Else
                            'tbrow.Cells.Add(display.MakeTableCell("<input type='checkbox' name='chk" & row.Item("memberid") & "' id='chk" & row.Item("memberid") & "' value='" & row.Item("memberid") & "' />", member.FontFamily, member.FontSize))   ' 2008-08-03
                            Dim checkBox As New CheckBox            ' 2008-08-03
                            checkBox.ID = "chk" & row.Item("memberid")      ' 2008-08-03
                            Dim cell As New TableCell               ' 2008-08-03
                            cell.Controls.Add(checkBox)             ' 2008-08-03
                            tbrow.Cells.Add(cell)                   ' 2008-08-03
                            tbrow.Cells.Add(display.MakeTableCell("<a href='mailto:" & membersMailAddress & "'>" & row.Item("Lastname").ToString & " " & row.Item("Firstname").ToString & "</a>", _
                                            member.FontFamily, member.FontSize, True, "telefon"))
                        End If
                        Dim hit As Boolean = False
                        For r As Integer = 0 To specialFunctions.Count - 1
                            If specialFunctions(r) = membersMailAddress Then
                                hit = True
                                Exit For
                            End If
                        Next
                        If hit = True Then
                            tbrow.Cells.Add(display.MakeTableCell("<img src='../images/stamfiskal.gif' width='17' height='20' alt='*' align='middle'>", member.FontFamily, member.FontSize))
                        Else
                            tbrow.Cells.Add(display.MakeTableCell("&nbsp;", member.FontFamily, member.FontSize))
                        End If
                        Dim address As String = ""
                        If Not row.Item("Postaddress") Is System.DBNull.Value Then
                            address = row.Item("Postaddress").ToString
                        End If
                        If Not row.Item("zipcode") Is System.DBNull.Value Then
                            address = address & ", " & Left(row.Item("zipcode").ToString, 3) & " " & Mid(row.Item("zipcode").ToString, 4)
                        End If
                        If Not row.Item("city") Is System.DBNull.Value Then
                            address = address & " " & row.Item("city").ToString
                        End If
                        If address <> "" Then
                            tbrow.Cells.Add(display.MakeTableCell(address, member.FontFamily, member.FontSize))
                        Else
                            tbrow.Cells.Add(display.MakeTableCell("&nbsp;", member.FontFamily, member.FontSize))
                        End If
                        If Not row.Item("PhoneNumberHome") Is System.DBNull.Value Then
                            tbrow.Cells.Add(display.MakeTableCell(row.Item("PhoneNumberHome").ToString, member.FontFamily, member.FontSize, True, "telefon"))
                        Else
                            tbrow.Cells.Add(display.MakeTableCell("&nbsp;", member.FontFamily, member.FontSize))
                        End If
                        If Not row.Item("PhoneNumberWork") Is System.DBNull.Value Then
                            tbrow.Cells.Add(display.MakeTableCell(row.Item("PhoneNumberWork").ToString, member.FontFamily, member.FontSize, True, "telefon"))
                        Else
                            tbrow.Cells.Add(display.MakeTableCell("&nbsp;", member.FontFamily, member.FontSize))
                        End If
                        If Not row.Item("CellPhoneNumber") Is System.DBNull.Value Then
                            tbrow.Cells.Add(display.MakeTableCell(row.Item("CellPhoneNumber").ToString, member.FontFamily, member.FontSize, True, "telefon"))
                        Else
                            tbrow.Cells.Add(display.MakeTableCell("&nbsp;", member.FontFamily, member.FontSize))
                        End If
                        'If Not row.Item("notenumber") Is System.DBNull.Value Then
                        '    tbrow.Cells.Add(display.MakeTableCell(row.Item("notenumber").ToString))
                        'Else
                        '    tbrow.Cells.Add(display.MakeTableCell("&nbsp;"))
                        'End If
                        If loggedInMemberIsAdministrator Or loggedInMemberID = row.Item("memberid") Then
                            tbrow.Cells.Add(display.MakeTableCell("<a href='EditMember.aspx?memberid=" & CStr(row.Item("memberid")) & "'><img src='../images/editinformation.bmp' width='16' height='16' alt='Ändra medlemsuppgifter' /></a>", member.FontFamily, member.FontSize))
                        End If
                        membersTable.Rows.Add(tbrow)
                    End If
                End If
            Next
        End If

    End Sub
    Protected Sub FillMailAddressList(ByRef lstMailAddressList As DropDownList, ByVal groupID As Integer)
        Dim data As New DataUtils
        Dim sql As String = "SELECT * FROM mailaddresslist WHERE groupid = " & CStr(groupID) & " ORDER BY mailaddresslistname"
        Dim ds As DataSet = data.GetBySQL(sql, "mailaddresslist")
        lstMailAddressList.Items.Clear()
        lstMailAddressList.Items.Add("E-posta till...")
        lstMailAddressList.AppendDataBoundItems = True
        lstMailAddressList.DataSource = ds
        lstMailAddressList.DataTextField = "mailaddresslistname"
        lstMailAddressList.DataValueField = "functiontype"
        lstMailAddressList.DataBind()
    End Sub

    Protected Sub GenerateMailAddressList(ByVal functionType As String)
        dw = CType(Session("dw_members"), DataView)

        If Not IsNothing(dw) Then
            Dim toString As New StringBuilder()
            For Each row As DataRowView In dw
                If row.Item("functiontype") = functionType Then
                    Dim membersMailAddressHome As String = ""
                    Dim membersMailAddressWork As String = ""
                    If Not row.Item("MailAddressHome") Is System.DBNull.Value Then
                        If Trim(row.Item("MailAddressHome")) <> "" Then
                            membersMailAddressHome = row.Item("MailAddressHome")
                        End If
                    End If
                    If Not row.Item("MailAddressWork") Is System.DBNull.Value Then
                        If Trim(row.Item("MailAddressWork")) <> "" Then
                            membersMailAddressWork = row.Item("MailAddressWork")
                        End If
                    End If
                    If membersMailAddressHome <> "" Then
                        toString.Append(membersMailAddressHome)
                        'toString.Append(";")
                        toString.Append(",")    ' 2008-08-03
                    End If
                    If membersMailAddressWork <> "" Then
                        toString.Append(membersMailAddressWork)
                        'toString.Append(";")
                        toString.Append(",")    ' 2008-08-03
                    End If
                End If
            Next
            Dim mailAddressList As String = toString.ToString()                                     ' 2008-08-04
            mailAddressList = mailAddressList.Substring(0, mailAddressList.Length() - 1)            ' 2008-08-04
            btnMailTo.Text = "<a href='mailto:" & mailAddressList & "'>Klicka här för att öppna e-post-klienten!</a>"
        End If
    End Sub
    Protected Sub GenerateChosenMailAddressList(ByVal sql As String)    ' 2008-08-04
        Dim ds As DataSet
        ds = data.GetBySQL(sql, "chosenmembers")
        If Not IsNothing(ds) Then
            Dim toString As New StringBuilder()
            For Each row As DataRow In ds.Tables("chosenmembers").Rows
                Dim membersMailAddressHome As String = ""
                Dim membersMailAddressWork As String = ""
                If Not row.Item("MailAddressHome") Is System.DBNull.Value Then
                    If Trim(row.Item("MailAddressHome")) <> "" Then
                        membersMailAddressHome = row.Item("MailAddressHome")
                    End If
                End If
                If Not row.Item("MailAddressWork") Is System.DBNull.Value Then
                    If Trim(row.Item("MailAddressWork")) <> "" Then
                        membersMailAddressWork = row.Item("MailAddressWork")
                    End If
                End If
                If membersMailAddressHome <> "" Then
                    toString.Append(membersMailAddressHome)
                    'toString.Append(";")
                    toString.Append(",")    ' 2008-08-03
                End If
                If membersMailAddressWork <> "" Then
                    toString.Append(membersMailAddressWork)
                    'toString.Append(";")
                    toString.Append(",")    ' 2008-08-03
                End If
            Next
            Dim mailAddressList As String = toString.ToString()                                     ' 2008-08-04
            mailAddressList = mailAddressList.Substring(0, mailAddressList.Length() - 1)            ' 2008-08-04
            btnMailTo.Text = "<a href='mailto:" & mailAddressList & "'>Klicka här för att öppna e-post-klienten!</a>"
        End If
    End Sub
    Protected Sub lstMailAddresses_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim functionType As String = lstMailAddresses.SelectedValue
        If functionType = "U" Then                      ' 2008-08-03
            Dim ctl00 As Object = FindControl("ctl00")
            Dim aspnetForm As HtmlForm = ctl00.Controls(3)
            Dim placeholder1 As ContentPlaceHolder = aspnetForm.Controls(17)
            Dim membersTable As Table = placeholder1.Controls(5)
            Dim sql As String = "select mailaddresswork, mailaddresshome from member where"
            For Each row As TableRow In membersTable.Rows
                If row.Cells(0).HasControls = True Then
                    Dim c As New CheckBox
                    c = CType(row.Cells(0).Controls(0), CheckBox)
                    If c.Checked = True Then
                        ' add memberid to array
                        Dim memberid As Integer = c.ID.Substring(3)
                        If InStr(sql, "memberid") = 0 Then
                            sql = sql & " memberid = " & CStr(memberid)
                        Else
                            sql = sql & " OR memberid = " & CStr(memberid)
                        End If
                    End If
                End If
            Next
            GenerateChosenMailAddressList(sql)
        Else
            GenerateMailAddressList(functionType)
        End If
    End Sub
End Class
