﻿Imports RGBC_Forecast.SystemFunctions
Imports RGBC_Forecast.ProjectFunctions

Partial Public Class ReportConsole
  Inherits System.Web.UI.Page

  Private Shared Report As BrandReport

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then

    End If

  End Sub

  Private Function RunReport() As PlaceHolder
    Dim arg As New Collection

    If Session.Item("User") Is Nothing Then 'lame
      LogginUser(Request, Session)
    End If

    If ddlFinYear.SelectedIndex > 0 Then

      'build filter vars etc.
      arg.Add(ddlFinYear.SelectedValue, "FinYear")
      arg.Add(ddlBrand.SelectedValue, "BrandID")
      arg.Add(ddlPrincipal.SelectedValue, "PrincipalID")
      arg.Add(ddlBrandManager.SelectedValue, "BrandManagerID")
      arg.Add(ddlDailyReportGrouping.SelectedValue, "DailyReportGroupingID")
      arg.Add(chkDecimal.Checked, "blnDecimal")
      arg.Add(ddlRegion.SelectedValue, "frRegion")

      'new rpt object
      lblReportName.Text = rblReports.SelectedItem.Text.ToString.Trim
      Report = New BrandReport(rblReports.SelectedItem.Text.ToString.Trim, arg, Session("USER")!UserID)

      Select Case rblReports.SelectedValue 'select which report to run
        Case "rpt.forecast"
          Report.getForecastReport(phReport)
        Case "rpt.rsm"
          Report.getRsmReport(phReport)
      End Select

      btnExport.Enabled = True
    Else
      btnExport.Enabled = False

    End If


    Return phReport

  End Function

  Protected Sub btnRun_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRun.Click
    Me.RunReport()
  End Sub

  Protected Sub blnExport_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnExport.Click

    Me.RunReport() 'wtf?! phReport loses its Controls

    Response.Clear()
    Response.Buffer = True
    Response.ContentType = "application/vnd.ms-excel"
    Response.Charset = ""
    Response.AddHeader("Content-Disposition", "attachment;filename=" & Report.ExportFileLabel & "_" & Date.Now.ToString("yyyyMMddHHmm") & ".xls")
    Me.EnableViewState = False

    Dim oStringWriter As New System.IO.StringWriter()
    Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
    Dim frm As HtmlForm = New HtmlForm()
    Me.Controls.Add(frm)

    frm.Controls.Add(phReport)

    frm.RenderControl(oHtmlTextWriter)
    Response.Write(oStringWriter.ToString())
    Response.End()

  End Sub

  Private Sub ReportConsole_PreRenderComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRenderComplete

    If Not Page.IsPostBack Then
      'load get variables. 
      Dim FinYear As Integer = CInt(Request.QueryString("FY"))
      Dim BrandID As Integer = CInt(Request.QueryString("BID"))
      Dim PrincipalID As Integer = CInt(Request.QueryString("PID"))
      Dim BrandManagerID As Integer = CInt(Request.QueryString("BMID"))
      Dim DailyReportGroupingID As Integer = -1
      If Not Request.QueryString("DRGID") Is Nothing Then DailyReportGroupingID = CInt(Request.QueryString("DRGID"))
      Dim rpt As String = Request.QueryString("rpt")

      'DOUBLE CHECK that IDs exist before assigning to ddl
      If ddlFinYear.SelectedValue.IndexOf(FinYear) > 0 Then ddlFinYear.SelectedValue = FinYear
      If ddlBrand.SelectedValue.IndexOf(BrandID) > 0 Then ddlBrand.SelectedValue = BrandID
      If ddlPrincipal.SelectedValue.IndexOf(PrincipalID) > 0 Then ddlPrincipal.SelectedValue = PrincipalID
      If ddlBrandManager.SelectedValue.IndexOf(BrandManagerID) > 0 Then ddlBrandManager.SelectedValue = BrandManagerID
      If ddlDailyReportGrouping.SelectedValue.IndexOf(DailyReportGroupingID) > -1 Then ddlDailyReportGrouping.SelectedValue = DailyReportGroupingID

      Try
        chkDecimal.Checked = CBool(Request.QueryString("D"))
      Catch icEx As InvalidCastException 'expected: Cbool("")
      End Try

      If Not rblReports.Items.FindByValue(rpt) Is Nothing Then rblReports.SelectedValue = rpt

      Try
        If Request.QueryString("Run") = "1" Then
          RunReport()
        End If
      Catch ex As Exception
      End Try

    End If



    Dim imgLoading As WebControls.Image

    imgLoading = Page.Master.FindControl("imgLoading")

    imgLoading.CssClass = "invisible"
  End Sub

  'SETTING ddls
  'DOUBLE CHECK that IDs exist before assigning to ddl
  Private Sub ddlFinYear_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlFinYear.DataBound
    If Not ddlFinYear.Items.FindByValue(CInt(Request.QueryString("FY"))) Is Nothing Then ddlFinYear.SelectedValue = CInt(Request.QueryString("FY"))
  End Sub

  Private Sub ddlBrand_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlBrand.DataBound
    If Not ddlBrand.Items.FindByValue(CInt(Request.QueryString("BID"))) Is Nothing Then ddlBrand.SelectedValue = CInt(Request.QueryString("BID"))
  End Sub

  Private Sub ddlPrincipal_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlPrincipal.DataBound
    If Not ddlPrincipal.Items.FindByValue(CInt(Request.QueryString("PID"))) Is Nothing Then ddlPrincipal.SelectedValue = CInt(Request.QueryString("PID"))
  End Sub

  Private Sub ddlBrandManager_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlBrandManager.DataBound
    If Not ddlBrandManager.Items.FindByValue(CInt(Request.QueryString("BMID"))) Is Nothing Then ddlBrandManager.SelectedValue = CInt(Request.QueryString("BMID"))
  End Sub

  Private Sub ddlDailyReportGrouping_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlDailyReportGrouping.DataBound
    If Not ddlDailyReportGrouping.Items.FindByValue(CInt(Request.QueryString("DRGID"))) Is Nothing And Not Request.QueryString("DRGID") Is Nothing Then ddlDailyReportGrouping.SelectedValue = CInt(Request.QueryString("DRGID"))
  End Sub


  Protected Sub lbRun_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lbRun.Click
    Dim js As String

    lbRun.PostBackUrl = "ReportConsole.aspx?FY=" & ddlFinYear.SelectedValue & _
      "&BID=" & ddlBrand.SelectedValue & _
      "&PID=" & ddlPrincipal.SelectedValue & _
      "&BMID=" & ddlBrandManager.SelectedValue & _
      "&DRGID=" & ddlDailyReportGrouping.SelectedValue & _
      "&D=" & chkDecimal.Checked.ToString & _
      "&Run=1" & _
      "&rpt=" & rblReports.SelectedValue

    js = "window.open('" & lbRun.PostBackUrl & "');"
    'Me.RegisterStartupScript("", js)
    ClientScript.RegisterStartupScript(Me.GetType, "", js, True)
  End Sub

  Protected Sub lbOpen_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lbOpen.Click
    Dim js As String

    lbOpen.PostBackUrl = "ReportConsole.aspx?FY=" & ddlFinYear.SelectedValue & _
      "&BID=" & ddlBrand.SelectedValue & _
      "&PID=" & ddlPrincipal.SelectedValue & _
      "&BMID=" & ddlBrandManager.SelectedValue & _
      "&DRGID=" & ddlDailyReportGrouping.SelectedValue & _
      "&D=" & chkDecimal.Checked.ToString & _
      "&Run=0" & _
      "&rpt=" & rblReports.SelectedValue

    js = "window.open('" & lbOpen.PostBackUrl & "');"
    'Me.RegisterStartupScript("", js)
    ClientScript.RegisterStartupScript(Me.GetType, "", js, True)
  End Sub
End Class