home *** CD-ROM | disk | FTP | other *** search
/ 66.142.0.142 / 66.142.0.142.tar / 66.142.0.142 / rptDepartmentEventReport.aspx.vb < prev    next >
Text File  |  2010-08-24  |  13KB  |  240 lines

  1. Imports System.Data
  2. Imports System.Data.OleDb
  3. Imports ceTe.DynamicPDF
  4. Imports ceTe.DynamicPDF.PageElements
  5. Imports System.Web.UI
  6.  
  7. Public Class rptDepartmentEventReport
  8.     Inherits AspNetMaker7_tfpssnet
  9.  
  10. #Region " Web Form Designer Generated Code "
  11.  
  12.     'This call is required by the Web Form Designer.
  13.     <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  14.  
  15.     End Sub
  16.  
  17.  
  18.     Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
  19.         'CODEGEN: This method call is required by the Web Form Designer
  20.         'Do not modify it using the code editor.
  21.         InitializeComponent()
  22.     End Sub
  23.  
  24. #End Region
  25.  
  26.     'Groups for header elements
  27.     Private m_objPageHeader As Group = New Group
  28.     'Groups for footer elements
  29.     Private m_objPageFooter As Group = New Group
  30.  
  31.     'Page Dimensions of pages
  32.     Private Shared s_objPageDimensions As PageDimensions = New PageDimensions(PageSize.Letter, PageOrientation.Portrait, 54.0F)
  33.     'Current page that elements are being added to
  34.     Private m_objCurrentPage As ceTe.DynamicPDF.Page
  35.     'Top Y coordinate for the body of the report
  36.     Private m_fltBodyTop As Single = 82
  37.     'Bottom Y coordinate for the body of the report
  38.     Private m_fltBodyBottom As Single = s_objPageDimensions.Body.Bottom - s_objPageDimensions.Body.Top
  39.     'Current Y coordinate where elements are being added
  40.     Private m_fltCurrentY As Single
  41.     'Used to control the alternating background
  42.     Private m_blnAlternateBG As Boolean
  43.  
  44.     Private sStartDate As String, sEndDate As String, tmpCount As Long, SortOption As Long, tmpDepartmentID As Long
  45.     Private sEmployeeName As String, tmpLastEvent As String = "ZZZZZZZZZ"
  46.     Private tmpEventTotalMinutes As Long, tmpDayTotalMinutes As Long, tmpEmpCount As Long
  47.     Private tmpTotalHours As Double, tmpActualTotalHours As Double
  48.     Private tmpTotalAmount As Double, tmpActualTotalAmount As Double
  49.  
  50.     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  51.         sStartDate = Session("tmpStartDate")
  52.         sEndDate = Session("tmpEndDate")
  53.         tmpDepartmentID = Session("tmpDepartment")
  54.  
  55.         'Create a document and set it's properties
  56.         Dim objDocument As Document = New Document
  57.         objDocument.Creator = "rptDepartmentEventReport.aspx"
  58.         objDocument.Author = "Tony L. Clayton"
  59.         objDocument.Title = "PSS Department Event Report"
  60.         objDocument.InitialPageZoom = PageZoom.FitWidth
  61.  
  62.         'Adds elements to the header groups
  63.         SetPageHeader()
  64.         SetPageFooter()
  65.  
  66.         'Establises connection to the database
  67.         Dim objconnection As OleDbConnection = GetOpenDBConn()
  68.         Dim objData As OleDbDataReader = GetData(objconnection)
  69.  
  70.         'Builds the report
  71.         BuildDocument(objDocument, objData)
  72.  
  73.         'Cleans up database connections
  74.         objData.Close()
  75.         objconnection.Close()
  76.  
  77.         'Outputs the SimpleReport to the current web page
  78.         objDocument.DrawToWeb("rptDepartmentEventReport.pdf")
  79.         Response.End()
  80.     End Sub
  81.  
  82.     Private Sub SetPageHeader()
  83.         'Adds elements to the header group
  84.         With m_objPageHeader
  85.             .Add(New Image(Server.MapPath("images\logo.png"), 0, 0, 0.7F))
  86.             .Add(New Image(Server.MapPath("images\logo.png"), 405, 0, 0.7F))
  87.  
  88.             .Add(New Label("P R O D U C T I O N   S E R V I C E S   S C H E D U L I N G   S Y S T E M", 0, 0, 504, 10, Font.HelveticaBold, 8, TextAlign.Center))
  89.             .Add(New Label("Department Event Summary", 0, 12, 504, 16, Font.HelveticaBold, 16, TextAlign.Center))
  90.             .Add(New Label("As of " & ew_FormatDateTime(Now(), vbLongDate), 0, 30, 504, 9, Font.HelveticaBold, 9, TextAlign.Center))
  91.  
  92.             .Add(New Label("From " & ew_FormatDateTime(sStartDate, vbShortDate) & " through " & ew_FormatDateTime(sEndDate, vbShortDate), 0, 40, 504, 9, Font.HelveticaBold, 9, TextAlign.Left))
  93.             .Add(New Label("Department: " & Session("tmpDepartmentText"), 0, 40, 504, 9, Font.HelveticaBold, 9, TextAlign.Right))
  94.  
  95.             .Add(New Rectangle(120, 57, 105, (10), Grayscale.Black, New WebColor("000000"), 0.0F))
  96.             .Add(New Label("Scheduled", 145, 56, 50, 9, Font.TimesBold, 9, TextAlign.Right, RgbColor.White))
  97.             .Add(New Rectangle(260, 57, 105, (10), Grayscale.Black, New WebColor("000000"), 0.0F))
  98.             .Add(New Label("Actual", 275, 56, 50, 9, Font.TimesBold, 9, TextAlign.Right, RgbColor.White))
  99.             .Add(New Rectangle(400, 57, 105, (10), Grayscale.Black, New WebColor("000000"), 0.0F))
  100.             .Add(New Label("Variance", 420, 56, 50, 9, Font.TimesBold, 9, TextAlign.Right, RgbColor.White))
  101.  
  102.             .Add(New Label("Event Name", 5, 68, 50, 9, Font.TimesBold, 9))
  103.             .Add(New Label("Hours", 120, 68, 50, 9, Font.TimesBold, 9, TextAlign.Right))
  104.             .Add(New Label("Amount", 175, 68, 50, 9, Font.TimesBold, 9, TextAlign.Right))
  105.             .Add(New Label("Hours", 265, 68, 50, 9, Font.TimesBold, 9, TextAlign.Right))
  106.             .Add(New Label("Amount", 315, 68, 50, 9, Font.TimesBold, 9, TextAlign.Right))
  107.             .Add(New Label("Hours", 405, 68, 50, 9, Font.TimesBold, 9, TextAlign.Right))
  108.             .Add(New Label("Amount", 455, 68, 50, 9, Font.TimesBold, 9, TextAlign.Right))
  109.  
  110.             m_objPageHeader.Add(New Line(0, 80, 504, 80))
  111.         End With
  112.     End Sub
  113.  
  114.     Private Sub SetPageFooter()
  115.         'Adds elements to the footer group
  116.         Dim objLabel As PageNumberingLabel = New PageNumberingLabel("Page %%CP%% of %%TP%%", 0, 692, 504, 8, Font.HelveticaBold, 8, TextAlign.Right)
  117.         'objLabel.HasPageNumbering = True
  118.         m_objPageFooter.Add(objLabel)
  119.     End Sub
  120.  
  121.     Private Sub AddNewPage(ByVal document As Document)
  122.         'Adds a new page to the document
  123.         m_objCurrentPage = New ceTe.DynamicPDF.Page(s_objPageDimensions)
  124.         m_objCurrentPage.Elements.Add(m_objPageHeader)
  125.         m_objCurrentPage.Elements.Add(m_objPageFooter)
  126.  
  127.         'Uncomment the line below to add a layout grid to the each page
  128.         'm_objCurrentPage.Elements.Add(New LayoutGrid)
  129.  
  130.         m_fltCurrentY = m_fltBodyTop
  131.         m_blnAlternateBG = False
  132.  
  133.         document.Pages.Add(m_objCurrentPage)
  134.     End Sub
  135.  
  136.     Private Sub BuildDocument(ByVal document As Document, ByVal data As OleDbDataReader)
  137.         'Builds the PDF document with data from the DataReader
  138.         AddNewPage(document)
  139.         While data.Read()
  140.             'Add current record to the document
  141.             AddRecord(document, data)
  142.         End While
  143.     End Sub
  144.  
  145.     Private Sub AddRecord(ByVal document As Document, ByVal data As OleDbDataReader)
  146.         Dim intReqHeight As Integer
  147.         intReqHeight = 9
  148.  
  149.         'Adds a new page to the document if needed
  150.         If m_fltCurrentY > m_fltBodyBottom - 20 Then AddNewPage(document)
  151.  
  152.  
  153.         If tmpLastEvent <> data("evtDescription") And tmpLastEvent <> "ZZZZZZZZZ" Then
  154.             'Adds alternating background to document if needed
  155.             If m_blnAlternateBG Then
  156.                 m_objCurrentPage.Elements.Add(New Rectangle(0, m_fltCurrentY, 504, (intReqHeight + 4), Grayscale.Black, New WebColor("E0E0FF"), 0.0F))
  157.             End If
  158.  
  159.             m_objCurrentPage.Elements.Add(New TextArea(tmpLastEvent, 5, m_fltCurrentY, 120, intReqHeight, Font.TimesBold, 10))
  160.             m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpTotalHours, 2, -2, -2, -2), 120, m_fltCurrentY, 50, intReqHeight, Font.TimesBold, 10, TextAlign.Right))
  161.             m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpTotalAmount, 2, -2, -2, -2), 175, m_fltCurrentY, 50, intReqHeight, Font.TimesBold, 10, TextAlign.Right))
  162.             m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpActualTotalHours, 2, -2, -2, -2), 265, m_fltCurrentY, 50, intReqHeight, Font.TimesBold, 10, TextAlign.Right))
  163.             m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpActualTotalAmount, 2, -2, -2, -2), 315, m_fltCurrentY, 50, intReqHeight, Font.TimesBold, 10, TextAlign.Right))
  164.  
  165.             m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpActualTotalHours - tmpTotalHours, 2, -2, -2, -2), 405, m_fltCurrentY, 50, intReqHeight, Font.TimesBold, 10, TextAlign.Right))
  166.             m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpActualTotalAmount - tmpTotalAmount, 2, -2, -2, -2), 455, m_fltCurrentY, 50, intReqHeight, Font.TimesBold, 10, TextAlign.Right))
  167.  
  168.             tmpTotalHours = 0
  169.             tmpTotalAmount = 0
  170.             tmpActualTotalHours = 0
  171.             tmpActualTotalAmount = 0
  172.             'Toggles alternating background
  173.             m_blnAlternateBG = Not m_blnAlternateBG
  174.             'Increments the current Y position on the page
  175.             m_fltCurrentY += intReqHeight + 5
  176.             tmpCount += 1
  177.         End If
  178.         tmpLastEvent = data("evtDescription")
  179.         If Not IsDBNull(data("TotalHours")) Then
  180.             tmpTotalHours = tmpTotalHours + data("TotalHours")
  181.         End If
  182.         If Not IsDBNull(data("ActualTotalHours")) Then
  183.             tmpActualTotalHours = tmpActualTotalHours + data("ActualTotalHours")
  184.         End If
  185.         If Not IsDBNull(data("ShiftAmount")) Then
  186.             tmpTotalAmount = tmpTotalAmount + data("ShiftAmount")
  187.         End If
  188.         If Not IsDBNull(data("ActualAmount")) Then
  189.             tmpActualTotalAmount = tmpActualTotalAmount + data("ActualAmount")
  190.         End If
  191.  
  192.     End Sub
  193.  
  194.     Private Function GetOpenDBConn() As OleDbConnection
  195.         'Creates and opens a database connection
  196.         Dim sConnStr As String = EW_DB_CONNECTION_STRING
  197.         Dim objConnection As New OleDbConnection(sConnStr)
  198.         objConnection.Open()
  199.         Return objConnection
  200.     End Function
  201.  
  202.     Private Function GetData(ByVal connection As OleDbConnection) As OleDbDataReader
  203.         'Creates a DataReader for the report
  204.         Dim strSQL As String
  205.         Dim objCommand As OleDbCommand = connection.CreateCommand()
  206.         strSQL = "SELECT tblSchedule.schDate, tblEvents.evtID, tblEvents.evtDescription, " _
  207. & "tblDepartments.depAcctCode, tblSchedule.schDepID, " _
  208. & "tblParts.prtDescription, tblLocations.locDescription, tblSchedule.schStartTime, tblSchedule.schEndTime, " _
  209. & "tblEmployees.empFirstName, tblEmployees.empLastName, tblEmployees.empName, tblSchedule.schCallTime, " _
  210. & "tblSchedule.schOutTime, tblSchedule.schOutTime, tblTypes.typDescription, tblTypes.typDescription, " _
  211. & "tblEmployees.empRate, tblDepartments.depDescription, tblSchedule.schActualStart, tblSchedule.schActualEnd, " _
  212. & "tblEmployeeStatus.tscStatus, " _
  213. & "IIf((DateDiff('n',[schCallTime],[schOutTime])/60)=24,0,(DateDiff('n',[schCallTime],[schOutTime])/60)) AS [TotalHours],  " _
  214. & "IIf((DateDiff('n',[schActualStart],[schActualEnd])/60)=24,0,(DateDiff('n',[schActualStart],[schActualEnd])/60)) AS [ActualTotalHours], " _
  215. & "([ActualTotalHours]*[empRate]) AS [ActualAmount], ([TotalHours]*[empRate]) AS [ShiftAmount]," _
  216. & "IIf([evtDescription]='Projects' Or [evtDescription]='VIP Management' Or [evtDescription]='Weekend Services','0','1') AS [tmpOrder] " _
  217. & "FROM tblEmployeeStatus RIGHT JOIN (tblTypes RIGHT JOIN (tblLocations RIGHT JOIN (tblParts RIGHT JOIN (tblEvents RIGHT JOIN (tblEmployees INNER JOIN (tblDepartments RIGHT JOIN tblSchedule ON tblDepartments.depID = tblSchedule.schDepID) ON tblEmployees.empID = tblSchedule.schEmpID) ON tblEvents.evtID = tblSchedule.schEvtID) ON tblParts.prtID = tblSchedule.schPartsID) ON tblLocations.locID = tblSchedule.schLocID) ON tblTypes.typID = tblSchedule.schTypID) ON tblEmployeeStatus.ID = tblEmployees.empStatusID " _
  218. & "WHERE (evtDescription IS NOT NULL) AND "
  219.         If Not IsDBNull(sStartDate) Then
  220.             strSQL = strSQL & "(schDate >= #" & sStartDate & "#) "
  221.         End If
  222.         If Not IsDBNull(sEndDate) Then
  223.             If Not IsDBNull(sEndDate) Then
  224.                 strSQL = strSQL & " AND "
  225.             End If
  226.             strSQL = strSQL & "(schDate <= #" & sEndDate & "#) "
  227.         End If
  228.         If tmpDepartmentID <> 0 Then
  229.             strSQL = strSQL & " AND (tblSchedule.schDepID = " & tmpDepartmentID & ") "
  230.         End If
  231.         strSQL = strSQL & "ORDER BY IIf([evtDescription]='Projects' Or [evtDescription]='VIP Management' Or [evtDescription]='Weekend Services','0','1'), [evtDescription]"
  232.         Session("strSQL") = strSQL
  233.         objCommand.CommandText = strSQL
  234.         Dim objDataReader As OleDbDataReader = objCommand.ExecuteReader()
  235.  
  236.         Return objDataReader
  237.     End Function
  238.  
  239. End Class
  240.