Find Below a complete sample code to process the submitted Leave Form with Email/Workflow sort of features.
I hope you will like it.
----------------------
Const CompanyDomain As String = "xxx.org"
Const CompanyEmailSuffix As String = "@" & CompanyDomain
Const TechSupportEmail As String = "TechSupport" & CompanyEmailSuffix
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim fs As System.IO.FileStream = Nothing
Dim bw As System.IO.BinaryWriter = Nothing
Dim ArchivingDBConn As New System.Data.OleDb.OleDbConnection
Dim ArchivingDBCmd As New System.Data.OleDb.OleDbCommand
Try
Dim ServerPath As String = Server.MapPath(".")
Dim LeaveFormFileName As String
Dim LeaveFormFileNameFolder As String
Dim fso As New Scripting.FileSystemObject
Const CONeForms As String = "eForms"
Dim eFormsFolder As String = ServerPath & "\" & CONeForms & "\" & Session.SessionID
If Not fso.FolderExists(eFormsFolder) Then
fso.CreateFolder(eFormsFolder)
End If
Dim sreader As New System.IO.StreamReader(Page.Request.InputStream)
Dim xmlData As String = sreader.ReadToEnd()
Dim xmldoc As New System.Xml.XmlDataDocument
Dim chunk As String
Dim buffer() As Byte
Dim SubmittedFormPart As String
Dim SendFormToEmail As String, SendFormFromEmail As String
xmldoc.LoadXml(xmlData)
Session("SubmittedFormPart") = Request.QueryString("SubmittedFormPart")
SubmittedFormPart = Session("SubmittedFormPart").ToString
Session("StaffName") = xmldoc.GetElementsByTagName("Name")(0).InnerText
Session("StaffID") = xmldoc.GetElementsByTagName("StaffID")(0).InnerText
Session("StaffEmail") = Session("StaffID") & CompanyEmailSuffix
'Session("SubmittedFormSection") = xmldoc.GetElementsByTagName("SubmittedFormSection")(0).InnerText
Session("EmailSupervisor") = xmldoc.GetElementsByTagName("emailSupervisor")(0).InnerText
Session("EmailDeptHead") = xmldoc.GetElementsByTagName("emailDeptHead")(0).InnerText
Session("EmailHRMD") = xmldoc.GetElementsByTagName("emailHRMD")(0).InnerText
Session("EmailEDocFlow") = xmldoc.GetElementsByTagName("emailEDocFlow")(0).InnerText
Session("LeaveStartDate") = xmldoc.GetElementsByTagName("LeaveStartDate")(0).InnerText
Session("AdvanceLeave") = xmldoc.GetElementsByTagName("AdvanceLeave")(0).InnerText
Session("HRMDApproved") = xmldoc.GetElementsByTagName("HRMDApproved")(0).InnerText
Session("emailFinance") = xmldoc.GetElementsByTagName("emailFinance")(0).InnerText
If Session("LeaveStartDate") = "" Then
Session("LeaveStartDate") = Date.Today.ToString("yyyy-MM-dd")
Else
Dim arrChar() As Char = Session("LeaveStartDate").ToString.ToCharArray
Dim c As Char, strLeaveStartDate As String = ""
For Each c In arrChar
strLeaveStartDate = strLeaveStartDate & Chr(Asc(c))
Next
'Session("LeaveStartDate") = Convert.ToDateTime(strLeaveStartDate).ToString("yyyy-MM-dd")
Session("LeaveStartDate") = Date.Parse(strLeaveStartDate, New System.Globalization.CultureInfo("en-GB")).ToString("yyyy-MM-dd")
End If
If Session("StaffID") = "" Then
Response.Write("
ERROR: Staff ID was not specified. Please try again.
")
Response.End()
End If
LeaveFormFileName = "Leave-" & Session("StaffID") & "-" & Session("LeaveStartDate") & ".pdf"
LeaveFormFileNameFolder = eFormsFolder & "\" & LeaveFormFileName
chunk = xmldoc.GetElementsByTagName("chunk")(0).InnerXml
buffer = Convert.FromBase64String(chunk)
If fso.FileExists(LeaveFormFileName) Then
fso.DeleteFile(LeaveFormFileName, True)
End If
fs = New System.IO.FileStream(LeaveFormFileNameFolder, IO.FileMode.Create)
bw = New System.IO.BinaryWriter(fs)
bw.Write(buffer)
bw.Close()
bw = Nothing
fs.Close()
fs = Nothing
Dim LeaveFormLink As String = "./" & CONeForms & "/" & Session.SessionID & "/" & LeaveFormFileName
Dim BaseLink As String = Request.Url.GetLeftPart(UriPartial.Authority)
Dim thisWebRoot As String = Request.Path
If Left(thisWebRoot, 1) = "/" Then
thisWebRoot = thisWebRoot.Substring(1)
End If
Dim j As Integer = thisWebRoot.IndexOf("/")
thisWebRoot = thisWebRoot.Substring(0, j)
BaseLink = BaseLink & "/" & thisWebRoot
Dim LeaveFormLinkAbsolute As String = BaseLink & "/" & CONeForms & "/" & Session.SessionID & "/" & LeaveFormFileName
Dim LeaveFormHTMLLink As String = "
Click her to open the Leave Form (Temporary File) '" & LeaveFormFileName & "'"
Dim LeaveFormHTMLLinkAbsolute As String = "
Click her to open the Leave Form (Temporary File) '" & LeaveFormFileName & "'"
Dim EmailSubject As String = "", EmailBody As String = ""
Dim FormProcessingType As String = "", ArchivingRefNo As String = "(not ready yet)"
Dim qArchivingLastRefNo As System.Data.OleDb.OleDbDataReader
Dim ArchivingFolder As String = "E:\AppShares\eForms\HRMD"
Dim ArchivingFolderPDF As String = ArchivingFolder & "\" & LeaveFormFileName
Dim ArchivingLinkPDFAbsolute As String = "http://blablabla/eForms/HRMD/" & LeaveFormFileName
Dim ArchivingLinkPDFHTMLAbsolute As String = "
Click her to open the Archived Leave Form File '" & LeaveFormFileName & "'"
Select Case SubmittedFormPart
Case "1"
SendFormToEmail = Session("EmailSupervisor")
SendFormFromEmail = Session("StaffEmail")
FormProcessingType = "Leave Form Initiated by Staff, pending Supervisor Approval"
Case "2"
SendFormToEmail = Session("EmailDeptHead")
SendFormFromEmail = Session("EmailSupervisor")
FormProcessingType = "Leave Form Approved by Supervisor, pending Director Approval"
Case "3"
SendFormToEmail = Session("EmailHRMD")
SendFormFromEmail = Session("EmailDeptHead")
If SendFormFromEmail = "" Then
SendFormFromEmail = Session("EmailSupervisor")
End If
FormProcessingType = "Leave Form Approved by Director, pending HRMD Approval"
Case "4"
SendFormFromEmail = Session("EmailHRMD")
If Session("HRMDApproved") = "1" Then
SendFormToEmail = Session("EmailEDocFlow")
FormProcessingType = "Leave Form Approved by HRMD, pending Final Processing"
If Session("AdvanceLeave") = "1" Then
SendFormToEmail = SendFormToEmail & "," & Session("emailFinance")
End If
Else ' REJECTED
SendFormToEmail = Session("StaffEmail")
FormProcessingType = "Leave Form Rejected by HRMD"
End If
Case Else
SendFormToEmail = TechSup