 |
|
 |
Hi,
Here is my code with logic.. Public Sub main() dtableClients = LoadClients() If dtableClients.Rows.Count > 0 Then For i = 0 To dtableClients.Rows.Count - 1 strClientId = dtableClients.Rows(i).Item("Client_id").ToString() strCutOffTime = dtableClients.Rows(i).Item("cut_off_time").ToString() strBillerId = dtableClients.Rows(i).Item("biller_id").ToString() 'strUsername = dtableClients.Rows(i).Item("processor_username").ToString() 'strpassword = dtableClients.Rows(i).Item("processor_password").ToString() strCreditCardProcessor = dtableClients.Rows(i).Item("credit_card_processor").ToString() strDebitcardProcessor = dtableClients.Rows(i).Item("debit_card_processor").ToString() strCheckprocessor = dtableClients.Rows(i).Item("check_processor").ToString() strSavingsProcessor = dtableClients.Rows(i).Item("savings_processor").ToString() terminalnumber = dtableClients.Rows(i).Item("terminal_number").ToString() Dim objEodThread As New EodprocessThreading Dim objthread As New Thread(AddressOf objEodThread.EodProcessThread) objEodThread.strClientId = strClientId objEodThread.strcutOffTime = strCutOffTime objEodThread.strBillerId = strBillerId objEodThread.strCreditCardProcessor = strCreditCardProcessor objEodThread.strDebitcardProcessor = strDebitcardProcessor objEodThread.strCheckprocessor = strCheckprocessor objEodThread.strSavingsProcessor = strSavingsProcessor objEodThread.terminalnumber = terminalnumber objthread.Start() Next end sub
Public Class EodprocessThreading Public strClientId As String Public strcutOffTime As String Public strBillerId As String Public strCreditCardProcessor As String Public strDebitcardProcessor As String Public strCheckprocessor As String Public strSavingsProcessor As String Public terminalnumber As String Public Sub EodProcessThread() SyncLock GetType(EodprocessThreading)
dtableEod.Rows.Clear() dtableEod = LoadTransactions(strClientId) 'Some update process going here
End SyncLock End Sub End Class
In that code, dtableClients = LoadClients() We load all clients from client table.
Dim objthread As New Thread(AddressOf objEodThread.EodProcessThread) In that code,we assign the thread process i.e.,eodprocessthread for each client one by one..
dtableEod = LoadTransactions(strClientId)
My problem is,,in that line,i have client index (client id) corrupting that is changing not in sequencial order...
Its very urgent.. please reply as soon as possible.
thanks, Guna Sundari.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
I am not sure If I understood the problem correctly. What I have understood that.. while you are creating object of the class (where you have kept the threaded method), each time in the FOR loop the customer id is getting changed.. That means.. all the threads are seeing the same CustomerID.
Is this your problem?
Let me know
Rakesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi, Recently i got one issue using multithreading concept applied through datatable over for loop.. In that,i get some clients from datatable..and in that clients for loop,i updated client details over clients one by one.. i use Synclock gettype(object) keyword to achieve this.. but it can not synchronozely run clients one by one..it will corrupted..
please send me any valuable suggestion.
Thanks, Guna Sundari.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
I did not understand what you are trying to do exactly. Can you paste here a part of your code? so that I can understand what you are trying to do. Synclock is used to LOCK an object from updating by different code segment at the same time. for example if you are running multiple thread and each thread work on the same shared object and you want a thread to wait when another thread is working on that object, then in that case you need to use synclock. Let me know your problem exactly, I'll try my best 
Cheers Rakesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Here is my code.. i created vb.net application program for multiple clients use same application process..for that purpose.
Here is my code. Imports Microsoft.VisualBasic Imports System.Data Imports System.Data.Odbc Imports System.Net.Mail Imports System.Configuration Imports System.Collections Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Web.UI.HtmlControls Imports System.Net Imports System.IO Imports System.Text.Encoding Imports System.Security.Cryptography.X509Certificates Imports System.Threading Imports System.Text Imports System.Data.SqlClient Imports System.Security.Cryptography Module Module1 Private strEODExternal As String Private dbCmd As OdbcCommand Private dbRdr As OdbcDataReader Private dbAdpt As OdbcDataAdapter Dim dtable As New DataTable Dim dtableRemittance As New DataTable Dim dtableDetails As New DataTable
Dim dtableClients As New DataTable Dim sqlstr As String Dim strValue() As String Dim strProcessor As String Dim strprocessorType As String Dim strTransactionId As String Dim strpaymentTypeId As String Dim strClientId As String Dim strEOdId As String Dim strUsername As String Dim strpassword As String Dim strMessage As String Dim objDBConnection As New DBConnection ' for DB connection Dim dtableClient_1 As New DataTable 'Dim host As String = System.Configuration.ConfigurationSettings.AppSettings("HOST") Dim username As String = System.Configuration.ConfigurationSettings.AppSettings("USERNAME") Dim password As String = System.Configuration.ConfigurationSettings.AppSettings("PASSWORD") Public Class MyCertificateValidation Implements System.Net.ICertificatePolicy 'This class handles problems with certificates if ssl (https) is used Public Function CheckValidationResult(ByVal srvPoint As ServicePoint, _ ByVal cert As X509Certificate, ByVal request As WebRequest, ByVal problem As Integer) _ As Boolean Implements ICertificatePolicy.CheckValidationResult Return True ' Accept all certificates End Function End Class Public Class RequestState Public request As WebRequest = Nothing Public requestDocument As String End Class #Region "private variables" #End Region
#Region "Private Variables for Decrypt" Private passPhrase As String = "F1r5tV1@w" ' can be any string Private saltValue As String = System.Configuration.ConfigurationSettings.AppSettings("SALTKEY") Private hashAlgorithm As String = "SHA1" ' can be "MD5" Private passwordIterations As Integer = 2 ' can be any number Private initVector As String = "@2C3d4D5f6f7h8I9" ' must be 16 bytes Private keySize As Integer = 256 ' can be 192 or 128 #End Region Public Sub main() Try Dim i, j, k, t As Integer i = 0 j = 0 k = 0 t = 0 Dim strClientId As String Dim strCutOffTime As String Dim strBillerId As String
Dim strCreditCardProcessor As String Dim strDebitcardProcessor As String Dim strCheckprocessor As String Dim strSavingsProcessor As String
Dim terminalnumber As String Dim dtableProc As New DataTable dtableClients = New DataTable dtableClients = LoadClients() If dtableClients.Rows.Count > 0 Then For i = 0 To dtableClients.Rows.Count - 1 strClientId = dtableClients.Rows(i).Item("Client_id").ToString() strCutOffTime = dtableClients.Rows(i).Item("cut_off_time").ToString() strBillerId = dtableClients.Rows(i).Item("biller_id").ToString() 'strUsername = dtableClients.Rows(i).Item("processor_username").ToString() 'strpassword = dtableClients.Rows(i).Item("processor_password").ToString() strCreditCardProcessor = dtableClients.Rows(i).Item("credit_card_processor").ToString() strDebitcardProcessor = dtableClients.Rows(i).Item("debit_card_processor").ToString() strCheckprocessor = dtableClients.Rows(i).Item("check_processor").ToString() strSavingsProcessor = dtableClients.Rows(i).Item("savings_processor").ToString() terminalnumber = dtableClients.Rows(i).Item("terminal_number").ToString() Dim objEodThread As New EodprocessThreading Dim objthread As New Thread(AddressOf objEodThread.EodProcessThread) objEodThread.strClientId = strClientId objEodThread.strcutOffTime = strCutOffTime objEodThread.strBillerId = strBillerId objEodThread.strCreditCardProcessor = strCreditCardProcessor objEodThread.strDebitcardProcessor = strDebitcardProcessor objEodThread.strCheckprocessor = strCheckprocessor objEodThread.strSavingsProcessor = strSavingsProcessor objEodThread.terminalnumber = terminalnumber objthread.Start() Next
End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Sub Public Class EodprocessThreading Public strClientId As String Public strcutOffTime As String Public strBillerId As String Public strCreditCardProcessor As String Public strDebitcardProcessor As String Public strCheckprocessor As String Public strSavingsProcessor As String Public terminalnumber As String Public Sub EodProcessThread() SyncLock GetType(EodprocessThreading)
Dim StrEodTransCount As Integer Dim dtableProc As New DataTable Dim strTransId As String Dim parentId As String = "0" Dim ProcessorName As String Dim strMerchantid As String Dim lowerTransId As String Dim UpperTransId As String Dim StrRemittanceFile As String Dim amount As String Dim genkey As String Dim total() As String Dim Bin As String Dim FpCount As String Dim Sequencenumber As String Dim BatchSeqNumber As String Dim k As Integer = 0 Dim dtableEod As New DataTable
dtableEod.Rows.Clear() dtableEod = LoadTransactions(strClientId) ChangeClientStaus(strClientId, "Y") StrEodTransCount = dtableEod.Rows.Count If dtableEod.Rows.Count > 0 Then strTransId = dtableEod.Rows(dtableEod.Rows.Count - 1).Item("trans_id").ToString() Else strTransId = 0 End If If strTransId = 0 Then strTransId = getlastProcessedTransId(strClientId) End If
dtableProc = SelectDistinct(getProcessor(strClientId), "Processor Name", "Mid") 'dtableProc = SelectDistinct(getProcessor(dtableClients.Rows(i).Item("Client_id").ToString()), "Processor Name") Dim ParentDetailId As String parentId = MakeEODStatusEntry(strClientId) ParentDetailId = MakeEODDetailEntry(strClientId, strBillerId, strCreditCardProcessor, strDebitcardProcessor, strCheckprocessor, strSavingsProcessor, parentId) If dtableProc.Rows.Count = 0 Then ' LogEODTransaction(strClientId, ProcessorName, strMerchantid, strTransId, strCutOffTime) If EODProcess(ProcessorName, "EOD", strMerchantid, strTransId, strClientId, strcutOffTime, strUsername, strpassword, getGenKey(strClientId), terminalnumber, Bin, amount, Sequencenumber, strClientId, BatchSeqNumber) = True Then lowerTransId = getLowerTransId(strClientId) UpperTransId = getUpperTransId(strClientId) If UpdateTransactionStatus(lowerTransId, UpperTransId, strClientId, ProcessorName) = True Then UpdateBillData(lowerTransId, UpperTransId, strClientId)
'UpdateEODDetailEntry(ParentDetailId, dtableProc.Rows(k), "S") End If Else 'UpdateEODDetailEntry(ParentDetailId, dtableProc.Rows(k), "F") End If ElseIf dtableProc.Rows.Count = 1 Then For k = 0 To dtableProc.Rows.Count - 1 ProcessorName = getProcessorName(dtableProc.Rows(k).Item(0).ToString()) If ProcessorName <> Nothing Then If UCase(ProcessorName) = "ELAVON" Then strMerchantid = GetMerchantId(strClientId) Else strMerchantid = dtableProc.Rows(k).Item(1).ToString() End If
total = Split(getTotalBatchAmountandcount(strClientId, strBillerId, ProcessorName, strMerchantid), "~") amount = total(0) FpCount = total(1)
If UCase(ProcessorName) = "TSYS" Or UCase(ProcessorName) = "ELAVON" Then Sequencenumber = getBatchSequenceNumber(strClientId, strBillerId, ProcessorName, strMerchantid) BatchSeqNumber = getElavonBatchSequenceNumber(strClientId, strBillerId, ProcessorName, strMerchantid) Else Sequencenumber = "" BatchSeqNumber = "0" End If If UCase(ProcessorName) = "TSYS" Then strUsername = GettsysUserId(strClientId) strpassword = GettsysPassword(strClientId) Else strUsername = GetUsername(strClientId) strpassword = GetPassword(strClientId) End If Bin = getBin(ProcessorName, strClientId)
If UCase(ProcessorName) = "ELAVON" Then Dim strresponse() As String strresponse = Split(SUMRequest(amount, FpCount, ProcessorName, "SUM", strMerchantid, strTransId, strClientId, strcutOffTime, strUsername, strpassword, getGenKey(strClientId), terminalnumber, Bin, amount, Sequencenumber, strClientId, BatchSeqNumber), "|") amount = strresponse(1)
End If
If EODProcess(ProcessorName, "EOD", strMerchantid, strTransId, strClientId, strcutOffTime, strUsername, strpassword, getGenKey(strClientId), terminalnumber, Bin, amount, Sequencenumber, strClientId, BatchSeqNumber) = True Then lowerTransId = getLowerTransId(strClientId) UpperTransId = getUpperTransId(strClientId) If UpdateTransactionStatus(lowerTransId, UpperTransId, strClientId, ProcessorName) = True Then UpdateBillData(lowerTransId, UpperTransId, strClientId)
UpdateEODDetailEntry(ParentDetailId, dtableProc.Rows(k), "S") End If Else
UpdateEODDetailEntry(ParentDetailId, dtableProc.Rows(k), "F") End If Else LogEODTransaction(strClientId, ProcessorName, strMerchantid, strTransId, strcutOffTime) End If Next Else For k = 0 To dtableProc.Rows.Count - 1 ProcessorName = getProcessorName(dtableProc.Rows(k).Item(0).ToString()) If ProcessorName <> "0" Then If ProcessorName <> Nothing Then If UCase(ProcessorName) = "ELAVON" Then strMerchantid = GetMerchantId(strClientId) Else strMerchantid = dtableProc.Rows(k).Item(1).ToString() End If
total = Split(getTotalBatchAmountandcount(strClientId, strBillerId, ProcessorName, strMerchantid), "~") amount = total(0) FpCount = total(1)
If UCase(ProcessorName) = "TSYS" Or UCase(ProcessorName) = "ELAVON" Then Sequencenumber = getBatchSequenceNumber(strClientId, strBillerId, ProcessorName, strMerchantid) BatchSeqNumber = getElavonBatchSequenceNumber(strClientId, strBillerId, ProcessorName, strMerchantid) Else Sequencenumber = "" BatchSeqNumber = "0" End If If UCase(ProcessorName) = "TSYS" Then strUsername = GettsysUserId(strClientId) strpassword = GettsysPassword(strClientId) Else strUsername = GetUsername(strClientId) strpassword = GetPassword(strClientId) End If Bin = getBin(ProcessorName, strClientId)
If UCase(ProcessorName) = "ELAVON" Then Dim strresponse() As String strresponse = Split(SUMRequest(amount, FpCount, ProcessorName, "SUM", strMerchantid, strTransId, strClientId, strcutOffTime, strUsername, strpassword, getGenKey(strClientId), terminalnumber, Bin, amount, Sequencenumber, strClientId, BatchSeqNumber), "|") amount = strresponse(1)
End If
If EODProcess(ProcessorName, "EOD", strMerchantid, strTransId, strClientId, strcutOffTime, strUsername, strpassword, getGenKey(strClientId), terminalnumber, Bin, amount, Sequencenumber, strClientId, BatchSeqNumber) = True Then lowerTransId = getLowerTransId(strClientId) UpperTransId = getUpperTransId(strClientId) If UpdateTransactionStatus(lowerTransId, UpperTransId, strClientId, ProcessorName) = True Then UpdateBillData(lowerTransId, UpperTransId, strClientId)
UpdateEODDetailEntry(ParentDetailId, dtableProc.Rows(k), "S") End If Else
UpdateEODDetailEntry(ParentDetailId, dtableProc.Rows(k), "F") End If Else LogEODTransaction(strClientId, ProcessorName, strMerchantid, strTransId, strcutOffTime) End If End If
Next End If Try ChangeClientStaus(strClientId, "N") UpdateEODStatus(parentId) 'GenerateRemittanceFile Dim a() As String Dim StrValue As String = "" GenerateRemittanceFile(strClientId, strBillerId, strTransId) StrRemittanceFile = GetRemittanceFile(strClientId) StrValue = GetTimeBasedFormart(strClientId)
a = Split(StrValue, "|") InsertEodFTPLOg(strClientId, StrRemittanceFile, a(0), a(1)) Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try
''''''''''''''''''''''''''''''''''''' FTP Deatils'''''''''''''''''''''''''''''''''''' ''Upload file using FTP ''If System.Configuration.ConfigurationSettings.AppSettings("SiteMode") = "LIVE" Then 'uploadStrRemittanceFileData(StrRemittanceFile, strClientId) '' End If
''upload the File To Rick Machine '' TestUploadFile(StrRemittanceFile, strClientId)
''Check DeliveryMethod 'If CheckDeliveryMethod(strClientId) = True Then ' 'upload file to client machine if its Requeried ' uploaddatatoclientmachine(StrRemittanceFile, strClientId) 'End If '''''''''''''''''''''''''''''''''''''''''''' End SyncLock End Sub End Class
Public Function GetTimeBasedFormart(ByVal Strclientid As String) As String Try Dim parameterValue As String = "" sqlstr = "select delivery_method,time_based_time from client_config_template where client_id='" & Strclientid & "'" objDBConnection.DbConnOpen() 'Open Connection dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then While dbRdr.Read() parameterValue = dbRdr.GetValue(0).ToString() & "|" & dbRdr.GetValue(1).ToString() End While End If
Return parameterValue
Catch ex As Exception Throw Finally objDBConnection.DbConnClose() 'Close Connection End Try End Function Public Function InsertEodFTPLOg(ByVal StrClientId As String, ByVal File_name As String, ByVal delivery_method As String, ByVal delivery_time As String) As Boolean Try sqlstr = "insert into eod_ftp(client_id ,date_time,remittance_file_name,status,delivery_method,delivery_time)values('" & StrClientId & "','" & objDBConnection.ChangeDateFormat(System.DateTime.Now) & "','" & objDBConnection.Replace(File_name) & "','A','" & delivery_method & "','" & delivery_time & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbCmd.ExecuteNonQuery() Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() ' Closes a DB connection End Try End Function Public Function GettsysUserId(ByVal strClientId As String) As String Dim tsysUserId As String = "" Try sqlstr = "select tsys_user_id from client_config_template where client_id='" & strClientId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then tsysUserId = dbRdr.GetValue(0).ToString() Else tsysUserId = "" End If Return tsysUserId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GettsysPassword(ByVal strClientId As String) As String Dim tsysPassword As String = "" Try sqlstr = "select tsys_password from client_config_template where client_id='" & strClientId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then tsysPassword = dbRdr.GetValue(0).ToString() Else tsysPassword = "" End If Return tsysPassword Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GetUsername(ByVal strClientId As String) As String Dim UserId As String = "" Try sqlstr = "select processor_username from client_config where client_id='" & strClientId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then UserId = dbRdr.GetValue(0).ToString() Else UserId = "" End If Return UserId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GetPassword(ByVal strClientId As String) As String Dim Password As String = "" Try sqlstr = "select processor_password from client_config where client_id='" & strClientId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then Password = dbRdr.GetValue(0).ToString() Else Password = "" End If Return Password Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function CheckDeliveryMethod(ByVal strclientid As String) As Boolean Try Dim delivery_method As String sqlstr = "Select delivery_method from client_config_template where client_id='" & strclientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then delivery_method = dbRdr.GetValue(0).ToString() Else delivery_method = "" End If
If delivery_method = "FileGeneration" Then Return True Else Return False End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function TestUploadFile(ByVal StrRemittanceFile As String, ByVal strClientId As String) Try
Dim hostnew_1 As String = System.Configuration.ConfigurationSettings.AppSettings("ClientHost") Dim strusername As String = System.Configuration.ConfigurationSettings.AppSettings("ClientUSERNAME") Dim StrPassword As String = System.Configuration.ConfigurationSettings.AppSettings("ClientPASSWORD")
Dim objFtp As New FTPclient(hostnew_1, strusername, StrPassword)
If System.IO.File.Exists(Application.StartupPath & "\RemittanceData\" & StrRemittanceFile) = True Then
objFtp.Upload(Application.StartupPath & "\RemittanceData\" & StrRemittanceFile) 'Delete The File In the Local 'File.Delete(Application.StartupPath & "\RemittanceData\" & StrRemittanceFile) End If Catch ex As Exception
End Try End Function Public Function uploaddatatoclientmachine(ByVal StrRemittanceFile As String, ByVal strclientid As String) Try Dim SendLocation As String Dim strGetFtpUrl As String ' Dim StrSSLcertificate As String Dim Ftp_Url As String Dim a() As String Dim StrFtpDetails As String = "" Dim arryftpdetails() As String Dim StrFtpMethod As String = "" Dim StrFTPLocation As String = "" Dim StrFTPUserName As String = "" Dim StrFtpPassword As String = "" Dim SSLcertificate As String Dim FTPMode As String
If GetTransferFileViaFTP(strclientid) = True Then StrFtpDetails = getftpDetails(strclientid) arryftpdetails = Split(StrFtpDetails, "|") StrFtpMethod = arryftpdetails(0) StrFTPLocation = arryftpdetails(1) StrFTPUserName = arryftpdetails(2) StrFtpPassword = arryftpdetails(3)
strGetFtpUrl = getftpURL(strclientid) a = Split(strGetFtpUrl, "|") Ftp_Url = a(0) StrSSLcertificate = a(1) If StrSSLcertificate = "Y" Then SSLcertificate = "Yes" ElseIf StrSSLcertificate = "N" Then SSLcertificate = "No" End If
SendLocation = GetFPLocation(strclientid)
If GetClientFTPMode(strclientid) = "S" Then FTPMode = "SECURE-FTP" Else FTPMode = "SFTP" End If
sendClientFtpRequest(UCase(StrFtpMethod), FTPMode, SSLcertificate, StrRemittanceFile, SendLocation, Ftp_Url, StrFTPLocation, StrFTPUserName, StrFtpPassword, strclientid)
End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function 'Public Function Getbillinformationload(ByVal strclientid As String) As Boolean ' Try ' Dim billload As String ' sqlstr = "Select bill_info_load from client_config where client_id='" & strclientid & "'" ' objDBConnection.DbConnOpen() ' dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) ' dbRdr = dbCmd.ExecuteReader() ' If dbRdr.HasRows Then ' billload = dbRdr.GetValue(0).ToString() ' Else ' billload = "" ' End If
' If billload = "File" Then ' Return True ' Else ' Return False ' End If
' Catch ex As Exception ' Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog ' objerrorlog.UserName = "EOD EXE" ' objerrorlog.UserType = "EOD EXE" ' objerrorlog.Excep = ex ' objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) ' objerrorlog = Nothing ' Finally ' objDBConnection.DbConnClose() ' End Try 'End Function Public Function sendClientFtpRequest(ByVal RequestType As String, ByVal FTPMode As String, ByVal UseCert As String, ByVal LocalFileName As String, ByVal LocalDirectory As String, ByVal RemoteHost As String, ByVal RemoteDirectory As String, ByVal RemoteUser As String, ByVal RemotePassword As String, ByVal strclientid As String) As Object Dim _logDocument As String Try
_requestDocument = "RequestType=" & RequestType & "&FTPMode=" & FTPMode & "&UseCert=" & UseCert & "&LocalFileName=" & LocalFileName & "&LocalDirectory=" & LocalDirectory & "/" & strclientid & "&RemoteHost=" & RemoteHost & "&RemoteDirectory=" & RemoteDirectory & "&RemoteUser=" & RemoteUser & "&RemotePassword=" & Decrypt(RemotePassword) & "&RemoteFileName=" & LocalFileName
_requestDocument = _requestDocument.Replace("'", "")
'in case of problem with certificate ServicePointManager.CertificatePolicy = New MyCertificateValidation
'If sitemode = "LIVE" Then _web = CType(WebRequest.Create(System.Configuration.ConfigurationSettings.AppSettings("UploadDate_API")), HttpWebRequest) With _web .ContentType = "application/x-www-form-urlencoded" .Method = "POST" .KeepAlive = False .ContentLength = _requestDocument.Length .Timeout = System.Configuration.ConfigurationSettings.AppSettings("APITIMEOUT")
End With
send() 'send the request retrieve() 'get the data
Return _responseDocument Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally
Dim text() As String Dim status As String Dim sampletext As String = _responseDocument If sampletext <> Nothing Then Dim a As String = sampletext.TrimStart Dim seps As Char() = New Char() {" "c}
text = a.Split(seps) If text(0).ToString = "0000" Then status = "Success" Else status = "Failure" End If Else status = "F" End If _logDocument = "RequestType=" & RequestType & "&FTPMode=" & FTPMode & "&UseCert=" & UseCert & "&LocalFileName=" & LocalFileName & "&LocalDirectory=" & LocalDirectory & "/" & strclientid & "&RemoteHost=" & RemoteHost & "&RemoteDirectory=" & RemoteDirectory & "&RemoteUser=" & RemoteUser & "&RemotePassword=" & MaskCharacters(Decrypt(RemotePassword)) & "&RemoteFileName=" & LocalFileName
InsertFTPLog(_logDocument, "EODFTP", status, _responseDocument, strclientid)
End Try End Function Public Function maskCharacters(ByVal remotepwd As String) As String If remotepwd <> Nothing Then Dim count As Integer = remotepwd.Length Dim source As String = "" Dim i As Integer Try For i = 0 To count - 1 source = "*" & source Next Return source
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End If End Function Public Function getftpURL(ByVal strclientid As String) As String Try Dim StrFullFtpDetails As String = "" Dim str_Recon_ftp_ftp_url As String = "" Dim str_Recon_ssl_certificate As String = ""
sqlstr = "Select ftphost_ip,ssl_certificate from client_config_template where client_id='" & strclientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then str_Recon_ftp_ftp_url = dbRdr.GetValue(0).ToString() str_Recon_ssl_certificate = dbRdr.GetValue(1).ToString()
End If StrFullFtpDetails = str_Recon_ftp_ftp_url & "|" & str_Recon_ssl_certificate
Return StrFullFtpDetails Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function
Public Function getftpDetails(ByVal strclientid As String) As String Try Dim FullFtpDetails As String = "" Dim StrFtpMethod As String = "" Dim StrFTPLocation As String = "" Dim StrFTPUserName As String = "" Dim StrFtpPassword As String = ""
sqlstr = "Select recon_ftp_method ,recon_ftp_ip ,recon_ftp_user_name ,recon_ftp_password from client_config where client_id='" & strclientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then StrFtpMethod = dbRdr.GetValue(0).ToString() StrFTPLocation = dbRdr.GetValue(1).ToString() StrFTPUserName = dbRdr.GetValue(2).ToString() StrFtpPassword = dbRdr.GetValue(3).ToString() End If FullFtpDetails = StrFtpMethod & "|" & StrFTPLocation & "|" & StrFTPUserName & "|" & StrFtpPassword
Return FullFtpDetails Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function InsertFTPLog(ByVal request_string As String, ByVal request_type As String, ByVal strStatus As String, ByVal response_string As String, ByVal client_id As String) As String Try
'Save in the database sqlstr = "insert into ftp_log(request_string,request_type,date_time,status,response_string,client_id)values(?,?,?,?,?,?)"
objDBConnection.DbConnOpen() 'Open Db dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn)
dbCmd.Parameters.Add("@request_string", OdbcType.Text) dbCmd.Parameters("@request_string").Value = objDBConnection.Replace(replaceamp(request_string))
dbCmd.Parameters.Add("@request_type", OdbcType.VarChar, 50) dbCmd.Parameters("@request_type").Value = request_type
dbCmd.Parameters.Add("@date_time", OdbcType.DateTime) dbCmd.Parameters("@date_time").Value = objDBConnection.ChangeDateFormat(System.DateTime.Now)
dbCmd.Parameters.Add("@status", OdbcType.VarChar, 20) dbCmd.Parameters("@status").Value = strStatus
dbCmd.Parameters.Add("@response_string", OdbcType.Text) dbCmd.Parameters("@response_string").Value = response_string
dbCmd.Parameters.Add("@client_id", OdbcType.VarChar, 20) dbCmd.Parameters("@client_id").Value = client_id
dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function GetTransferFileViaFTP(ByVal strclientid As String) As Boolean Try Dim recon_ftp As String Dim recon_ftp_method As String sqlstr = "Select recon_ftp,recon_ftp_method from client_config where client_id='" & strclientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then recon_ftp = dbRdr.GetValue(0).ToString() recon_ftp_method = dbRdr.GetValue(1).ToString() Else recon_ftp = "" recon_ftp_method = "" End If
If recon_ftp = "Y" And recon_ftp_method <> "Place" And recon_ftp_method <> "" Then Return True Else Return False End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GetMerchantId(ByVal StrClientid As String) As String Dim strMerchantId As String = "" Try sqlstr = "Select elavon_merchant_id from client_config where client_id='" & StrClientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then strMerchantId = dbRdr.GetValue(0).ToString() Else strMerchantId = "" End If Return strMerchantId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function getBin(ByVal ProcessorName As String, ByVal strClientId As String) As String Dim Bin As String = "" Try If ProcessorName = "ELAVON" Then sqlstr = "Select elavon_bin from client_config_template where client_id='" & strClientId & "'" Else sqlstr = "Select bin from client_config_template where client_id='" & strClientId & "'" End If objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then Bin = dbRdr.GetValue(0).ToString()
Else Bin = ""
End If Return Bin Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function getBatchSequenceNumber(ByVal clientId As String, ByVal billerId As String, ByVal processorname As String, ByVal merchantId As String) As String Dim BatchSequenceNumber As String = "" Try sqlstr = "SELECT max(batch_seq_number1) FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND pt.trans_id > (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then BatchSequenceNumber = dbRdr.GetValue(0).ToString()
Else BatchSequenceNumber = ""
End If Return BatchSequenceNumber Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function getElavonBatchSequenceNumber(ByVal clientId As String, ByVal billerId As String, ByVal processorname As String, ByVal merchantId As String) As String Dim ElavonBatchSequenceNumber As String = "" Try sqlstr = "SELECT max(elavon_batch_seq1) FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND pt.trans_id >= (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then ElavonBatchSequenceNumber = dbRdr.GetValue(0).ToString()
Else ElavonBatchSequenceNumber = ""
End If Return ElavonBatchSequenceNumber Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function getTotalBatchAmountandcount(ByVal clientId As String, ByVal billerId As String, ByVal processorname As String, ByVal merchantId As String) As String Try Dim TotPayAmt As Long Dim TotServiceAmt As Long Dim count As String Dim TotVoidPayAmt As Long Dim TotVoidServiceAmt As Long Dim Voidcount As String Dim dbRdr1 As OdbcDataReader
Dim TotRefundPayAmt As Long Dim TotRefundServiceAmt As Long Dim Refundcount As String
If processorname = "ELAVON" Then sqlstr = "SELECT sum(payment_amount) as payment_amount,sum(service_fee) as service_fee,count(*) as count FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success') and (trans_mode='AUTH') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND pt.trans_id > (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "' and payment_processor_name='" & processorname & "')" Else sqlstr = "SELECT sum(payment_amount) as payment_amount,sum(service_fee) as service_fee,count(*) as count FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND pt.trans_id > (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "' and payment_processor_name='" & processorname & "')" End If 'sqlStr = "SELECT sum(payment_amount) as payment_amount,sum(service_fee) as service_fee,count(*) as count FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND left(pt.trans_date,10)='" & objDBConnection.ChangeToShortDate(dtdate) & "' group by left(pt.trans_date,10)" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then TotPayAmt = DollarToCents(Val(dbRdr.GetValue(0).ToString())) TotServiceAmt = DollarToCents(Val(dbRdr.GetValue(1).ToString())) count = Val(dbRdr.GetValue(2).ToString()) Else TotPayAmt = 0 TotServiceAmt = 0 count = "0" End If
If processorname = "ELAVON" Then
sqlstr = "SELECT sum(payment_amount) as payment_amount,sum(service_fee) as service_fee,count(*) as count FROM payment_transactions pt where is_refund='Y' and customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and ( trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='VOID' or trans_mode='REFUND') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND pt.trans_id > (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "' and payment_processor_name='" & processorname & "')" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr1 = dbCmd.ExecuteReader() If dbRdr1.HasRows Then TotRefundPayAmt = DollarToCents(Val(dbRdr1.GetValue(0).ToString())) TotRefundServiceAmt = DollarToCents(Val(dbRdr1.GetValue(1).ToString())) Refundcount = Val(dbRdr1.GetValue(2).ToString()) Else TotRefundPayAmt = 0 TotRefundServiceAmt = 0 Refundcount = "0" End If dbRdr1.Close() dbCmd.Dispose()
sqlstr = "SELECT sum(payment_amount) as payment_amount,sum(service_fee) as service_fee,count(*) as count FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and ( trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='VOID' or trans_mode='REFUND') AND (pt.biller_id='" & billerId & "') and (pt.processor_name='" & processorname & "') and (substring(merchant_id, 1, locate( '~', merchant_id ) -1 )='" & merchantId & "' or substring( merchant_id, locate( '~', merchant_id ) +1 )='" & merchantId & "') AND pt.trans_id > (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "' and payment_processor_name='" & processorname & "')" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr1 = dbCmd.ExecuteReader() If dbRdr1.HasRows Then TotVoidPayAmt = DollarToCents(Val(dbRdr1.GetValue(0).ToString())) TotVoidServiceAmt = DollarToCents(Val(dbRdr1.GetValue(1).ToString())) Voidcount = Val(dbRdr1.GetValue(2).ToString()) Else TotPayAmt = 0 TotServiceAmt = 0 Voidcount = "0" End If Return (TotPayAmt) - (TotVoidPayAmt) + (TotRefundPayAmt) & "~" & Val(count) - Val(Voidcount) + Val(Refundcount) Else Return (TotPayAmt) & "~" & count End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function getGenKey(ByVal clientId As String) As String Try Dim genkey As String = Nothing Dim dbrdTemp As OdbcDataReader Dim DbcmdTemp As OdbcCommand sqlStr = "Select genkey from client_config_template where client_id='" & clientId & "'" objDBConnection.DbConnOpen() ' Opens a DB connection DbcmdTemp = New OdbcCommand(sqlStr, objDBConnection.dbConn) dbrdTemp = DbcmdTemp.ExecuteReader If dbrdTemp.Read Then genkey = dbrdTemp.Item(0).ToString End If DbcmdTemp.Dispose() dbrdTemp.Close() Return genkey Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() ' Closes a DB connection End Try End Function Public Function getSequenceNumber(ByVal clientId As String) As String Try Dim sequencenumber As String = Nothing Dim dbrdTemp As OdbcDataReader Dim DbcmdTemp As OdbcCommand sqlStr = "Select sequence_number from client_config_template where client_id='" & clientId & "'" objDBConnection.DbConnOpen() ' Opens a DB connection DbcmdTemp = New OdbcCommand(sqlStr, objDBConnection.dbConn) dbrdTemp = DbcmdTemp.ExecuteReader If dbrdTemp.Read Then sequencenumber = Val(dbrdTemp.Item(0).ToString) End If DbcmdTemp.Dispose() dbrdTemp.Close() sqlStr = "Update client_config_template set sequence_number='" & Val(sequencenumber + 1) & "' where client_id='" & clientId & "'" dbCmd = New OdbcCommand(sqlStr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() Return sequencenumber Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() ' Closes a DB connection End Try End Function Public Function MakeEODStatusEntry(ByVal clientid As String) As String Try Dim Parentid As String = "0" Dim intCount As Integer objDBConnection.DbConnOpen() sqlstr = "Select count(*) from eod_status where client_id='" & clientid & "' and left(eod_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) intCount = dbCmd.ExecuteScalar() If intCount = 0 Then sqlstr = "Insert into eod_status(client_id,eod_date)values('" & clientid & "','" & objDBConnection.ChangeDateFormat(System.DateTime.Now) & "')"
dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() sqlstr = "SELECT LAST_INSERT_ID()" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then Parentid = dbRdr.Item(0).ToString End If Else sqlstr = "Select id from eod_status where client_id='" & clientid & "' and left(eod_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then Parentid = dbRdr.Item(0).ToString End If End If Return Parentid objDBConnection.DbConnClose() Catch ex As Exception
End Try
End Function Public Function UpdateEODStatus(ByVal parentId As String) As Boolean Try Dim intStatus As Integer sqlstr = "Select count(*) from eod_detail where parent_id='" & parentId & "' and status='F'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) intStatus = dbCmd.ExecuteScalar() If intStatus = 0 Then sqlstr = "Update eod_status set status='S' where id='" & parentId & "'" Else sqlstr = "Update eod_status set status='F' where id='" & parentId & "'" End If dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() Catch ex As Exception
End Try End Function Public Function MakeEODDetailEntry(ByVal clientId As String, ByVal BillerName As String, ByVal ccProcessor As String, ByVal dcProcessor As String, ByVal chProcessor As String, ByVal saprocessor As String, ByVal Parentid As String) As String Try
Dim ParentDetailId As String
sqlstr = ("insert into eod_detail(parent_id,biller_name,cc_processor,dc_processor,ch_processor,sa_processor)values(") sqlstr = sqlstr & ("'" & Parentid & "',") sqlstr = sqlstr & ("'" & BillerName & "',") sqlstr = sqlstr & ("'" & getProcessorName(ccProcessor) & "',") sqlstr = sqlstr & ("'" & getProcessorName(dcProcessor) & "',") sqlstr = sqlstr & ("'" & getProcessorName(chProcessor) & "',") sqlstr = sqlstr & ("'" & getProcessorName(saprocessor) & "')")
objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
sqlstr = "SELECT LAST_INSERT_ID()" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then ParentDetailId = dbRdr.Item(0).ToString End If objDBConnection.DbConnClose() Return ParentDetailId Catch ex As Exception
End Try End Function Public Function UpdateEODDetailEntry(ByVal ParentDetailId As String, ByVal detRow As DataRow, ByVal status As String) Try Dim strYn() As String = Split(detRow.Item(2).ToString(), "|") Dim intValueCount As Integer
sqlstr = "Update eod_detail set " If strYn(0) = "Y" Then sqlstr = sqlstr & ("cc_principle='" & status & "',") sqlstr = sqlstr & ("cc_principle_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(1) = "Y" Then sqlstr = sqlstr & ("dc_principle='" & status & "',") sqlstr = sqlstr & ("dc_principle_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(2) = "Y" Then sqlstr = sqlstr & ("ch_principle='" & status & "',") sqlstr = sqlstr & ("ch_principle_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(3) = "Y" Then sqlstr = sqlstr & ("sa_principle='" & status & "',") sqlstr = sqlstr & ("sa_principle_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(4) = "Y" Then sqlstr = sqlstr & ("cc_conv='" & status & "',") sqlstr = sqlstr & ("cc_conv_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(5) = "Y" Then sqlstr = sqlstr & ("dc_conv='" & status & "',") sqlstr = sqlstr & ("dc_conv_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(6) = "Y" Then sqlstr = sqlstr & ("ch_conv='" & status & "',") sqlstr = sqlstr & ("ch_conv_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If If strYn(7) = "Y" Then sqlstr = sqlstr & ("sa_conv='" & status & "',") sqlstr = sqlstr & ("sa_conv_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") End If sqlstr = sqlstr.Remove(sqlstr.Length - 1, 1) sqlstr = sqlstr & (" where id='" & ParentDetailId & "'") objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
sqlstr = "Select count(*) from eod_detail where cc_principle='S' and dc_principle='S' and ch_principle='S' and sa_principle='S' and cc_conv='S' and dc_conv='S' and ch_conv='S' and sa_conv='S' and id='" & ParentDetailId & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) intValueCount = dbCmd.ExecuteScalar() If intValueCount > 0 Then sqlstr = "Update eod_detail set status='S' where id='" & ParentDetailId & "'" Else sqlstr = "Update eod_detail set status='F' where id='" & ParentDetailId & "'" End If dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
objDBConnection.DbConnClose() Catch ex As Exception
End Try End Function
Public Function getMIDS(ByVal clientId As String) As DataTable Try Dim dtableMerchantIDS As New DataTable sqlstr = "Select cc_principle_mid,dc_principle_mid,ch_principle_mid,sa_principle_mid,cc_conv_mid,dc_conv_mid,ch_conv_mid,sa_conv_mid from client_config_mids where client_id='" & clientId & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbAdpt.Fill(dtableMerchantIDS) Return dtableMerchantIDS Catch ex As Exception
End Try
End Function Public Function uploadStrRemittanceFileData(ByVal StrRemittanceFile As String, ByVal strClientId As String) Try Dim host As String = GetHostName(strClientId) If InStr(host, "ftp://") = 0 Then host = "ftp://" & host End If Dim objFtp As New FTPclient(host, username, password) Dim fulllist As ICollection
Dim ClientName As String Dim BlClientExit As Boolean = False
fulllist = objFtp.ListDirectory() For Each ClientName In fulllist If strClientId = ClientName Then BlClientExit = True Exit For Else BlClientExit = False End If Next
'IF folder already exits If BlClientExit = True Then UploadFile(StrRemittanceFile, strClientId) End If
' folder Not exits If BlClientExit = False Then objFtp.FtpCreateDirectory(strClientId) UploadFile(StrRemittanceFile, strClientId) End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function UploadFile(ByVal StrRemittanceFile As String, ByVal strClientId As String)
Dim hostnew As String = GetHostName(strClientId) & "/" & strClientId If InStr(hostnew, "ftp://") = 0 Then hostnew = "ftp://" & hostnew End If Dim objFtp As New FTPclient(hostnew, username, password)
If System.IO.File.Exists(Application.StartupPath & "\RemittanceData\" & StrRemittanceFile) = True Then
objFtp.Upload(Application.StartupPath & "\RemittanceData\" & StrRemittanceFile) 'Delete The File In the Local File.Delete(Application.StartupPath & "\RemittanceData\" & StrRemittanceFile) End If End Function Public Function GetHostName(ByVal ClientId As String) As String Try Dim strhost As String = "" sqlstr = "Select fp_host_ip from client_config_template where client_id=? " objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.Parameters.Add("@clientId", OdbcType.VarChar, 10) dbCmd.Parameters("@clientId").Value = ClientId
dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then While dbRdr.Read strhost = dbRdr.GetValue(0).ToString() End While End If Return strhost Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GetFPLocation(ByVal ClientId As String) As String Try Dim strfplocation As String = "" sqlstr = "Select fp_location from client_config_template where client_id=? " objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.Parameters.Add("@clientId", OdbcType.VarChar, 10) dbCmd.Parameters("@clientId").Value = ClientId
dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then While dbRdr.Read strfplocation = dbRdr.GetValue(0).ToString() End While End If Return strfplocation Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GetClientFTPMode(ByVal ClientId As String) As String Try Dim strfplocation As String = "" sqlstr = "Select rem_ftp_mode from client_config_template where client_id=? " objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.Parameters.Add("@clientId", OdbcType.VarChar, 10) dbCmd.Parameters("@clientId").Value = ClientId
dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then While dbRdr.Read strfplocation = dbRdr.GetValue(0).ToString() End While End If Return strfplocation Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() End Try End Function Public Function GetRemittanceFile(ByVal client_id As String) As String Try Dim Remittancefile As String sqlstr = "SELECT file_name FROM `remittance_files` where left(file_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "' and client_id='" & client_id & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then While dbRdr.Read Remittancefile = dbRdr.GetValue(0).ToString() End While objDBConnection.DbConnClose() End If Return Remittancefile Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function ChangeClientStaus(ByVal clientId As String, ByVal status As String) As Boolean Try sqlstr = "Update client_config set eod_status='" & status & "' where client_id='" & clientId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
sqlstr = "Update client_config_template set sequence_number='1' where client_id='" & clientId & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
sqlstr = "Update client_config_template set elavon_sequence_number='0' where client_id='" & clientId & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
objDBConnection.DbConnClose() Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function getProcessorName(ByVal processorId As String) As String Try Dim strProcessorName As String If processorId = "0" Then strProcessorName = "0" Else sqlstr = "Select processor_name from payment_processor where processor_id='" & processorId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() While dbRdr.Read strProcessorName = dbRdr.GetValue(0).ToString() End While End If objDBConnection.DbConnClose() Return strProcessorName Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function
Public Function getLowerTransId(ByVal clientid As String) As String Try
'Dim strReturnValue As String 'strReturnValue = CheckTransReturnedToday(clientid)
'If strReturnValue = "0" Then objDBConnection.DbConnOpen() Dim strLowerId As String = "" 'sqlstr = "Select last_trans_id from eod_transactions where client_id='" & clientid & "' and eod_date='" & objDBConnection.ChangeToShortDate(DateAdd(DateInterval.Day, -1, System.DateTime.Now)) & "'" sqlstr = "SELECT last_trans_id FROM eod_transactions WHERE last_trans_id = (Select max(last_trans_id) FROM eod_transactions WHERE last_trans_id < (Select max(last_trans_id) FROM eod_transactions where client_id='" & clientid & "') and client_id='" & clientid & "')" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then strLowerId = dbRdr.Item(0).ToString Else strLowerId = "" End If 'If strLowerId = "" Then ' sqlstr = "Select last_trans_id from eod_transactions where client_id='" & clientid & "' and eod_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "'" ' dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) ' dbRdr = dbCmd.ExecuteReader ' If dbRdr.Read Then ' strLowerId = dbRdr.Item(0).ToString ' Else ' strLowerId = "" ' End If 'End If objDBConnection.DbConnClose() Return strLowerId 'Else 'Return strReturnValue 'End If Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function getUpperTransId(ByVal clientid As String) As String Try objDBConnection.DbConnOpen() Dim strUpperId As String = "" sqlstr = "Select last_trans_id from eod_transactions where client_id='" & clientid & "' and eod_date='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then strUpperId = dbRdr.Item(0).ToString Else strUpperId = "" End If objDBConnection.DbConnClose() Return strUpperId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function SUMRequest(ByVal FPAmount As String, ByVal FPCount As String, ByVal strProcessorName As String, ByVal strMessageType As String, ByVal strMerchantId As String, ByVal lastTransId As String, ByVal strClientid As String, ByVal strCutOffTime As String, ByVal strusername As String, ByVal strpassword As String, ByVal genkey As String, ByVal terminalnumber As String, ByVal Bin As String, ByVal amount As String, ByVal sequencenumber As String, ByVal clientId As String, ByVal BatchSeqNumber As String) As String Dim strSumExternal As String Dim strSumValue() As String Dim m_isGood As String = Nothing Dim m_isError As String = Nothing Dim m_isQuickResponse As String = Nothing Dim m_isApproved As String = Nothing Dim m_isDeclined As String = Nothing Dim m_AuthCode As String = Nothing Dim m_txRefNumber As String = Nothing Dim m_ResponseCode As String = Nothing Dim m_Status As String = Nothing Dim m_Message As String = Nothing Dim m_AvsCode As String = Nothing Dim m_Cvv As String = Nothing Dim m_BatchSeqNumber As String = Nothing 'Dim m_ProcStatus As String 'Dim m_StatusMessage As String Dim m_ResponseTime As String = Nothing Dim m_RespDate As String = Nothing Dim m_ReturnedACI As String = Nothing Dim m_RetrievalRefNum As String = Nothing Dim blnstr As Boolean = False Dim m_CreditAmount As String = Nothing Dim m_creditCount As String = Nothing Dim m_NetAmount As String = Nothing Dim m_NetCount As String = Nothing Dim m_ReturnAmount As String = Nothing Dim m_ReturnCount As String = Nothing Dim m_VoidAmount As String = Nothing Dim m_VoidCount As String = Nothing Dim strStatus As String Dim _logDocument As String
Try strSumExternal = SendSumRequest(strProcessorName, strMessageType, strMerchantId, strusername, strpassword, strClientid, genkey, terminalnumber, Bin, amount, sequencenumber, clientId, BatchSeqNumber) strSumValue = Split(strSumExternal, Chr(10)) blnstr = True m_isGood = Trim(strSumValue(0).ToString().Substring(InStr(strSumValue(0), "="))) m_isError = Trim(strSumValue(2).ToString().Substring(InStr(strSumValue(2), "="))) m_isQuickResponse = Trim(strSumValue(4).ToString().Substring(InStr(strSumValue(4), "="))) m_isApproved = Trim(strSumValue(6).ToString().Substring(InStr(strSumValue(6), "="))) m_isDeclined = Trim(strSumValue(8).ToString().Substring(InStr(strSumValue(8), "="))) m_AuthCode = Trim(strSumValue(10).ToString().Substring(InStr(strSumValue(10), "="))) m_txRefNumber = Trim(strSumValue(12).ToString().Substring(InStr(strSumValue(12), "="))) m_ResponseCode = Trim(strSumValue(14).ToString().Substring(InStr(strSumValue(14), "="))) m_Status = Trim(strSumValue(16).ToString().Substring(InStr(strSumValue(16), "="))) m_Message = Trim(strSumValue(18).ToString().Substring(InStr(strSumValue(18), "="))) m_AvsCode = Trim(strSumValue(20).ToString().Substring(InStr(strSumValue(20), "="))) m_Cvv = Trim(strSumValue(22).ToString().Substring(InStr(strSumValue(22), "="))) m_BatchSeqNumber = Trim(strSumValue(24).ToString().Substring(InStr(strSumValue(24), "="))) m_ResponseTime = Trim(strSumValue(26).ToString().Substring(InStr(strSumValue(26), "="))) m_RespDate = Trim(strSumValue(28).ToString().Substring(InStr(strSumValue(26), "="))) m_ReturnedACI = Trim(strSumValue(30).ToString().Substring(InStr(strSumValue(30), "="))) m_RetrievalRefNum = Trim(strSumValue(32).ToString().Substring(InStr(strSumValue(32), "="))) m_CreditAmount = Trim(strSumValue(38).ToString().Substring(InStr(strSumValue(38), "="))) m_creditCount = Trim(strSumValue(40).ToString().Substring(InStr(strSumValue(40), "="))) m_NetAmount = Trim(strSumValue(42).ToString().Substring(InStr(strSumValue(42), "="))) m_NetCount = Trim(strSumValue(44).ToString().Substring(InStr(strSumValue(44), "="))) m_ReturnAmount = Trim(strSumValue(46).ToString().Substring(InStr(strSumValue(46), "="))) m_ReturnCount = Trim(strSumValue(48).ToString().Substring(InStr(strSumValue(48), "="))) m_VoidAmount = Trim(strSumValue(50).ToString().Substring(InStr(strSumValue(50), "="))) m_VoidCount = Trim(strSumValue(52).ToString().Substring(InStr(strSumValue(52), "="))) If m_ResponseCode = "00" Then strStatus = "Success" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "SUM", strStatus, strSumExternal, strClientid) If FPCount <> m_NetCount Or FPAmount <> m_NetAmount Then InsertOOBBatch(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) sendSumRequestFailureEmail(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) Return "True" & "|" & m_NetAmount & "|" & m_NetCount Else Return "True" & "|" & FPAmount & "|" & FPCount End If
Else strStatus = "Failure" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "SUM", strStatus, strSumExternal, strClientid) If FPCount <> m_NetCount Or FPAmount <> m_NetAmount Then InsertOOBBatch(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) sendSumRequestFailureEmail(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) SendEODfailureEmail(strClientid, _logDocument, strSumExternal) Return "False" & "|" & m_NetAmount & "|" & m_NetCount Else Return "False" & "|" & FPAmount & "|" & FPCount SendEODfailureEmail(strClientid, _logDocument, strSumExternal) End If
End If
Catch ex As Exception If m_Message = Nothing Then If blnstr = True Then If strSumValue.Length = 2 Then m_Message = Trim(strSumValue(0).ToString().Substring(InStr(strSumValue(0), "="))) End If End If End If If m_isGood <> Nothing And m_Message <> Nothing Then m_isGood = False End If If m_isError = Nothing Then m_isError = True End If If m_isQuickResponse = Nothing Then m_isQuickResponse = True End If If m_isApproved = Nothing Then m_isApproved = False End If If m_isDeclined = Nothing Then m_isDeclined = False End If If m_AuthCode = Nothing Then m_AuthCode = Nothing End If If m_txRefNumber = Nothing Then m_txRefNumber = Nothing End If If m_ResponseCode = Nothing Then m_ResponseCode = Nothing End If If m_Status = Nothing Then m_Status = "1000000000000000" End If If m_AvsCode = Nothing Then m_AvsCode = Nothing End If If m_Cvv = Nothing Then m_Cvv = Nothing End If If m_BatchSeqNumber = Nothing Then m_BatchSeqNumber = Nothing End If
If m_ResponseTime = Nothing Then m_ResponseTime = Nothing End If If m_ReturnedACI = Nothing Then m_ReturnedACI = Nothing End If If m_RetrievalRefNum = Nothing Then m_RetrievalRefNum = Nothing End If If m_RespDate = Nothing Then m_RespDate = Nothing End If 'Return objEODResponse 'Throw
If m_ResponseCode = "00" Then strStatus = "Success" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "SUM", strStatus, strSumExternal, strClientid) If FPCount <> m_NetCount Or FPAmount <> m_NetAmount Then InsertOOBBatch(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) sendSumRequestFailureEmail(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) Return "True" & "|" & m_NetAmount & "|" & m_NetCount Else Return "True" & "|" & FPAmount & "|" & FPCount End If
Else strStatus = "Failure" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "SUM", strStatus, strSumExternal, strClientid) If FPCount <> m_NetCount Or FPAmount <> m_NetAmount Then InsertOOBBatch(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) sendSumRequestFailureEmail(strClientid, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus) SendEODfailureEmail(strClientid, _logDocument, strSumExternal) Return "False" & "|" & m_NetAmount & "|" & m_NetCount
Else Return "False" & "|" & FPAmount & "|" & FPCount End If
End If End Try
End Function Public Function EODProcess(ByVal strProcessorName As String, ByVal strMessageType As String, ByVal strMerchantId As String, ByVal lastTransId As String, ByVal strClientid As String, ByVal strCutOffTime As String, ByVal strusername As String, ByVal strpassword As String, ByVal genkey As String, ByVal terminalnumber As String, ByVal Bin As String, ByVal amount As String, ByVal sequencenumber As String, ByVal clientId As String, ByVal BatchSeqNumber As String) As Boolean Dim strStatus As String Dim _logDocument As String 'return variables Dim m_isGood As String = Nothing Dim m_isError As String = Nothing Dim m_isQuickResponse As String = Nothing Dim m_isApproved As String = Nothing Dim m_isDeclined As String = Nothing Dim m_AuthCode As String = Nothing Dim m_txRefNumber As String = Nothing Dim m_ResponseCode As String = Nothing Dim m_Status As String = Nothing Dim m_Message As String = Nothing Dim m_AvsCode As String = Nothing Dim m_Cvv As String = Nothing Dim m_BatchSeqNumber As String = Nothing 'Dim m_ProcStatus As String 'Dim m_StatusMessage As String Dim m_ResponseTime As String = Nothing Dim m_RespDate As String = Nothing Dim m_ReturnedACI As String = Nothing Dim m_RetrievalRefNum As String = Nothing Dim blnstr As Boolean = False
strEOdId = LogEODTransaction(strClientid, strProcessorName, strMerchantId, lastTransId, strCutOffTime)
If strEOdId <> Nothing Then Try strEODExternal = SendEODRequest(strProcessorName, strMessageType, strMerchantId, strusername, strpassword, strClientid, genkey, terminalnumber, Bin, amount, sequencenumber, clientId, BatchSeqNumber) strValue = Split(strEODExternal, Chr(10)) blnstr = True m_isGood = Trim(strValue(0).ToString().Substring(InStr(strValue(0), "="))) m_isError = Trim(strValue(2).ToString().Substring(InStr(strValue(2), "="))) m_isQuickResponse = Trim(strValue(4).ToString().Substring(InStr(strValue(4), "="))) m_isApproved = Trim(strValue(6).ToString().Substring(InStr(strValue(6), "="))) m_isDeclined = Trim(strValue(8).ToString().Substring(InStr(strValue(8), "="))) m_AuthCode = Trim(strValue(10).ToString().Substring(InStr(strValue(10), "="))) m_txRefNumber = Trim(strValue(12).ToString().Substring(InStr(strValue(12), "="))) m_ResponseCode = Trim(strValue(14).ToString().Substring(InStr(strValue(14), "="))) m_Status = Trim(strValue(16).ToString().Substring(InStr(strValue(16), "="))) m_Message = Trim(strValue(18).ToString().Substring(InStr(strValue(18), "="))) m_AvsCode = Trim(strValue(20).ToString().Substring(InStr(strValue(20), "="))) m_Cvv = Trim(strValue(22).ToString().Substring(InStr(strValue(22), "="))) m_BatchSeqNumber = Trim(strValue(24).ToString().Substring(InStr(strValue(24), "="))) m_ResponseTime = Trim(strValue(26).ToString().Substring(InStr(strValue(26), "=")))
m_RespDate = Trim(strValue(28).ToString().Substring(InStr(strValue(26), "="))) m_ReturnedACI = Trim(strValue(30).ToString().Substring(InStr(strValue(30), "="))) m_RetrievalRefNum = Trim(strValue(32).ToString().Substring(InStr(strValue(32), "=")))
UpdateEODTransaction(strEOdId, m_BatchSeqNumber, m_Status, m_Message, m_ResponseTime, m_isGood, m_isError, m_isQuickResponse, m_isApproved, m_isDeclined, m_AuthCode, m_txRefNumber, m_ResponseCode, _ m_AvsCode, m_Cvv, m_RespDate, m_ReturnedACI, m_RetrievalRefNum)
If m_ResponseCode = "00" Then strStatus = "Success" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "EOD", strStatus, strEODExternal, strClientid) Return True Else strStatus = "Failure" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "EOD", strStatus, strEODExternal, strClientid) SendEODfailureEmail(strClientid, _logDocument, strEODExternal) Return False End If 'Return objEODResponse Catch ex As Exception If m_Message = Nothing Then If blnstr = True Then If strValue.Length = 2 Then m_Message = Trim(strValue(0).ToString().Substring(InStr(strValue(0), "="))) End If End If End If If m_isGood <> Nothing And m_Message <> Nothing Then m_isGood = False End If If m_isError = Nothing Then m_isError = True End If If m_isQuickResponse = Nothing Then m_isQuickResponse = True End If If m_isApproved = Nothing Then m_isApproved = False End If If m_isDeclined = Nothing Then m_isDeclined = False End If If m_AuthCode = Nothing Then m_AuthCode = Nothing End If If m_txRefNumber = Nothing Then m_txRefNumber = Nothing End If If m_ResponseCode = Nothing Then m_ResponseCode = Nothing End If If m_Status = Nothing Then m_Status = "1000000000000000" End If If m_AvsCode = Nothing Then m_AvsCode = Nothing End If If m_Cvv = Nothing Then m_Cvv = Nothing End If If m_BatchSeqNumber = Nothing Then m_BatchSeqNumber = Nothing End If
If m_ResponseTime = Nothing Then m_ResponseTime = Nothing End If If m_ReturnedACI = Nothing Then m_ReturnedACI = Nothing End If If m_RetrievalRefNum = Nothing Then m_RetrievalRefNum = Nothing End If If m_RespDate = Nothing Then m_RespDate = Nothing End If 'Return objEODResponse 'Throw
UpdateEODTransaction(strEOdId, m_BatchSeqNumber, m_Status, m_Message, m_ResponseTime, m_isGood, m_isError, m_isQuickResponse, m_isApproved, m_isDeclined, m_AuthCode, m_txRefNumber, m_ResponseCode, _ m_AvsCode, m_Cvv, m_RespDate, m_ReturnedACI, m_RetrievalRefNum)
If m_ResponseCode = "00" Then strStatus = "Success" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "EOD", strStatus, strEODExternal, strClientid) Return True Else strStatus = "Failure" _logDocument = "Processor=" & strProcessorName & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strpassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber & "&Clientid=" & strClientid & ""
InsertApiLog(_logDocument, "EOD", strStatus, strEODExternal, strClientid) SendEODfailureEmail(strClientid, _logDocument, strEODExternal) Return False End If End Try 'UpdateEODTransaction(strEOdId, m_BatchSeqNumber, m_ProcStatus, m_StatusMessage, m_ResponseTime) End If End Function
Sub SendEODfailureEmail(ByVal strClientid As String, ByVal request As String, ByVal response As String) Try Dim fromaddr As String = System.Configuration.ConfigurationSettings.AppSettings("From") Dim ToAddr As String = "ProductionSupport@FirstPoynt.com" Dim subject As String = "EOD request failed" Dim body As String = "Eod request failed for client " & strClientid & ".<br> The details of the request and response are given below.<br> Request : " & request & "<br> Response : " & response & "" Dim mm As New MailMessage(fromaddr, ToAddr) mm.Subject = subject mm.Body = body.ToString() mm.IsBodyHtml = True Dim smtp As New SmtpClient(System.Configuration.ConfigurationSettings.AppSettings("smtp")) smtp.Send(mm) Catch ex As Exception
End Try End Sub
Sub sendSumRequestFailureEmail(ByVal strClientId As String, ByVal FPCount As String, ByVal FPAmount As String, ByVal m_NetCount As String, ByVal m_NetAmount As String, ByVal m_ReturnCount As String, ByVal m_ReturnAmount As String, ByVal m_creditCount As String, ByVal m_CreditAmount As String, ByVal m_VoidCount As String, ByVal m_VoidAmount As String, ByVal strStatus As String) Try Dim strTitle As String Dim templateId As String Dim fromaddr As String = System.Configuration.ConfigurationSettings.AppSettings("From") Dim ToAddr As String = "ProductionSupport@FirstPoynt.com" templateId = getTemplateIdforSumRequest() strTitle = GetMessageTitle(templateId) strMessage = GetFormattedMessageForSumRequest(templateId, strClientId, FPCount, FPAmount, m_NetCount, m_NetAmount, m_ReturnCount, m_ReturnAmount, m_creditCount, m_CreditAmount, m_VoidCount, m_VoidAmount, strStatus)
Dim mm As New MailMessage(fromaddr, ToAddr) mm.Subject = strTitle mm.Body = strMessage.ToString() mm.IsBodyHtml = True Dim smtp As New SmtpClient(System.Configuration.ConfigurationSettings.AppSettings("smtp")) smtp.Send(mm) Catch ex As Exception
End Try End Sub Function GetFormattedMessageForSumRequest(ByVal templateid As String, ByVal strClientId As String, ByVal FPCount As String, ByVal FPAmount As String, ByVal m_NetCount As String, ByVal m_NetAmount As String, ByVal m_ReturnCount As String, ByVal m_ReturnAmount As String, ByVal m_creditCount As String, ByVal m_CreditAmount As String, ByVal m_VoidCount As String, ByVal m_VoidAmount As String, ByVal strStatus As String) As String Try Dim paymentconfirmationNo As String sqlstr = "Select msg_body from client_email_templates where template_id=?" objDBConnection.DbConnOpen() ' Opens a DB connection
dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.Parameters.Add("@templateid", OdbcType.BigInt, 20) dbCmd.Parameters("@templateid").Value = templateid dbAdpt = New OdbcDataAdapter(dbCmd)
strMessage = dbCmd.ExecuteScalar().ToString() objDBConnection.DbConnClose() ' Closes a DB connection strMessage = strMessage.Replace("[CLIENT]", strClientId) strMessage = strMessage.Replace("[FPAMOUNT]", FPAmount) strMessage = strMessage.Replace("[FPCOUNT]", FPCount) strMessage = strMessage.Replace("[PROCESSORAMOUNT]", m_NetAmount) strMessage = strMessage.Replace("[PROCESSORCOUNT]", m_NetCount) strMessage = strMessage.Replace("[RETURNAMOUNT]", m_ReturnAmount) strMessage = strMessage.Replace("[RETURNCOUNT]", m_ReturnCount) strMessage = strMessage.Replace("[CREDITAMOUNT]", m_CreditAmount) strMessage = strMessage.Replace("[CREDITCOUNT]", m_creditCount) strMessage = strMessage.Replace("[VOIDAMOUNT]", m_VoidAmount) strMessage = strMessage.Replace("[VOIDCOUNT]", m_VoidCount) Return strMessage Catch ex As Exception
End Try End Function Function getTemplateIdforSumRequest() As String Dim templateId As String Try sqlstr = "Select template_id from client_email_templates where client_id='FVAdmin' and template_name='Batch Out of Balance'" objDBConnection.DbConnOpen() ' Opens a DB connection dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) templateId = dbCmd.ExecuteScalar().ToString() objDBConnection.DbConnClose() ' Closes a DB connection Return templateId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function '***********************************************
'Handler to synchronise with main thread again Public allDone As New ManualResetEvent(False) Dim objWebResponse As Net.WebResponse Private _requestDocument As String Private _responseDocument As String Private _web As Net.HttpWebRequest
Private Sub ReadCallback(ByVal asynchronousResult As IAsyncResult) _web.UnsafeAuthenticatedConnectionSharing = True 'Get the information to pass on from the Async Object Dim myRequestState As RequestState = CType(asynchronousResult.AsyncState, RequestState) Dim myWebRequest2 As WebRequest = myRequestState.request Dim requestDocument As String = myRequestState.requestDocument
'Get the stream to write the request to Dim streamResponse As Stream = myWebRequest2.EndGetRequestStream(asynchronousResult) Dim bytArray() As Byte = System.Text.Encoding.ASCII.GetBytes(requestDocument) streamResponse.Write(bytArray, 0, requestDocument.Length) streamResponse.Close() 'Tell the main thread that writing to stream is complete allDone.Set() End Sub
Public Sub retrieve() Dim bytOutArray() As Byte objWebResponse = _web.GetResponse Dim objStream As IO.StreamReader objStream = New IO.StreamReader(objWebResponse.GetResponseStream(), System.Text.ASCIIEncoding.ASCII) _responseDocument = objStream.ReadToEnd() 'close all streams objWebResponse.Close() objStream.Close() End Sub
Public Sub send() 'Prepare Object to pass into asynchron call Dim myRequestState As New RequestState myRequestState.request = _web myRequestState.requestDocument = _requestDocument Dim r As IAsyncResult = CType(_web.BeginGetRequestStream(AddressOf ReadCallback, myRequestState), IAsyncResult)
'Wait till asychrone is done ## allDone.Set() ## allDone.WaitOne() End Sub
'****************************************** Public Function getClientMode(ByVal strClientid As String) As String Try Dim mode As String sqlstr = "Select test_live_mode from client_config where client_id='" & strClientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd)
dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then mode = dbRdr.Item(0).ToString Else mode = "" End If objDBConnection.DbConnClose() ' Closes a DB connection Return mode Catch ex As Exception
End Try End Function Public Function SendEODRequest(ByVal strProcessor As String, ByVal strMessageType As String, ByVal strMerchantId As String, ByVal strusername As String, ByVal strPassword As String, ByVal strClientId As String, ByVal genkey As String, ByVal terminalnumber As String, ByVal Bin As String, ByVal amount As String, ByVal sequencenumber As String, ByVal clientid As String, ByVal BatchSeqNumber As String) As Object Try Dim resptime As String Dim respdate As String Dim sitemode As String = "" sitemode = getClientMode(clientid) If sitemode = "T" Then sitemode = "TEST" ElseIf sitemode = "L" Then sitemode = "LIVE" End If 'Configure connection _requestDocument = "Processor=" & strProcessor & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strPassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber & "&Amount=" & amount & "&SeqNum=" & sequencenumber
_requestDocument = _requestDocument.Replace("'", "")
'in case of problem with certificate ServicePointManager.CertificatePolicy = New MyCertificateValidation
If sitemode = "LIVE" Then If strProcessor = System.Configuration.ConfigurationSettings.AppSettings("PROCESSOR") Then resptime = System.DateTime.Now.Hour & System.DateTime.Now.Minute & System.DateTime.Now.Second respdate = System.DateTime.Now.ToString("MM") & System.DateTime.Now.ToString("dd") & System.DateTime.Now.ToString("yy") _responseDocument = "isGood=true" & Chr(10) & "" & Chr(10) & "isError=false" & Chr(10) & "" & Chr(10) & "isQuickResponse=false" & Chr(10) & "" & Chr(10) & "isApproved=false" & Chr(10) & "" & Chr(10) & "isDeclined=false" & Chr(10) & "" & Chr(10) & "AuthCode=" & Chr(10) & "" & Chr(10) & "TxRefNum=" & Chr(10) & "" & Chr(10) & "ResponseCode=00" & Chr(10) & "" & Chr(10) & "Status=00" & Chr(10) & "" & Chr(10) & "Message=" & Chr(10) & "" & Chr(10) & "AVSCode=" & Chr(10) & "" & Chr(10) & "CVV2ResponseCode=" & Chr(10) & "" & Chr(10) & "BatchSeqNum=5C81F4DD7B9716D8E0440019BBEBCFC8" & Chr(10) & "" & Chr(10) & "RespTime=" & resptime & "" & Chr(10) & "" & Chr(10) & "RespDate=" & respdate & Chr(10) & "" & Chr(10) & "ReturnedACI=N" & Chr(10) & "" & Chr(10) & "RetrievalRefNum=000000000000" & Chr(10) & "" & Chr(10) & "GenKey=123456" & Chr(10) & "" & Chr(10) & " " Else _web = CType(WebRequest.Create(System.Configuration.ConfigurationSettings.AppSettings("Live_API")), HttpWebRequest) With _web .ContentType = "application/x-www-form-urlencoded" .Method = "POST" .KeepAlive = False .ContentLength = _requestDocument.Length .Timeout = System.Configuration.ConfigurationSettings.AppSettings("APITIMEOUT")
End With
send() 'send the request retrieve() 'get the data
End If ElseIf sitemode = "TEST" Then If System.Configuration.ConfigurationSettings.AppSettings("Test_API") = "Internal_FirstPoynt" Then resptime = System.DateTime.Now.Hour & System.DateTime.Now.Minute & System.DateTime.Now.Second respdate = System.DateTime.Now.ToString("MM") & System.DateTime.Now.ToString("dd") & System.DateTime.Now.ToString("yy") _responseDocument = "isGood=true" & Chr(10) & "" & Chr(10) & "isError=false" & Chr(10) & "" & Chr(10) & "isQuickResponse=false" & Chr(10) & "" & Chr(10) & "isApproved=false" & Chr(10) & "" & Chr(10) & "isDeclined=false" & Chr(10) & "" & Chr(10) & "AuthCode=" & Chr(10) & "" & Chr(10) & "TxRefNum=" & Chr(10) & "" & Chr(10) & "ResponseCode=00" & Chr(10) & "" & Chr(10) & "Status=00" & Chr(10) & "" & Chr(10) & "Message=" & Chr(10) & "" & Chr(10) & "AVSCode=" & Chr(10) & "" & Chr(10) & "CVV2ResponseCode=" & Chr(10) & "" & Chr(10) & "BatchSeqNum=5C81F4DD7B9716D8E0440019BBEBCFC8" & Chr(10) & "" & Chr(10) & "RespTime=" & resptime & "" & Chr(10) & "" & Chr(10) & "RespDate=" & respdate & Chr(10) & "" & Chr(10) & "ReturnedACI=N" & Chr(10) & "" & Chr(10) & "RetrievalRefNum=000000000000" & Chr(10) & "" & Chr(10) & "GenKey=123456" & Chr(10) & "" & Chr(10) & " " Else _web = CType(WebRequest.Create(System.Configuration.ConfigurationSettings.AppSettings("Test_API")), HttpWebRequest) With _web .ContentType = "application/x-www-form-urlencoded" .Method = "POST" .KeepAlive = False .ContentLength = _requestDocument.Length .Timeout = 10000
End With
send() 'send the request retrieve() 'get the data End If
End If
Return _responseDocument Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function SendSumRequest(ByVal strProcessor As String, ByVal strMessageType As String, ByVal strMerchantId As String, ByVal strusername As String, ByVal strPassword As String, ByVal strClientId As String, ByVal genkey As String, ByVal terminalnumber As String, ByVal Bin As String, ByVal amount As String, ByVal sequencenumber As String, ByVal clientid As String, ByVal BatchSeqNumber As String) As Object Try Dim resptime As String Dim respdate As String Dim sitemode As String = "" sitemode = getClientMode(clientid) If sitemode = "T" Then sitemode = "TEST" ElseIf sitemode = "L" Then sitemode = "LIVE" End If 'Configure connection _requestDocument = "Processor=" & strProcessor & "&MessageType=" & strMessageType & "&MerchantID=" & strMerchantId & "&UserName=" & strusername & "&Password=" & Decrypt(strPassword) & "&GenKey=" & genkey & "&TerminalNum=" & terminalnumber & "&BIN=" & Bin & "&BatchSeqNbr=" & BatchSeqNumber
_requestDocument = _requestDocument.Replace("'", "")
'in case of problem with certificate ServicePointManager.CertificatePolicy = New MyCertificateValidation
If sitemode = "LIVE" Then _web = CType(WebRequest.Create(System.Configuration.ConfigurationSettings.AppSettings("Live_API")), HttpWebRequest) With _web .ContentType = "application/x-www-form-urlencoded" .Method = "POST" .KeepAlive = False .ContentLength = _requestDocument.Length .Timeout = System.Configuration.ConfigurationSettings.AppSettings("APITIMEOUT")
End With
send() 'send the request retrieve() 'get the data
ElseIf sitemode = "TEST" Then If System.Configuration.ConfigurationSettings.AppSettings("Test_API") = "Internal_FirstPoynt" Then resptime = System.DateTime.Now.Hour & System.DateTime.Now.Minute & System.DateTime.Now.Second respdate = System.DateTime.Now.ToString("MM") & System.DateTime.Now.ToString("dd") & System.DateTime.Now.ToString("yy") _responseDocument = "isGood=true" & Chr(10) & "" & Chr(10) & "isError=false" & Chr(10) & "" & Chr(10) & "isQuickResponse=false" & Chr(10) & "" & Chr(10) & "isApproved=false" & Chr(10) & "" & Chr(10) & "isDeclined=false" & Chr(10) & "" & Chr(10) & "AuthCode=" & Chr(10) & "" & Chr(10) & "TxRefNum=" & Chr(10) & "" & Chr(10) & "ResponseCode=00" & Chr(10) & "" & Chr(10) & "Status=00" & Chr(10) & "" & Chr(10) & "Message=" & Chr(10) & "" & Chr(10) & "AVSCode=" & Chr(10) & "" & Chr(10) & "CVV2ResponseCode=" & Chr(10) & "" & Chr(10) & "BatchSeqNum=5C81F4DD7B9716D8E0440019BBEBCFC8" & Chr(10) & "" & Chr(10) & "RespTime=" & resptime & "" & Chr(10) & "" & Chr(10) & "RespDate=" & respdate & Chr(10) & "" & Chr(10) & "ReturnedACI=N" & Chr(10) & "" & Chr(10) & "RetrievalRefNum=000000000000" & Chr(10) & "" & Chr(10) & "GenKey=123456" & Chr(10) & "" & Chr(10) & "SeqNbr=0" & Chr(10) & "" & Chr(10) & "CreditAmount=0" & Chr(10) & "" & Chr(10) & "CreditCount=0" & Chr(10) & "" & Chr(10) & "NetAmount=0" & Chr(10) & "" & Chr(10) & "NetCount=0" & Chr(10) & "" & Chr(10) & "ReturnAmount=0" & Chr(10) & "" & Chr(10) & "ReturnCount=0" & Chr(10) & "" & Chr(10) & "VoidAmount=0" & Chr(10) & "" & Chr(10) & "VoidCount=0" & Chr(10) & "" & Chr(10) & " " Else _web = CType(WebRequest.Create(System.Configuration.ConfigurationSettings.AppSettings("Test_API")), HttpWebRequest) With _web .ContentType = "application/x-www-form-urlencoded" .Method = "POST" .KeepAlive = False .ContentLength = _requestDocument.Length .Timeout = 10000
End With
send() 'send the request retrieve() 'get the data End If
End If
Return _responseDocument Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function
Public Function getProcessor(ByVal strClientId As String) As DataTable Dim dtableProcessor As New DataTable strProcessor = "" Try Dim strProName() As String
dtableProcessor.Columns.Add("Processor Name") dtableProcessor.Columns.Add("Mid") dtableProcessor.Columns.Add("Links") Dim dr As DataRow Dim dtablemids As New DataTable sqlstr = "Select credit_card_processor,debit_card_processor,check_processor,savings_processor from client_config where client_id='" & strClientId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows Then For kproc As Integer = 0 To dbRdr.VisibleFieldCount - 1 If kproc = dbRdr.VisibleFieldCount - 1 Then strProcessor = strProcessor & dbRdr.GetValue(kproc).ToString() Else strProcessor = strProcessor & dbRdr.GetValue(kproc).ToString() & "," End If Next End If strProcessor = strProcessor & "," & strProcessor strProName = Split(strProcessor, ",") sqlstr = "Select cc_principle_mid,dc_principle_mid,ch_principle_mid,sa_principle_mid,cc_conv_mid,dc_conv_mid,ch_conv_mid,sa_conv_mid from client_config_mids where client_id='" & strClientId & "'" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbAdpt.Fill(dtablemids)
Dim strIden() As String = {"CCP", "DCP", "CHP", "SAP", "CCC", "DCC", "CHC", "SAC"}
If dtablemids.Rows.Count > 0 Then For i As Integer = 0 To dtablemids.Columns.Count - 1 dr = dtableProcessor.NewRow() dr(0) = strProName(i).ToString() dr(1) = dtablemids.Rows(0).Item(i).ToString() dr(2) = strIden(i) dtableProcessor.Rows.Add(dr) Next End If Return dtableProcessor Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function
Public Function LoadClients() As DataTable Try Dim dtableClients As New DataTable sqlstr = "SELECT c.client_id, ca.merchant_id, cf.cut_off_time,ca.biller_name,ca.biller_id,cf.processor_username,cf.processor_password,cf.credit_card_processor,cf.debit_card_processor,cf.check_processor,cf.savings_processor,cf.terminal_number,ccf.tsys_user_id,ccf.tsys_password FROM clients c JOIN client_biller_accounts ca ON c.client_id = ca.client_id AND c.status_active = 'A' and c.deleted='N' join client_config_template ccf on c.client_id=ccf.client_id JOIN client_config cf ON c.client_id = cf.client_id AND right(cf.cut_off_time,11) <='" & System.DateTime.Now.ToString("HH:mm:ss") & "' AND cf.client_id NOT IN (Select client_id FROM eod_transactions WHERE eod_date ='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbAdpt.Fill(dtableClients) objDBConnection.DbConnClose() Return dtableClients Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try
End Function
Public Function LoadTransactions(ByVal clientId As String) As DataTable Try 'Dim strReturnValue As String 'strReturnValue = CheckTransReturnedToday(clientId) Dim dtable As New DataTable
'If strReturnValue = "0" Then sqlstr = "SELECT trans_id,schedule_id FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') AND pt.trans_id > (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "')" 'Else
'sqlstr = "SELECT trans_id,schedule_id FROM payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & clientId & "')AND settled = 'N' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') and client_id ='" & clientId & "' AND pt.trans_id >= '" & strReturnValue & "'" 'End If
'sqlstr = "Select trans_id from payment_transactions where customer_id in(Select customer_id from customers where client_id='" & clientId & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbAdpt.Fill(dtable) objDBConnection.DbConnClose() Return dtable Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function 'Public Function CheckTransReturnedToday(ByVal ClientId As String) As String ' Try ' Dim ReturnCount As Int16 = 0 ' Dim strtransid As Integer = 0
' sqlstr = "select count(*) from payment_transactions where (left(return_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "'or left(return_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now.AddDays(-1)) & "') and client_id='" & ClientId & "'" ' objDBConnection.DbConnOpen() ' Opens a DB connection
' dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) ' dbAdpt = New OdbcDataAdapter(dbCmd)
' ReturnCount = dbCmd.ExecuteScalar ' dbCmd.Dispose() ' If ReturnCount > 0 Then
' sqlstr = "select min(trans_id) from payment_transactions where (left(return_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "' or left(return_date,10)='" & objDBConnection.ChangeToShortDate(System.DateTime.Now.AddDays(-1)) & "') and settled='N' and client_id='" & ClientId & "'"
' dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) ' dbRdr = dbCmd.ExecuteReader ' If dbRdr.Read Then ' strtransid = dbRdr.Item(0).ToString ' Else ' strtransid = "0" ' End If ' dbCmd.Dispose() ' Return strtransid
' Else ' Return "0" ' End If
' Catch ex As Exception ' Throw ' Finally ' objDBConnection.DbConnClose() ' Closes a DB connection ' End Try 'End Function
Public Function getlastProcessedTransId(ByVal strClientid As String) As String Dim strTransId As String Try sqlstr = "select max(trans_id) from payment_transactions pt where customer_id IN (Select customer_id FROM customers WHERE client_id ='" & strClientid & "')AND settled = 'Y' and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') AND pt.trans_id >= (Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & strClientid & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then strTransId = dbRdr.Item(0).ToString Else strTransId = "0" End If objDBConnection.DbConnClose() dbCmd.Dispose() Return strTransId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function LogEODTransaction(ByVal strClientId As String, ByVal strProcessorName As String, ByVal strMerchantId As String, ByVal strTransId As String, ByVal strCutOffTime As String) As String Try Dim strId As String sqlstr = "Insert into eod_transactions(eod_date,client_id,merchant_id,eod_process_time,last_trans_id,cut_off_time,payment_processor_name)values(" sqlstr = sqlstr & ("'" & objDBConnection.ChangeToShortDate(System.DateTime.Today) & "',") sqlstr = sqlstr & ("'" & strClientId & "',") sqlstr = sqlstr & ("'" & strMerchantId & "',") sqlstr = sqlstr & ("'" & objDBConnection.ChangeDateFormat(System.DateTime.Now) & "',") sqlstr = sqlstr & ("'" & strTransId & "',") sqlstr = sqlstr & ("'" & strCutOffTime & "',") sqlstr = sqlstr & ("'" & strProcessorName & "')") objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
sqlstr = "SELECT LAST_INSERT_ID()" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then strId = dbRdr.Item(0).ToString Else strId = "0" End If objDBConnection.DbConnClose() dbCmd.Dispose() Return strId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function UpdateEODTransaction(ByVal strEODId As String, ByVal batchSeqNumber As String, ByVal ProcStatus As String, ByVal statusmsg As String, ByVal responsetime As String, _ ByVal isGood As String, ByVal isError As String, ByVal isQuickResponse As String, ByVal isApproved As String, ByVal isDeclined As String, ByVal AuthCode As String, ByVal TxRefNum As String, _ ByVal ResponseCode As String, ByVal AVSCode As String, ByVal CVV2ResponseCode As String, ByVal RespDate As String, ByVal ReturnedACI As String, ByVal RetrievalRefNum As String) As Boolean Try sqlstr = "Update eod_transactions set " sqlstr = sqlstr & ("batch_seq_no='" & batchSeqNumber & "',") sqlstr = sqlstr & ("process_status ='" & ProcStatus & "',") sqlstr = sqlstr & ("status_message ='" & statusmsg & "',") sqlstr = sqlstr & ("response_time ='" & responsetime & "',")
'**************************** sqlstr = sqlstr & ("is_good ='" & isGood & "',") sqlstr = sqlstr & ("is_error ='" & isError & "',") sqlstr = sqlstr & ("is_quick_response ='" & isQuickResponse & "',") sqlstr = sqlstr & ("is_approved ='" & isApproved & "',") sqlstr = sqlstr & ("is_declined ='" & isDeclined & "',") sqlstr = sqlstr & ("auth_code ='" & AuthCode & "',") sqlstr = sqlstr & ("txref_num ='" & TxRefNum & "',") sqlstr = sqlstr & ("response_code ='" & ResponseCode & "',") sqlstr = sqlstr & ("avs_code ='" & AVSCode & "',") sqlstr = sqlstr & ("cvv2_response_code ='" & CVV2ResponseCode & "',") sqlstr = sqlstr & ("resp_date ='" & RespDate & "',") sqlstr = sqlstr & ("returned_aci ='" & ReturnedACI & "',") sqlstr = sqlstr & ("retrieval_ref_num ='" & RetrievalRefNum & "'")
sqlstr = sqlstr & (" where eod_id='" & strEODId & "'") objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function UpdateTransactionStatus(ByVal lowertransId As String, ByVal upperTransId As String, ByVal strClientId As String, ByVal processorname As String) As Boolean Try 'If StrEodTransCount > 0 Then If lowertransId <> "" And upperTransId <> "" Then sqlstr = "Update payment_transactions set settled='Y',settlement_date='" & objDBConnection.ChangeDateFormat(System.DateTime.Now()) & "' where trans_id between '" & lowertransId & "' and '" & upperTransId & "' and processor_name='" & processorname & "' and client_id='" & strClientId & "' and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and settled='N'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() Return True ElseIf lowertransId = "" And upperTransId <> "" Then sqlstr = "Update payment_transactions set settled='Y',settlement_date='" & objDBConnection.ChangeDateFormat(System.DateTime.Now()) & "' where trans_id <= '" & upperTransId & "' and processor_name='" & processorname & "' and client_id='" & strClientId & "' and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded') and settled='N'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() Return True Else Return False End If 'Else 'Return True 'End If Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function UpdateBillData(ByVal lowerTransId As String, ByVal upperTransId As String, ByVal clientId As String) As Boolean Dim schedules As String Try If lowerTransId <> "" And upperTransId <> "" Then sqlstr = "Update customer_bill_data set status='Success' where schedule_id in (Select schedule_id from payment_transactions where trans_id between '" & lowerTransId & "' and '" & upperTransId & "' and client_id='" & clientId & "' and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded'))" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() Return True ElseIf lowerTransId = "" And upperTransId <> "" Then
sqlstr = "Select schedule_id from payment_transactions where trans_id <= '" & upperTransId & "' and client_id='" & clientId & "' and (trans_mode='AUTH' or trans_mode='VOID' or trans_mode='REFUND') and (trans_remarks='Success' or trans_remarks='Voided' or trans_remarks='Refunded')"
objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader While dbRdr.Read schedules = schedules & dbRdr.Item(0).ToString() & "," End While
If schedules <> Nothing Then If schedules.ToString <> "" Then schedules = schedules.Substring(0, schedules.Length - 1) sqlstr = "Update customer_bill_data set status='Success' where schedule_id in ('" & schedules & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() End If End If
objDBConnection.DbConnClose() Return True End If Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function insertReconSummaryTable(ByVal StrClientId As String) As String Try Dim ReconParentDetailId As String = "" sqlstr = "insert into recon_data_summary(client_id)values('" & StrClientId & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery()
sqlstr = "SELECT LAST_INSERT_ID()" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then ReconParentDetailId = dbRdr.Item(0).ToString End If objDBConnection.DbConnClose() Return ReconParentDetailId Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing
End Try End Function Public Sub GenerateRemittanceFile(ByVal clientId As String, ByVal billerId As String, ByVal TransId As String) Try Dim m As Integer = 0 Dim str As String Dim amount As Double = 0.0 Dim billduedate As String Dim transdate As String Dim filename As String Dim strPaymentType As String Dim strCreditCardType As String Dim strTransRemarks As String Dim strPaymentAmount As Double Dim strBillingTotalAmount As Double Dim strServiceFee As Double Dim strBillingMinDue As Double Dim strBillername As String Dim address2 As String Dim ReconParentDetailId As String = "" Dim StrReturnCodeandDesc As String = "" dtableDetails.Rows.Clear() sqlstr = "SELECT pt.remitted,pt.trans_remarks, pt.result_code1, pt.trans_date,pt.first_name,pt.last_name,pt.street_address,pt.house_type,pt.house_no,pt.city,pt.state,pt.zip,pt.email_address," sqlstr = sqlstr & " pt.telephone,cb.mobile_number, pt.authen_fld_1, pt.authen_fld_2, pt.authen_fld_3, pt.authen_fld_4, pt.authen_fld_5, pt.trans_id, pt.customer_id, pt.payment_amount, pt.payment_confirmation_no, pt.payment_type, pt.cc_type, cb.bill_due_date, pt.min_payment_due as bill_min_due, pt.total_payment_due as bill_tot_due,pt.trans_mode,pt.service_fee,pt.trans_id,pt.return_code,pt.return_status,cb.invoice_number,cb.po_number,cb.description,cb.currency,cb.pass_thru_val,pt.return_code,cb.child_client_id,cb.company_name FROM payment_transactions pt LEFT JOIN customer_bill_data cb ON pt.schedule_id = cb.schedule_id LEFT JOIN customers cu ON pt.customer_id = cu.customer_id where left( pt.settlement_date, 10 ) ='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "' and remitted='N' AND (pt.trans_remarks='Success' or pt.trans_remarks='Refunded') and (pt.trans_mode='AUTH' or pt.trans_mode='REFUND' ) AND pt.trans_id <=(Select if (max(last_trans_id) is null,0,max(last_trans_id)) FROM eod_transactions WHERE client_id ='" & clientId & "') and case pt.payment_thro when ('ACH') then (remitted='N' and pt.client_id ='" & clientId & "') else (pt.biller_id='" & billerId & "' and pt.client_id ='" & clientId & "') end" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbAdpt.Fill(dtableDetails) objDBConnection.DbConnClose() 'If dtableDetails.Rows.Count > 0 Then strBillername = getBillerName(billerId) str = clientId & "|" str = str & System.DateTime.Now.Year & System.DateTime.Now.ToString("MM") & System.DateTime.Now.ToString("dd") & vbCrLf
'Insert recon_data_summary table 'If dtableDetails.Rows.Count > 0 Then ReconParentDetailId = insertReconSummaryTable(clientId) 'End If
For m = 0 To dtableDetails.Rows.Count - 1 amount = amount + dtableDetails.Rows(m).Item("payment_amount").ToString() strPaymentAmount = dtableDetails.Rows(m).Item("payment_amount").ToString() strServiceFee = dtableDetails.Rows(m).Item("service_fee").ToString() strBillingTotalAmount = dtableDetails.Rows(m).Item("bill_tot_due").ToString() strBillingMinDue = dtableDetails.Rows(m).Item("bill_min_due").ToString()
billduedate = dtableDetails.Rows(m).Item("bill_due_date").ToString() If billduedate <> "" Then billduedate = CDate(billduedate).Year & CDate(billduedate).ToString("MM") & CDate(billduedate).ToString("dd")
End If transdate = dtableDetails.Rows(m).Item("trans_date").ToString() If transdate <> "" Then transdate = CDate(transdate).Year & CDate(transdate).ToString("MM") & CDate(transdate).ToString("dd") End If Dim PaymentType As String = dtableDetails.Rows(m).Item("payment_type").ToString() Dim CreditCardType As String = dtableDetails.Rows(m).Item("cc_type").ToString() Dim TransRemarks As String = dtableDetails.Rows(m).Item("trans_remarks").ToString() Dim TransMode As String = dtableDetails.Rows(m).Item("trans_mode").ToString() Dim FPtransId As String = dtableDetails.Rows(m).Item("trans_id").ToString() Dim strreturnStatus As String = dtableDetails.Rows(m).Item("return_status").ToString
Dim StrCompanyName As String = dtableDetails.Rows(m).Item("company_name").ToString Dim StrChildClientID As String = dtableDetails.Rows(m).Item("child_client_id").ToString
Select Case PaymentType Case "Credit Card" strPaymentType = "C" Case "Debit Card" strPaymentType = "D" Case "Check" strPaymentType = "A" Case "Savings" strPaymentType = "A" End Select If strPaymentType = "C" Then Select Case CreditCardType Case "American Express" strCreditCardType = "AX" Case "MasterCard" strCreditCardType = "MC" Case "VISA" strCreditCardType = "VI" Case "Discover" strCreditCardType = "DI" Case "Diners" strCreditCardType = "DN" End Select Else strCreditCardType = "" End If
Select Case TransMode Case "AUTH" strTransRemarks = "SUC" Case "VOID" strTransRemarks = "SUC" Case "REFUND" strTransRemarks = "RFND" End Select
If strreturnStatus = "Returned" Then strTransRemarks = "RET" StrReturnCodeandDesc = dtableDetails.Rows(m).Item("return_code").ToString() & "-" & getcodedesc(dtableDetails.Rows(m).Item("return_code").ToString()) Else StrReturnCodeandDesc = "0" End If
address2 = dtableDetails.Rows(m).Item("house_type").ToString() & " " & dtableDetails.Rows(m).Item("house_no").ToString() str = str & dtableDetails.Rows(m).Item("authen_fld_1").ToString() & "|" & dtableDetails.Rows(m).Item("authen_fld_2").ToString() & "|" & dtableDetails.Rows(m).Item("authen_fld_3").ToString() & "|" & dtableDetails.Rows(m).Item("authen_fld_4").ToString() & "|" & dtableDetails.Rows(m).Item("authen_fld_5").ToString() & "|" & dtableDetails.Rows(m).Item("first_name").ToString() & "|" & dtableDetails.Rows(m).Item("last_name").ToString() & "|" & dtableDetails.Rows(m).Item("street_address").ToString() & "|" & address2 & "|" & dtableDetails.Rows(m).Item("city").ToString() & "|" & dtableDetails.Rows(m).Item("state").ToString() & "|" & dtableDetails.Rows(m).Item("zip").ToString() & "|" & dtableDetails.Rows(m).Item("email_address").ToString() & "|" & dtableDetails.Rows(m).Item("telephone").ToString() & "|" & dtableDetails.Rows(m).Item("mobile_number").ToString() & "|" & billduedate & "|" & DollarToCents(strBillingMinDue) & "|" & DollarToCents(strBillingTotalAmount) & "|" & transdate & "|" & DollarToCents(Val(strPaymentAmount) - Val(strServiceFee)) & "|" & FPtransId & "|" & DollarToCents(strServiceFee) & "|" & FPtransId & "|" & dtableDetails.Rows(m).Item("payment_confirmation_no").ToString() & "|" & strPaymentType & "|" & strCreditCardType & "|" & strTransRemarks & "|" & StrReturnCodeandDesc & "|" & dtableDetails.Rows(m).Item("invoice_number").ToString() & "|" & dtableDetails.Rows(m).Item("po_number").ToString() & "|" & dtableDetails.Rows(m).Item("description").ToString() & "|" & dtableDetails.Rows(m).Item("currency").ToString() & "|" & StrCompanyName & "|" & StrChildClientID & "|" & strBillername & "|" & dtableDetails.Rows(m).Item("pass_thru_val").ToString() & vbCrLf
InsertReconciliationDetail(clientId, dtableDetails.Rows(m).Item("authen_fld_1").ToString(), dtableDetails.Rows(m).Item("authen_fld_2").ToString(), dtableDetails.Rows(m).Item("authen_fld_3").ToString(), dtableDetails.Rows(m).Item("authen_fld_4").ToString(), dtableDetails.Rows(m).Item("authen_fld_5").ToString(), _ dtableDetails.Rows(m).Item("bill_due_date").ToString(), strBillingMinDue, strBillingTotalAmount, dtableDetails.Rows(m).Item("trans_date").ToString(), strPaymentAmount, dtableDetails.Rows(m).Item("payment_confirmation_no").ToString(), PaymentType, CreditCardType, strTransRemarks, "", ReconParentDetailId, dtableDetails.Rows(m).Item("first_name").ToString(), dtableDetails.Rows(m).Item("last_name").ToString(), dtableDetails.Rows(m).Item("trans_id").ToString(), dtableDetails.Rows(m).Item("return_code").ToString(), strServiceFee)
UpdateRemiteedField(FPtransId)
Next str = str & clientId & "|" str = str & System.DateTime.Now.Year & System.DateTime.Now.ToString("MM") & System.DateTime.Now.ToString("dd") & "|" & m & "|" & amount * 100 & vbCrLf filename = clientId & "_" & strBillername & "_recdata_" & System.DateTime.Now.Year & System.DateTime.Now.ToString("MM") & System.DateTime.Now.ToString("dd") & "_" & System.DateTime.Now.ToString("HH") & System.DateTime.Now.ToString("mm") & System.DateTime.Now.ToString("ss") & ".rtf" File.WriteAllText(Application.StartupPath & "\RemittanceData\" & filename, str) sqlstr = "Insert into remittance_files(client_id,file_date,file_name,creation_date_time,file_status)values(" sqlstr = sqlstr & ("'" & objDBConnection.Replace(clientId) & "',") sqlstr = sqlstr & ("'" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "',") sqlstr = sqlstr & ("'" & objDBConnection.Replace(filename) & "',") sqlstr = sqlstr & ("'" & objDBConnection.ChangeDateFormat(System.DateTime.Now) & "',") sqlstr = sqlstr & ("'A')") objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose()
'If dtableDetails.Rows.Count > 0 Then Dim RecDate As String = System.DateTime.Now.ToString("MM") & "/" & System.DateTime.Now.ToString("dd") & "/" & System.DateTime.Now.Year updateStrRECONDetail(filename, CDate(RecDate), System.DateTime.Now.ToString("HH") & System.DateTime.Now.ToString("mm") & System.DateTime.Now.ToString("ss"), ReconParentDetailId)
Dim ReconSUmCount As String Dim a() As String ReconSUmCount = GetSumAndTotalRec(ReconParentDetailId) a = Split(ReconSUmCount, "|")
updateRecSummary(ReconParentDetailId, filename, a(0), a(1), RecDate, System.DateTime.Now.ToString("HH") & System.DateTime.Now.ToString("mm") & System.DateTime.Now.ToString("ss")) 'End If
'Send Email To Client If CheckRemAlert(clientId) = "Y" Then Dim Templateid As String Dim StrMessage As String Templateid = GetTemplateId(clientId) If Templateid <> 0 Then StrMessage = GetFormattedMessageForPayment(Templateid, filename, clientId)
SendEmail(StrMessage, clientId, Templateid) End If End If
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try
'End If End Sub
Public Function getcodedesc(ByVal strcode As String) As String Try
Dim strcodeDesc As String = ""
sqlstr = " select return_description from return_reson_code where return_code='" & strcode & "'"
objDBConnection.DbConnOpen() 'Open Connection dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader() If dbRdr.HasRows = True Then strcodeDesc = dbRdr.GetValue(0).ToString() Else strcodeDesc = "0" End If Return strcodeDesc Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing Finally objDBConnection.DbConnClose() ' Closes a DB connection End Try End Function Public Function UpdateRemiteedField(ByVal Trans_id As String) As Boolean Try
sqlstr = "update payment_transactions set remitted='Y' where trans_id='" & Trans_id & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function updateRecSummary(ByVal ParentId As String, ByVal fileName As String, ByVal Count As String, ByVal SumAmount As String, ByVal fileDate As String, ByVal FileTime As String) As Boolean Try sqlstr = "update recon_data_summary set recon_data_filename='" & objDBConnection.Replace(fileName) & "'," sqlstr = sqlstr & " recon_data_build_date ='" & objDBConnection.ChangeToShortDate(fileDate) & "'," sqlstr = sqlstr & " recon_data_build_time='" & FileTime & "'," sqlstr = sqlstr & " recon_data_rec_count ='" & Count & "'," sqlstr = sqlstr & " recon_data_rec_total_amt ='" & SumAmount & "'" sqlstr = sqlstr & " where recon_id ='" & ParentId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing
End Try End Function Public Function GetSumAndTotalRec(ByVal parent_id As String) As String Try Dim RecoCount As String = "" Dim RecoSum As String = "" sqlstr = "select count(*)as count ,sum(recon_detail_payment_amt) as sum from recon_data_detail WHERE `parent_id` ='" & parent_id & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.Read Then RecoCount = dbRdr.Item(0).ToString RecoSum = dbRdr.Item(1).ToString End If objDBConnection.DbConnClose() Return RecoCount & "|" & RecoSum Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing
End Try End Function Public Function updateStrRECONDetail(ByVal filename As String, ByVal FileDate As Date, ByVal FileTime As String, ByVal ReconParentDetailId As String) As Boolean Try sqlstr = "update recon_data_detail set recon_data_filename ='" & objDBConnection.Replace(filename) & "'," sqlstr = sqlstr & " recon_data_build_date ='" & objDBConnection.ChangeToShortDate(FileDate) & "'," sqlstr = sqlstr & " recon_data_build_time ='" & FileTime & "'" sqlstr = sqlstr & " where parent_id ='" & ReconParentDetailId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing
End Try End Function Public Function InsertReconciliationDetail(ByVal client_id As String, ByVal Auth1 As String, ByVal Auth2 As String, ByVal Auth3 As String, ByVal Auth4 As String, ByVal Auth5 As String, _ ByVal DueDate As String, ByVal min_amt_due As String, ByVal total_amt_due As String, ByVal payment_date As String, ByVal payment_amt As String, _ ByVal conf_number As String, ByVal payment_method As String, ByVal card_type As String, ByVal status As String, ByVal reason_code As String, _ ByVal ReconParentDetailId As String, ByVal firstname As String, ByVal lastname As String, ByVal trans_id As String, ByVal return_code As String, ByVal servicefee As String) As Boolean Try If DueDate = "" Then DueDate = CDate(objDBConnection.GetStaticDate) Else
End If objDBConnection.DbConnOpen() sqlstr = "insert into recon_data_detail(client_id, recon_detail_auth_1, recon_detail_auth_2, recon_detail_auth_3, recon_detail_auth_4, recon_detail_auth_5 , " sqlstr = sqlstr & " recon_detail_due_date,recon_detail_min_amt_due ,recon_detail_total_amt_due,recon_detail_payment_date,recon_detail_payment_amt," sqlstr = sqlstr & "recon_detail_conf_number,recon_detail_payment_method,recon_detail_card_type ,recon_detail_status," sqlstr = sqlstr & " parent_id,recon_detail_first_name,recon_detail_last_name,trans_id,recon_detail_reason_code,service_fee )values(" sqlstr = sqlstr & "'" & client_id & "','" & Auth1 & "','" & Auth2 & "','" & Auth3 & "','" & Auth4 & "','" & Auth5 & "', " sqlstr = sqlstr & "'" & objDBConnection.ChangeToShortDate(DueDate) & "','" & min_amt_due & "','" & total_amt_due & "','" & objDBConnection.ChangeToShortDate(payment_date) & "','" & payment_amt & "','" & conf_number & "','" & payment_method & "','" & card_type & "','" & status & "','" & ReconParentDetailId & "','" & firstname & "','" & lastname & "','" & trans_id & "','" & reason_code & "','" & servicefee & "')" dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing
End Try End Function Public Function DollarToCents(ByVal Amount As Double) As Long Try Dim lngCents As Long Amount = Amount * 100 lngCents = Amount Return lngCents Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function CheckRemAlert(ByVal ClientId As String) As String Try 'Send Email Dim Rem_alert As String sqlstr = "select remittance_file_availability_alert from client_config where client_id ='" & ClientId & "'" objDBConnection.DbConnOpen()
dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn)
dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then While dbRdr.Read = True Rem_alert = dbRdr.Item(0).ToString
End While Else Rem_alert = "" End If objDBConnection.DbConnClose() ' Closes a DB connection Return Rem_alert Catch ex As Exception
End Try End Function Public Function GetTemplateId(ByVal clientid As String) As String Try Dim Templateid As String sqlstr = "select remittance_file_email_template_id from client_config where client_id='" & clientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn)
dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then If dbRdr.Read = True Then Templateid = dbRdr.Item(0).ToString Else Templateid = "0" End If End If
objDBConnection.DbConnClose() ' Closes a DB connection Return Templateid Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function
Public Function GetFormattedMessageForPayment(ByVal templateid As String, ByVal filename As String, ByVal clientid As String) As String Try Dim FTPIP As String sqlstr = "Select msg_body from client_email_templates where template_id=?" objDBConnection.DbConnOpen() ' Opens a DB connection
dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.Parameters.Add("@templateid", OdbcType.BigInt, 20) dbCmd.Parameters("@templateid").Value = templateid
dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then If dbRdr.Read = True Then strMessage = dbRdr.Item(0).ToString Else strMessage = "0" End If End If
objDBConnection.DbConnClose() ' Closes a DB connection
FTPIP = GetReconFTPIP(clientid)
strMessage = strMessage.Replace("[CLIENT]", clientid) strMessage = strMessage.Replace("[FILENAME]", filename) strMessage = strMessage.Replace("[FTPLOCATION]", FTPIP) strMessage = strMessage.Replace("[DATETIME]", System.DateTime.Now)
Return strMessage Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function GetMessageTitle(ByVal Templateid As String) Try Dim TitleName As String sqlstr = "Select msg_title from client_email_templates where template_id='" & Templateid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd)
TitleName = dbCmd.ExecuteScalar().ToString() objDBConnection.DbConnClose() ' Closes a DB connection Return TitleName Catch ex As Exception
End Try End Function
Public Function GetReconFTPIP(ByVal clientid As String) As String Try Dim ReconFTPIP As String sqlstr = "select recon_ftp_ip from client_config where client_id='" & clientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then If dbRdr.Read = True Then ReconFTPIP = dbRdr.Item(0).ToString Else ReconFTPIP = "0" End If End If objDBConnection.DbConnClose() ' Closes a DB connection Return ReconFTPIP Catch ex As Exception
End Try End Function
Public Function SendEmail(ByVal Strmessage As String, ByVal clientId As String, ByVal Templateid As String) As String Try Dim toAddrClient As String Dim fromAddress As String Dim title As String toAddrClient = GetClientMailAddress(clientId)
title = GetMessageTitle(Templateid) fromAddress = System.Configuration.ConfigurationSettings.AppSettings("From") Dim mm As New MailMessage(fromAddress, toAddrClient)
mm.Subject = title mm.Body = Strmessage.ToString() mm.IsBodyHtml = True Dim smtp As New SmtpClient(System.Configuration.ConfigurationSettings.AppSettings("smtp")) smtp.Send(mm) Return True Catch ex As Exception
End Try End Function Public Function GetClientMailAddress(ByVal Clientid As String) As String Try Dim ClientMailAddress As String = "" sqlstr = "select remittance_file_availability_email from client_config where client_id ='" & Clientid & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbRdr = dbCmd.ExecuteReader If dbRdr.HasRows = True Then If dbRdr.Read = True Then ClientMailAddress = dbRdr.Item(0).ToString Else ClientMailAddress = "" End If End If objDBConnection.DbConnClose() Return ClientMailAddress Catch ex As Exception
End Try End Function Public Sub uploadFileUsingFTP(ByVal CompleteFTPPath As String, ByVal CompleteLocalPath As String, Optional ByVal UName As String = "", Optional ByVal PWD As String = "")
Dim myFtpWebRequest As FtpWebRequest Dim myFtpWebResponse As FtpWebResponse Dim myStreamWriter As StreamWriter
myFtpWebRequest = WebRequest.Create(CompleteFTPPath)
'myFtpWebRequest.Credentials = New NetworkCredential("username", "password")
myFtpWebRequest.Method = WebRequestMethods.Ftp.UploadFile myFtpWebRequest.UseBinary = True
myStreamWriter = New StreamWriter(myFtpWebRequest.GetRequestStream()) myStreamWriter.Write(New StreamReader(CompleteLocalPath).ReadToEnd) myStreamWriter.Close()
myFtpWebResponse = myFtpWebRequest.GetResponse()
myFtpWebResponse.Close()
End Sub Public Function LoadRemittanceClients() As DataTable Try sqlstr = "SELECT c.client_id, ca.merchant_id, cf.cut_off_time,ca.biller_name,ca.biller_id FROM clients c JOIN client_biller_accounts ca ON c.client_id = ca.client_id AND c.status_active = 'A' JOIN client_config cf ON c.client_id = cf.client_id AND cf.cut_off_time <='" & System.DateTime.Now.ToString("HH:mm:ss") & "' AND cf.client_id IN (Select client_id FROM eod_transactions WHERE eod_date ='" & objDBConnection.ChangeToShortDate(System.DateTime.Now) & "')" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbAdpt = New OdbcDataAdapter(dbCmd) dbAdpt.Fill(dtableRemittance) objDBConnection.DbConnClose() Return dtableRemittance Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function getBillerName(ByVal billerId As String) As String Dim billerName As String Try sqlstr = "Select biller_name from client_biller_accounts where biller_id='" & billerId & "'" objDBConnection.DbConnOpen() dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) billerName = dbCmd.ExecuteScalar() objDBConnection.DbConnClose() Return billerName Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function
Public Function SelectDistinct(ByVal SourceTable As DataTable, ByVal ParamArray FieldNames() As String) As DataTable Dim lastValues() As Object Dim newTable As DataTable
If FieldNames Is Nothing OrElse FieldNames.Length = 0 Then 'Throw New ArgumentNullException("FieldNames") End If
lastValues = New Object(FieldNames.Length - 1) {} newTable = New DataTable
For Each field As String In FieldNames newTable.Columns.Add(field, SourceTable.Columns(field).DataType) Next newTable.Columns.Add("Links")
For Each Row As DataRow In SourceTable.Select("", String.Join(", ", FieldNames)) If Not fieldValuesAreEqual(lastValues, Row, FieldNames) Then newTable.Rows.Add(createRowClone(Row, newTable.NewRow(), FieldNames, SourceTable))
setLastValues(lastValues, Row, FieldNames) End If Next
Dim newTableFinal As New DataTable newTableFinal.Columns.Add("Processor Name") newTableFinal.Columns.Add("Mids") newTableFinal.Columns.Add("Links") Dim drFinal As DataRow Dim strIden() As String = {"CCP", "DCP", "CHP", "SAP", "CCC", "DCC", "CHC", "SAC"} For j As Integer = 0 To newTable.Rows.Count - 1 Dim str As String = "" For i As Integer = 0 To strIden.GetUpperBound(0) If InStr(newTable.Rows(j).Item(2), strIden(i)) > 0 Then str = str & "Y" & "|" Else str = str & "N" & "|" End If Next drFinal = newTableFinal.NewRow() drFinal(0) = newTable.Rows(j).Item(0).ToString() drFinal(1) = newTable.Rows(j).Item(1).ToString() drFinal(2) = str newTableFinal.Rows.Add(drFinal) Next
Return newTableFinal End Function
Private Function fieldValuesAreEqual(ByVal lastValues() As Object, ByVal currentRow As DataRow, ByVal fieldNames() As String) As Boolean Dim areEqual As Boolean = True
For i As Integer = 0 To fieldNames.Length - 1 If lastValues(i) Is Nothing OrElse Not lastValues(i).Equals(currentRow(fieldNames(i))) Then areEqual = False Exit For End If Next
Return areEqual End Function
Private Function createRowClone(ByVal sourceRow As DataRow, ByVal newRow As DataRow, ByVal fieldNames() As String, ByVal src As DataTable) As DataRow 'For Each field As String In fieldNames ' newRow(field) = sourceRow(field) 'Next Dim foundRows() As DataRow Dim str As String foundRows = src.Select("Mid='" & sourceRow(1) & "'") For i As Integer = 0 To foundRows.GetUpperBound(0) str = str & foundRows(i)(2) & "|" Next i
newRow(0) = sourceRow(0) newRow(1) = sourceRow(1) newRow(2) = str
Return newRow End Function
Private Sub setLastValues(ByVal lastValues() As Object, ByVal sourceRow As DataRow, ByVal fieldNames() As String) For i As Integer = 0 To fieldNames.Length - 1 lastValues(i) = sourceRow(fieldNames(i)) Next End Sub Public Function InsertApiLog(ByVal request_string As String, ByVal request_type As String, ByVal strStatus As String, ByVal response_string As String, ByVal client_id As String) As String Try
'Save in the database sqlstr = "insert into api_log(request_string,request_type,date_time,status,response_string,client_id)values(?,?,?,?,?,?)"
objDBConnection.DbConnOpen() 'Open Db dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn)
dbCmd.Parameters.Add("@request_string", OdbcType.Text) dbCmd.Parameters("@request_string").Value = objDBConnection.Replace(replaceamp(request_string))
dbCmd.Parameters.Add("@request_type", OdbcType.VarChar, 50) dbCmd.Parameters("@request_type").Value = request_type
dbCmd.Parameters.Add("@date_time", OdbcType.DateTime) dbCmd.Parameters("@date_time").Value = objDBConnection.ChangeDateFormat(System.DateTime.Now)
dbCmd.Parameters.Add("@status", OdbcType.VarChar, 20) dbCmd.Parameters("@status").Value = strStatus
dbCmd.Parameters.Add("@response_string", OdbcType.Text) dbCmd.Parameters("@response_string").Value = response_string
dbCmd.Parameters.Add("@client_id", OdbcType.VarChar, 20) dbCmd.Parameters("@client_id").Value = client_id
dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function InsertOOBBatch(ByVal strClientId As String, ByVal FPCount As String, ByVal FPAmount As String, ByVal m_NetCount As String, ByVal m_NetAmount As String, ByVal m_ReturnCount As String, ByVal m_ReturnAmount As String, ByVal m_creditCount As String, ByVal m_CreditAmount As String, ByVal m_VoidCount As String, ByVal m_VoidAmount As String, ByVal strStatus As String) As Boolean Try sqlstr = "Insert into oob_batch(`batch_date`,`client_id`,`fp_count`,`fp_amount`,`net_count`,`net_amount`,`return_count`," sqlstr = sqlstr & "`return_amount`,`credit_count`,`credit_amount`,`void_count`,`void_amount`)values(" sqlstr = sqlstr & "'" & objDBConnection.ChangeDateFormat(DateTime.Now) & "'," sqlstr = sqlstr & "'" & strClientId & "'," sqlstr = sqlstr & "'" & FPCount & "'," sqlstr = sqlstr & "'" & Val(FPAmount) & "'," sqlstr = sqlstr & "'" & m_NetCount & "'," sqlstr = sqlstr & "'" & Val(m_NetAmount) & "'," sqlstr = sqlstr & "'" & m_ReturnCount & "'," sqlstr = sqlstr & "'" & Val(m_ReturnAmount) & "'," sqlstr = sqlstr & "'" & m_creditCount & "'," sqlstr = sqlstr & "'" & Val(m_CreditAmount) & "'," sqlstr = sqlstr & "'" & m_VoidCount & "'," sqlstr = sqlstr & "'" & Val(m_VoidAmount) & "')" objDBConnection.DbConnOpen() 'Open Db dbCmd = New OdbcCommand(sqlstr, objDBConnection.dbConn) dbCmd.ExecuteNonQuery() objDBConnection.DbConnClose() 'Close DB Return True
Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function
Public Function replaceamp(ByVal request_string As String) As String Try If request_string Is Nothing Then request_string = "" End If Return Replace(request_string, "&", "&") Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function Public Function Decrypt(ByVal cipherText As String) As String If cipherText = "" Then Exit Function End If Try cipherText = Replace(cipherText, "Firstview", "+") ' Convert strings defining encryption key characteristics into byte ' arrays. Let us assume that strings only contain ASCII codes. ' If strings include Unicode characters, use Unicode, UTF7, or UTF8 ' encoding. Dim initVectorBytes As Byte() initVectorBytes = Encoding.ASCII.GetBytes(initVector)
Dim saltValueBytes As Byte() saltValueBytes = Encoding.ASCII.GetBytes(saltValue)
' Convert our ciphertext into a byte array. Dim cipherTextBytes As Byte() cipherTextBytes = System.Convert.FromBase64String(cipherText)
' First, we must create a password, from which the key will be ' derived. This password will be generated from the specified ' passphrase and salt value. The password will be created using ' the specified hash algorithm. Password creation can be done in ' several iterations. Dim password As PasswordDeriveBytes password = New PasswordDeriveBytes(passPhrase, _ saltValueBytes, _ hashAlgorithm, _ passwordIterations)
' Use the password to generate pseudo-random bytes for the encryption ' key. Specify the size of the key in bytes (instead of bits). Dim keyBytes As Byte() keyBytes = password.GetBytes(keySize / 8)
' Create uninitialized Rijndael encryption object. Dim symmetricKey As RijndaelManaged symmetricKey = New RijndaelManaged()
' It is reasonable to set encryption mode to Cipher Block Chaining ' (CBC). Use default options for other symmetric key parameters. symmetricKey.Mode = CipherMode.CBC
' Generate decryptor from the existing key bytes and initialization ' vector. Key size will be defined based on the number of the key ' bytes. Dim decryptor As ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes)
' Define memory stream which will be used to hold encrypted data. Dim memoryStream As MemoryStream memoryStream = New MemoryStream(cipherTextBytes)
' Define memory stream which will be used to hold encrypted data. Dim cryptoStream As CryptoStream cryptoStream = New CryptoStream(memoryStream, _ decryptor, _ CryptoStreamMode.Read)
' Since at this point we don't know what the size of decrypted data ' will be, allocate the buffer long enough to hold ciphertext; ' plaintext is never longer than ciphertext. Dim plainTextBytes As Byte() ReDim plainTextBytes(cipherTextBytes.Length)
' Start decrypting. Dim decryptedByteCount As Integer decryptedByteCount = cryptoStream.Read(plainTextBytes, _ 0, _ plainTextBytes.Length)
' Close both streams. memoryStream.Close() cryptoStream.Close()
' Convert decrypted data into a string. ' Let us assume that the original plaintext string was UTF8-encoded. Dim plainText As String plainText = Encoding.UTF8.GetString(plainTextBytes, _ 0, _ decryptedByteCount)
' Return decrypted string. Decrypt = plainText Catch ex As Exception Dim objerrorlog As New FVAdmin.FVDLC.DLFVErrorLog objerrorlog.UserName = "EOD EXE" objerrorlog.UserType = "EOD EXE" objerrorlog.Excep = ex objerrorlog.AddErrorLog(objerrorlog.UserName, objerrorlog.UserType, DateTime.Now, "EOD EXE", ex.GetType.Name, ex.StackTrace) objerrorlog = Nothing End Try End Function End Module
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
OOps.. thats huge code.. not readable Just post the logic. It's not possible for me to understand your code.. Just post the logic, what you are trying to do.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Thank you for this example. I was having a very hard time implementing threads in a class structure and your code gave me the breakthrough I needed. Keep it up!
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hello Rakesh,
Firstly, great Thank you for helping me understand the threading module.
Have textbox to enter a msg & on Button event click, String entered in the Textbox is added to n_msgstr.
I have declared a Public n_msgstr as String in the form module. I am trying to call the string from the class module `Public Sub StartThread` m_Args(1) = frmMain.n_msgstr
Have changed the counter as string in the Deletegate event.
But doesn't seem to work. Any solution.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
Can you please post your code and tell me what you are trying to do actually? I provided the demo project just to understand the concept of threading. If you understand the concept of multithreading then you can do anything.. let me know if you have any confusion or if you have problem understanding anything, also post your code so that I can rectify it..
Regards Rakesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
'=============================================== 'Form Code '=============================================== Imports System.Threading Public Class frmMain Public m_ThreadList As New ArrayList Public n_str_Msg As String
Public Sub Start_Thread_Action() If Not m_ThreadList(0) Is Nothing Then If CType(m_ThreadList(0), Thread).IsAlive Then MsgBox("You can not start this thread again. Becoz this thread is still alive !!", MsgBoxStyle.Critical) Else GoTo StartThread End If Else GoTo StartThread End If Exit Sub StartThread: Dim objThreadClass As New clsThread(1, Me) Dim objNewThread As New Thread(AddressOf objThreadClass.StartThread) objNewThread.IsBackground = True objNewThread.Start() m_ThreadList.Item(0) = objNewThread End Sub Public Sub End_Thread_Action() If Not m_ThreadList(0) Is Nothing Then If CType(m_ThreadList(0), Thread).IsAlive Then CType(m_ThreadList(0), Thread).Abort() m_ThreadList(0) = Nothing Me.TextBox2.Text = "" Else MsgBox("No thread is active in this section", MsgBoxStyle.Critical) End If Else MsgBox("No thread is active in this section", MsgBoxStyle.Critical) End If End Sub Public Sub ReceiveThreadMessage(ByVal ThreadIndex As Integer, ByVal str_Msg As String) Select Case ThreadIndex Case 1 Me.TextBox2.Text = str_Msg End Select End Sub
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing End_Thread_Action() End Sub
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load m_ThreadList.Add(Nothing) Start_Thread_Action() End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click n_str_Msg = Me.TextBox1.Text & vbCrLf & n_str_Msg 'Msg_String = Me.TextBox1.Text TextBox3.Text = n_str_Msg Me.TextBox1.Text = "" End Sub End Class
'=============================================== ' Class Code '=============================================== Imports System.Threading
Public Class clsThread Private m_ThreadIndex As Integer Private m_Counter As Integer = 0 Private m_str_Msg As String 'Public n_str_Msg As String Private m_Args(1) As Object Private m_MainWindow As Form
Private Delegate Sub NotifyMainWindow(ByVal ThreadIndex As Integer, ByVal str_Msg As String) Private m_NotifyMainWindow As NotifyMainWindow
Public Sub New(ByVal ThreadIndex As Integer, ByRef MainWindow As frmMain) m_ThreadIndex = ThreadIndex m_MainWindow = MainWindow m_NotifyMainWindow = AddressOf MainWindow.ReceiveThreadMessage End Sub
Public Sub StartThread() While True 'm_Counter = m_Counter + 1 'Debug.Print(frmMain.n_str_Msg) If Len(frmMain.n_str_Msg) = 0 Then m_str_Msg = "No Message" Else m_str_Msg = frmMain.n_str_Msg & vbCrLf & m_str_Msg End If
ReDim m_Args(1)
m_Args(0) = m_ThreadIndex 'm_Args(1) = m_Counter m_Args(1) = m_str_Msg m_MainWindow.Invoke(m_NotifyMainWindow, m_Args) Thread.Sleep(5000) End While End Sub End Class
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Does this line print the value of the variable properly?
Debug.Print(frmMain.n_str_Msg)
If not try using
MainWindow.n_str_Msg
Because in this class we have already passed the ref. of the main from while construing the object and we have hold the ref in MainWindow variable.
let me know
Rakesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
 |
|
|
 |
|
|
 |
|
|
 |
|
 |
I am new to multihreading. I understood the theory on multithreading from your explanations in the code. Thanks a lot for it. After starting the counter by pressing start button, when I check the checkbox to stop the counter while executing your code in visual studio 2008, I get an exception saying "format exception was unhandled" at "m_MainWindow.Invoke(m_NotifyMainWindow, m_Args)". Please help me out in overcoming this issue.
Thanks, Rajath
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
I think, I'll leave it for you. You are trying to learn multithreading, so try to solve yourself That must be a good start for you... 
For clue, the error is in the callback method (The method that is getting called from the thread). Put a try catch inside that method, and put a break in the catch statement and try to resolve it 
Let me know how do you go with this...
Best of luck !!
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Sorry I found the solution myself. We need to specify the counter in the textbox where the counter has to be stopped and then the checkbox has to be checked. If we do not specify the counter in the textbox and check the checkbox, then we get the exception that I previously posted. But still this issue can be handled by the owner of this form by displaying the appropriate message in the messagebox. Yes I will do it and let you know.
Thanks a lot for the code and thanks for this forum.
Rajath
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Public Sub StartThread() While True m_Counter = m_Counter + 1 'we need to create this array such a way, that it should contains the no of elements, that we need 'to pass as the arguments. 'Here we will pass two arguments ThreadIndex and Counter, so we took the array with 2 elements. 'Now we need to place the variable to the appropriate position of this array. 'Like : Our First Argument is ThreadIndex, so we will put ThreadIndex into the first element and 'm_counter into the second element. 'Basically you have to put the variables into the array with the same sequence that is there in the 'argument list ReDim m_Args(1) m_Args(0) = m_ThreadIndex m_Args(1) = m_Counter Try 'Call the notificaiton method on the main window by the delegate m_MainWindow.Invoke(m_NotifyMainWindow, m_Args) Catch ex As Exception Dim result As DialogResult = MessageBox.Show("Enter a value in textbox", "Value Required", MessageBoxButtons.OK) If result = DialogResult.OK Then GoTo jump End If End Try 'wait for some time before continuing loop jump: Thread.Sleep(1000) End While End Sub Is this fine? I have added the try catch statement.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi rajath,
You have used the Try-Catch inside the threaded method. I asked you to put inside the callback method, that means that method on the form, (which are being called from the thread).
But this will work for you too. And as you know you have already got the problem that you did not specify a numeric value for the tread stop input box. Actually as this was a demo project, I did not do all the validation. The project was just to demonstrate 
And yes, it is better to use try catch inside your winform methods, avoid using try-catch inside threaded methods.
Rakesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
I have to do migration from VB6 to VB.net where i need to convert one portion of the code to vb.net using multithreading.That portion of the code in VB 6 is calling a function from the dll(which is having lot of parameters)I need to convert the code to vb.net by passing 10 threads.When i googled i came to know that it is difficult to pass parameters for the procedure.
My question is that is it very difficutl to pass parameters while multithreading?In my migration where i convert one portion of the code (in which a function is referrenced from dll)will i be able to implement the passing of parameters do i need to think of some other solutions.Can we pass the parameters using delegates inside a class where the thread is passed?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Krithika,
Its not impossible to pass parameters to a threaded function. If you look at the soruce code of this article, you will find that I do pass a parameter (ThreadIndex) to the threaded function. But in that case it is suggested that you create a call and put the function inside that class and make some public variables in that class. Now the idea is...
1. create an object of that class 2. set the public variables (these are your parameters) 3. then invoke of the method of the object.
So when the mthod inside that object will run in a seperate thread it can uses the variables of the objects that you have already set.
Hope this will help you....
Rakesh
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Rakesh, Thank u so much .I think the reply which u gave will help me and i will implement it and see
|
| Sign In·View Thread·PermaLink | 1.00/5 (1 vote) |
|
|
|
 |
|
 |
I heard that we can use a background worker class in net2.0 and pass parameters .But am not familiar with this background worker much .Will it be easy to do it or in the way u suggested will be an easy method to implement.As am a beginner i dont want to catch up with complex solutions can u suggest me with the logic of it.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|