Public Class MaintenanceKoho
    Inherits System.Web.UI.Page

    Private Const CON_EXCEL_NAME As String = "候補者Ｍ"

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            Page.Header.Title = MyProperty.システムＭ.選挙コード名称 + MyConstant.管理画面タイトル
        End If
    End Sub

    Protected Sub BtnDownload_Click(sender As Object, e As EventArgs) Handles BtnDownload.Click
        ' 候補者Mを取得する
        Dim ds As DataSet1 = New DataSet1
        Using myDataBase As MyDataBase = New MyDataBase
            myDataBase.Fill候補者M全件(ds)
        End Using

        ' エクセルをサーバのTempフォルダに作成
        Dim saveFilePath As String = MyProperty.TEMPフォルダパス + CON_EXCEL_NAME + DateTime.Now.ToString("yyyyMMddHHmmss") + MyConstant.TEMPエクセル拡張子
        Dim baseFilePath As String = MyProperty.EXCELテンプレートフォルダパス + CON_EXCEL_NAME + MyConstant.エクセル拡張子
        Using myExcel As MyExcel = New MyExcel()
            myExcel.Output候補者M(saveFilePath, baseFilePath, ds)
        End Using

        ' エクセルをクライアントにダウンロード
        DownloadExcel(saveFilePath)
    End Sub

    Protected Sub BtnUpload_Click(sender As Object, e As EventArgs) Handles BtnUpload.Click
        If FileUpload1.FileName.TrimEnd = String.Empty Then
            LblMessage.Text = MyMessage.管理者画面.アップロード指定無し
        Else
            ' エクセルをサーバのTempフォルダにアップロード
            Dim filePath As String = MyProperty.TEMPフォルダパス + "UP_" + CON_EXCEL_NAME + DateTime.Now.ToString("yyyyMMddHHmmss") + MyConstant.TEMPエクセル拡張子
            FileUpload1.SaveAs(filePath)

            ' アップロードしたエクセルの内容で、ＤＢを更新。
            Dim ds As DataSet1 = New DataSet1()
            Try
                Using myExcel As MyExcel = New MyExcel()
                    myExcel.Read候補者M(filePath, ds)
                End Using
            Catch ex As Exception
                LblMessage.Text = MyMessage.管理者画面.アップロードエクセル形式エラー
                Return
            End Try
            
            Using myDataBase As MyDataBase = New MyDataBase()
                myDataBase.DeleteInsert候補者M(ds)
            End Using

            LblMessage.Text = String.Format(MyMessage.管理者画面.アップロード完了, ds.候補者M.Rows.Count.ToString())
        End If
    End Sub

    Private Sub DownloadExcel(ByVal filePath As String)
        ' Responseクリア
        Response.Clear()
        ' HTTPヘッダー情報設定
        Dim fileName As String = MyProperty.システムＭ.選挙コード + MyProperty.システムＭ.投票所コード + _
            CON_EXCEL_NAME + DateTime.Now.ToString("yyyyMMddHHmm") + MyConstant.エクセル拡張子
        Response.AppendHeader("Content-Disposition", "Attachment; filename*=utf-8''" + Server.UrlEncode(fileName))
        Response.ContentType = "application/msexcel"
        ' ファイル書込
        Response.WriteFile(filePath)
        ' レスポンス終了
        Response.End()
    End Sub
End Class