Public Class Complete
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            ' ポストバック時
        Else
            ' 初期表示時
            Page.Header.Title = MyProperty.システムＭ.選挙コード名称

            ' セッションタイムアウトチェック
            If IsNothing(Session(MyConstant.SessionKey.投票者ID)) Then
                Throw New Exception(MyMessage.ログ.セッションタイムアウト)
            End If

            If Is全投票終了() Then
                ' 全選挙への投票が済んでいる場合

                ' セッション情報のクリア。
                Session(MyConstant.SessionKey.選挙ID) = Nothing
                Session(MyConstant.SessionKey.投票者ID) = Nothing
                Session(MyConstant.SessionKey.認証日時) = Nothing
                Session(MyConstant.SessionKey.投票数) = Nothing
                Session(MyConstant.SessionKey.候補者ID) = Nothing

                PnlNextImage.Visible = False
                LblMessage.Text = String.Format(MyProperty.システムＭ.メッセージ.Complete.投票終了, MyConstant.自動画面遷移時間秒)

                If MyProperty.システムＭ.Isインターネット投票型 Then
                    PnlProgress.Visible = False
                Else
                    PnlCloseMessage.Visible = False

                    ' 3秒後に自動で最初の画面に遷移。
                    body1.Attributes("onload") = "setTimeout('location.replace(""Default.aspx"");', " + MyConstant.自動画面遷移時間ミリ秒 + ");"
                End If
            Else
                ' まだ未投票選挙が残っている場合

                ' セッション情報のクリア。
                Session(MyConstant.SessionKey.候補者ID) = Nothing

                PnlThanksImage.Visible = False
                PnlCloseMessage.Visible = False
                LblMessage.Text = String.Format(MyProperty.システムＭ.メッセージ.Complete.投票継続, MyConstant.自動画面遷移時間秒)

                ' 全選挙への投票が済んでいない場合、選挙選択画面に遷移する
                body1.Attributes("onload") = "setTimeout('location.replace(""SenkyoList.aspx"");', " + MyConstant.自動画面遷移時間ミリ秒 + ");"
            End If

            
        End If
    End Sub

    Private Function Is全投票終了() As Boolean
        ' 選挙Mを取得する。
        Dim ds As DataSet1 = New DataSet1
        Using myDataBase As MyDataBase = New MyDataBase
            myDataBase.Fill選挙M(ds)
        End Using

        For Each row As DataSet1.選挙MRow In ds.選挙M
            ' 投票Tにデータがなければ選挙終了でない
            Using myDataBase As MyDataBase = New MyDataBase
                myDataBase.Fill投票TBy選挙ID投票券番号(ds, row.選挙ID.TrimEnd, Session(MyConstant.SessionKey.投票者ID))
            End Using

            If (ds.投票T.Rows.Count = 0) Then
                Return False
                Exit For
            End If
        Next

        Return True
    End Function

End Class