Public Class Login1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            ' ポストバック時

            If Not TxtBarcode.Text = "" Then

                Dim ds As DataSet1 = New DataSet1

                ' 投票券番号の形式は、[選挙コード(5桁)]_[投票所コード(3桁)]_[連番(7)]。
                Dim len選挙コード As Integer = MyProperty.システムＭ.選挙コード.Length
                Dim len投票所コード As Integer = MyProperty.システムＭ.投票所コード.Length
                Dim len連番 As Integer = 7
                Dim vals As List(Of String) = New List(Of String)
                If TxtBarcode.Text.TrimEnd.Length = len選挙コード + len投票所コード + len連番 Then
                    vals.Add(TxtBarcode.Text.Substring(0, len選挙コード))
                    vals.Add(TxtBarcode.Text.Substring(len選挙コード, len投票所コード))
                    vals.Add(TxtBarcode.Text.Substring(len選挙コード + len投票所コード, len連番))

                    ' 選挙ｺｰﾄﾞのチェック
                    If vals(0) = MyProperty.システムＭ.選挙コード Then
                        ' 会場ｺｰﾄﾞのチェック
                        'If vals(1) = MyProperty.システムＭ.投票所コード Then  '--- 2019.8.27 del
                        Using myDataBase As MyDataBase = New MyDataBase
                            ' 投票券Tに存在するかチェック
                            myDataBase.Fill投票券TBy投票券番号(ds, vals(2))
                        End Using
                        'End If
                    End If
                End If

                If ds.投票券T.Rows.Count > 0 Then
                    If vals(1) = ds.投票券T(0).予備１.TrimEnd Then    '--- 2019.8.27 add
                        ' セッションに投票券番号を登録する。
                        Session(MyConstant.SessionKey.投票者ID) = ds.投票券T(0).投票券番号.TrimEnd
                        Session(MyConstant.SessionKey.認証日時) = DateTime.Now.ToString
                        Session(MyConstant.SessionKey.投票数) = ds.投票券T(0).投票数.ToString

                        Session(MyConstant.SessionKey.投票所コード) = ds.投票券T(0).予備１.Trim()

                        Using myDataBase As MyDataBase = New MyDataBase
                            myDataBase.Fill選挙M全件(ds)
                        End Using

                        ' 投票ページへ遷移する。
                        'Response.Redirect("SenkyoList.aspx")
                        Dim nPage As String
                        If ds.選挙M.Rows.Count = 1 Then
                            nPage = Me.NextPageCheck(ds)
                        Else
                            nPage = "SenkyoList.aspx"
                        End If

                        Response.Redirect(nPage)
                    End If
                End If

                LblMessage.Text = MyProperty.システムＭ.メッセージ.Login.照合エラー
            End If
        Else
            ' 初期表示時
            Page.Header.Title = MyProperty.システムＭ.選挙コード名称
        End If

        ' テキストボックスにカーソル
        TxtBarcode.Focus()
    End Sub

    Private Function NextPageCheck(ByRef ds As DataSet1) As String

        Dim tag As String = ""
        For Each row As DataSet1.選挙MRow In ds.選挙M
            If MyUtility.Is投票済み(row.選挙ID.TrimEnd, Session(MyConstant.SessionKey.投票者ID)) Then
                tag = "SenkyoList.aspx"
            Else
                tag = (GetNextURI(row.一覧表示パターン) + "?" + MyConstant.QueryStringKey.選挙ID + "=" + row.選挙ID.TrimEnd)
            End If
        Next

        Return tag

    End Function

    Private Function GetNextURI(ByVal pattern As String) As String
        Dim uri As String
        Select Case pattern
            Case MyEnum.一覧表示パターン.標準型,
                 MyEnum.一覧表示パターン.ポスケ型
                uri = "KohoList.aspx"
            Case MyEnum.一覧表示パターン.政党検索
                uri = "SeitoList.aspx"
            Case MyEnum.一覧表示パターン.名前検索
                uri = "Keypad.aspx"
            Case MyEnum.一覧表示パターン.ルーペ型
                uri = "KohoListLoupe.aspx"
            Case Else
                uri = "KohoList.aspx"
        End Select

        Return uri
    End Function

End Class