﻿'ONLY contains shared methods/functions

Imports Snell_Cronjob.SystemFunctions
Imports Microsoft.Reporting.WebForms
Imports System.IO


Public Class ProjectFunctions

   Public Shared Function sql_get_Users(ByVal strDomainLogin As String, ByVal strDomain As String) As String
      Return "SELECT * " & _
        "FROM mstUserGroup" & strDomain & " INNER JOIN mstUser ON mstUserGroup" & strDomain & ".UserGroupID = mstUser.refUserGroup" & strDomain & "ID " & _
        "WHERE mstUser.strDomainLogin = '" & strDomainLogin & "'"

   End Function

   Public Overloads Shared Function FormatPercent(ByVal MyValue As Object, Optional ByVal intDecimals As Integer = 0, Optional ByVal IncludeLeadingDigit As TriState = TriState.UseDefault, Optional ByVal UseParensForNeg As TriState = TriState.UseDefault, Optional ByVal GroupDigits As TriState = TriState.UseDefault) As String
      'overloads the standard formatPerc function to add in "+" sign for positives
      Try
         If CDbl(MyValue) > 0 Then
            Return "+" & Microsoft.VisualBasic.FormatPercent(MyValue, intDecimals, IncludeLeadingDigit, UseParensForNeg, GroupDigits)
         Else
            Return Microsoft.VisualBasic.FormatPercent(MyValue, intDecimals, IncludeLeadingDigit, UseParensForNeg, GroupDigits)
         End If

      Catch ex As Exception
         Return "0.0"
      End Try

   End Function


   Public Overloads Shared Function FormatNumber(ByVal MyValue As Object, Optional ByVal intDecimals As Integer = 0, Optional ByVal IncludeLeadingDigit As TriState = TriState.UseDefault, Optional ByVal UseParensForNeg As TriState = TriState.UseDefault, Optional ByVal GroupDigits As TriState = TriState.UseDefault) As String
      'rgbc's server is set up with number format = "999 999.99", which is lame. it should be "999,999.99"
      Try

         Return Microsoft.VisualBasic.FormatNumber(MyValue, intDecimals, IncludeLeadingDigit, UseParensForNeg, GroupDigits).ToString.Replace(Chr(160), ",")
         'OMG! I HAVE NEVER SEEN SOMETHING THIS STUPID! LIVE SERVER SETTINGS NUMBER FORMATS NOT A SPACE CHARACTER, BUT A chr(160). WTF IS 160?! FUCKING PIECE OF SHIT! DIE!
      Catch ex As Exception
         Return "0.0"
      End Try
   End Function

   Public Shared Sub createPDF(ByVal RequisitionID As String, ByVal PinkSlipNumber As String, strStatus As String)

      Dim report As New Microsoft.Reporting.WebForms.LocalReport
      Dim FileName As String
      'MsgBox("After creating preport instance variable")

      'Set file name 
      If strStatus = "FSR_NewRequisition" Then
         FileName = "SubmittedRequisition_" & PinkSlipNumber
      Else
         FileName = "ApprovedRequisition_" & PinkSlipNumber
      End If

      Dim extension As String = Nothing
      Dim encoding As String = Nothing
      Dim mimeType As String = Nothing
      Dim streamids As String() = Nothing
      Dim deviceInfo As String
      Dim warnings As Warning() = Nothing

      'MsgBox("Before getting report path")
      'report.ReportPath = Directory.GetParent(Directory.GetParent(Directory.GetCurrentDirectory).ToString).ToString & "\Reports\RDLC\Requisition.rdlc"
      If (Not System.IO.Directory.Exists(System.AppDomain.CurrentDomain.BaseDirectory() & "\Reports\PDF")) Then
         System.IO.Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory() & "\Reports\PDF")
      End If

      report.ReportPath = System.AppDomain.CurrentDomain.BaseDirectory() & "Reports\RDLC\Requisition.rdlc"
      deviceInfo = _
    "<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>"
      'MsgBox("After getting report path")
      'Step 1: Instantiating your DataSets
      Dim dsRequisition As dsRequisitionTableAdapters.dsRequisitionTableAdapter = New dsRequisitionTableAdapters.dsRequisitionTableAdapter()
      Dim dsItem As dsItemTableAdapters.dsItemTableAdapter = New dsItemTableAdapters.dsItemTableAdapter()

      'Create the Requisition ID report parameter
      Dim reqID As New ReportParameter()
      reqID.Name = "RequisitionID"
      reqID.Values.Add(RequisitionID)

      'Set the report parameters for the report
      Dim parameters() As ReportParameter = {reqID}
      report.SetParameters(parameters)
      'MsgBox("Before getting and setting Requisition report data")
      Dim dtRequisition As DataTable = dsRequisition.GetData(RequisitionID)
      Dim rdsRequisition As ReportDataSource = New ReportDataSource()
      rdsRequisition.Name = "dsRequisition" 'This refers to the dataset name in the RDLC file  
      rdsRequisition.Value = dtRequisition
      report.DataSources.Add(rdsRequisition)
      'MsgBox("After getting and setting Requisition report data")

      'MsgBox("Before getting and setting Item report data")
      Dim dtItem As DataTable = dsItem.GetData(RequisitionID)
      Dim rdsItem As ReportDataSource = New ReportDataSource()
      rdsItem.Name = "dsItem" 'This refers to the dataset name in the RDLC file  
      rdsItem.Value = dtItem
      report.DataSources.Add(rdsItem)
      'MsgBox("After getting and setting Item report data")

      'MsgBox("Before removing existing files from PDF folder ")
      'Removed all existing files from pdf folder before exporting to PDF
      'Dim filePaths() As String = Directory.GetFiles(System.AppDomain.CurrentDomain.BaseDirectory() & "\Reports\PDF\")
      'For Each filePath As String In filePaths
      '    File.Delete(filePath)
      'Next
      'remove this file if exists - pj
      Try
         File.Delete(System.AppDomain.CurrentDomain.BaseDirectory() & "\Reports\PDF\" & FileName & ".pdf")
      Catch ex As Exception

      End Try


      'MsgBox("After removing existing files from PDF folder ")


      Dim mybytes() As Byte = report.Render("PDF", deviceInfo, extension, encoding, mimeType, streamids, warnings) 'for exporting to PDF  
      'MsgBox("After rendering report PDF ")
      Dim fs As New FileStream(System.AppDomain.CurrentDomain.BaseDirectory() & "\Reports\PDF\" & FileName & ".pdf", FileMode.Create)
      fs.Write(mybytes, 0, mybytes.Length)
      'MsgBox("After writing report to PDF File ")
      fs.Dispose()
      fs.Close()
   End Sub

   Public Shared Sub WriteLog(LogType As String, ProcessName As String, ProcessEvent As String, Log As String, Optional blnEmailed As Integer = 0, Optional tblLog As String = "stgSuperbowlLog")
      Dim sql As String

      sql = "INSERT INTO " & tblLog & " (strStamp, dtLog, strType, strProcess, strAction, txtLog, blnEmail) " & _
            "VALUES ('" & Date.Now.Ticks.ToString() & "', '" & Date.Now.ToString("u") & "', '" & LogType & "', '" & ProcessName & "', '" & ProcessEvent & "', '" & db.CleanString(Log) & "', " & blnEmailed & ")"

      db.doQuery(sql)

   End Sub

   Public Shared Function unsalt(strSalt As String) As String
      Return strSalt.Replace("ASP", "php")
   End Function
End Class
