|  | Option Explicit
Dim dev:dev = True
Dim outFile
Dim WaitTime:WaitTime = 15000 
Dim DataDirectory
Dim WshShell:Set WshShell = WScript.CreateObject("Wscript.Shell")
Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
Dim ConnectionString
Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim glob:set glob = CreateObject("Chilkat_9_5_0.Global")
Dim success:success = glob.UnlockBundle("KENTCM.CB1022025_RGzBPM5J655e")
	If (success <> 1) Then
    	WriteLine(glob.LastErrorText)
    	WScript.Quit
	End If
	
Dim objCSV:Set objCsv = CreateObject("Chilkat_9_5_0.Csv")
Dim WorkingDirectory:WorkingDirectory = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
	If dev Then 
		DataDirectory = WorkingDirectory & "test"
		ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=F:\Development\Tracking_Kits\Data\webdata - Copy.mdb;"
		set outFile = objFSO.CreateTextFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\temp.csv",True)
	Else
		DataDirectory = "\\kci-syn-cl01\PC Transfer\TrackingDataImport"
		ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=C:\inetpub\Data\webdata - Copy.mdb;"
		set outFile = objFSO.CreateTextFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\temp.csv",True)
	End If
	
	
	Dim KitID
'	CheckForFiles
'	KitID = CheckForJobsToCass()
'		If KitID > 0 Then
'	    ExportMMCsv(KitID)
'	    RunMailManager
'	    ImportCass
'	End If
oConn.Open(ConnectionString)
	KitID = CheckForReadyToLabel()
	If KitID > 0 Then
		createTrackingInfoForKit(KitID)
	End If
	 
	WScript.Quit
Function createTrackingInfoForKit(KitID)
Dim KitRs:set KitRs = oConn.Execute("Select * from Kit Where ID =" & KitID & ";")
Dim InkjetRs:Set InkjetRs = oConn.Execute("Select * from InkjetRecords Where KitID =" & KitID & ";")
Dim SerialNumberStart:SerialNumberStart = GetSetting("SerialNumberStart")
Dim serialOffset:serialOffset = GetSetting("SerialOffset")
Dim serialStart:serialStart = CLng(GetSetting("SerialNumberStart")) + CLng(GetSetting("SerialOffset"))
Dim Counter:Counter=0
Dim KitLabelID
Dim KitLabelRs
Dim Step : If KitRs("InboundSTID") <> "" Then : Step = 2  : Else Step = 1
serialStart = PadLeft(serialStart + CLng(Counter),9,"0")
While Not InkjetRs.EOF
	If Step = 1 Then
		oConn.Execute("INSERT INTO KitLabels (KitID,OutboundSerial,OutboundIMBDigits) " &_
			  			"VALUES(" & KitID & ",'" & serialStart & "','" & KitRs("OutBoundSTID").Value & serialStart & "000000000" & "');")
	Set KitLabelRs = oConn.Execute("SELECT TOP 1 [ID] FROM KitLabels ORDER BY ID DESC")
	KitLabelID = KitLabelRs("ID").Value
	oConn.Execute("UPDATE InkjetRecords Set [KitLabelID]=" & KitLabelID & " WHERE ID=" & InkjetRs("ID") & ";")
	serialStart = serialStart + 1
	Else 
	'	oConn.Execute("INSERT INTO KitLabels (KitID,OutboundSerial,InBoundSerial,OutbondIMBDigitds,InBoundIMBDigits) " &_
	'		  			"VALUES(" & KitID & ",' & ")
	End If 
InkjetRs.MoveNext
Wend
End Function
Function GetSetting(settingName)
Dim rs:Set rs = oConn.Execute("Select Value From [Settings] Where [Name] = '" & settingName & "';")
	If Not rs.EOF Then
		GetSetting = rs(0).value
		rs.Close
	Else
		SetSetting = 0
		rs.Close
	End If
	
End Function 
Function CheckForReadyToLabel()
Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Assign Labels' ORDER BY ID DESC;")
		If Not rs.EOF Then
			Dim kitId : kitId = rs("ID").value
			rs.Close
			CheckForReadyToLabel = KitID
			 oConn.Execute("UPDATE Kit SET Status ='Applying Serial Numbers' WHERE ID =" & KitID & ";")
		Else 
			CheckForReadyToLabel = 0
		End If 
End Function
Function CheckForFiles()
	
	If objFSO.FolderExists(DataDirectory) Then
		Dim objFolder:Set objFolder = objFSO.GetFolder(DataDirectory)
	    
	    	If objFolder.Files.Count > 0 Then
        		'WScript.Echo "Files found in directory: " & DataDirectory
        		Dim objFile
        		For Each objFile In objFolder.Files
        			Dim CsvString:CsvString = ConvertCsvToString(objFile.Path)
            		If ValidImportCSV(CsvString) Then
            			SetupKit CsvString,objFile.Name
            			objFSO.MoveFile objFile.Path, DataDirectory & "\import\" & objFile.Name
            		End If 
        		Next
    		Else
        		'WScript.Echo "No files found in directory: " & DataDirectory
    		End If
	
	End If 
End Function 
Function ValidJcode(jcode)
Dim oConn
Set oConn = WScript.CreateObject("ADODB.Connection")
oConn.ConnectionString = ConnectionString
oConn.Open
Dim oRs
set oRs = oConn.Execute("Select * from Jurisdiction Where [JCode] = '" & jcode & "';")
If oRs.EOF Then 
	ValidJcode = 0
Else
	ValidJcode = 1
End If  
oRs.Close
oConn.Close
End Function
Function SetupKit(CsvString,FileName)
Dim JobNumber:JobNumber = Mid(FileName,9,6)
Dim JCode:JCode = Left(Filename,5)
	If IsNumeric(JobNumber) Then
		If ValidJcode(JCode) Then
			WScript.Echo FileName & " Is a Valid CSV for Importing"
			Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
			oConn.ConnectionString = ConnectionString
			oConn.Open
			oConn.Execute("Insert Into Kit ([JobNumber], [Jcode], [CreatedOn], [JobType],[Filename],[Status]) VALUES ('" & JobNumber & "','" & JCode & "',#" & Now() & "#,'Purple Envelopes','" & FileName & "','Importing');") 
			Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit ORDER BY ID DESC")
			Dim kitId : kitId = rs("ID").value
			rs.close
			Dim i
			For i = 1 To objCSV.NumRows -1
			oConn.Execute("Insert Into [InkjetRecords] (KitID,VOTERID,LASTNAME,FIRSTNAME,MIDDLENAME" & _
			",SUFFIX,PRECINCT,ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5,APPSENT,APPRETURNED,BALSENT,BALRETURNED" & _
			",CountingBoard,UOCAVASTATUS,EMAILADDRESS,PHONENUMBER,BALLOT_NUMBER) VALUES (" & kitId & _
			",'" & Replace(objCSV.GetCell(i,0),"'","''") & _
			"','" & objCsv.GetCell(i,1) & _
			"','" & Replace(objCSV.GetCell(i,2),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,3),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,4),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,5),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,6),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,7),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,8),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,9),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,10),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,11),"'","''") & _
			"','" & Replace(objCSV.GetCell(i,12),"'","''") & _
			"','" & Replace(objCsv.GetCell(i,13),"'","''") & _
			"','" & objCsv.GetCell(i,14) & _
			"','" & objCsv.GetCell(i,15) & _
			"','" & objCsv.GetCell(i,16) & _
			"','" & objCsv.GetCell(i,17) & _
			"','" & objCsv.GetCell(i,18) & _
			"','" & objCsv.GetCell(i,19) & _
			"')")
			Next
			oConn.Execute("Update Kit SET [Status] = 'Ready to Cass' Where ID = " & kitId &";")
			'oConn.Close
		End If
	End If
	
	
End Function 
Function ConvertCsvToString(FilePath)
	Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
	Dim objCsvFile:set objCsvFile = objFSO.OpenTextFile(FilePath)
	Dim strContent:strContent = ""
	Dim intLineCount:intLineCount = 0
	    Do Until objCsvFile.AtEndOfStream Or intLineCount >= 3
			objCsvFile.SkipLine
			intLineCount = intLineCount + 1
		Loop
	    ' Read the remaining content into a string
			Do Until objCsvFile.AtEndOfStream
			Dim strLine:strLine = objCsvFile.ReadLine
			strContent = strContent & strLine & vbCrLf
		Loop
ConvertCsvToString = strContent
End Function 
Function ValidImportCSV(CsvFileAsString)
	objCSV.LoadFromString(CsvFileAsString)
	If objCSV.NumColumns = 20 Then
	debug.WriteLine objCsv.GetCell(1,1)
		ValidImportCSV = True
	Else
		ValidImportCSV = False
	End If
End Function
Sub ImportCass
	Dim currentRow
	objCsv.LoadFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\FROM_MM.CSV")
	For currentRow = 0 To objCsv.NumRows -1
	oConn.Execute("UPDATE InkJetRecords SET CassADDRESS1 = '" & Replace(objCsv.GetCell(currentRow,1),"'","''") & "', " &_ 
	              "CassADDRESS2 = '" & Replace(objCSV.GetCell(currentRow,3),"'","''") & "', " &_
	              "CassADDRESS3 = '" & Replace(objCSV.GetCell(currentRow,4),"'","''") & "', " &_
	              "CassADDRESS4 = '" & Replace(objCSV.GetCell(currentRow,5),"'","''") & "', " &_
	              "CassADDRESS5 = '" & Replace(objCsv.GetCell(currentRow,6) & ", " & objCsv.GetCell(currentRow,7) & " " & objCsv.GetCell(currentRow,8),"'","''") & "'" &_
	              " WHERE ID = " & objCSV.GetCell(currentRow,0) & ";")
		
	Next
			 oConn.Execute("UPDATE Kit SET Status ='Ready To Assign STIDS' WHERE ID =" & KitID & ";")
			 oConn.Execute("UPDATE Kit SET [Cass] = 1 WHERE ID =" & KitID & ";")
End Sub
Sub RunMailManager
	'WshShell.Run "\\MM2012\APPS\BCC\MM2010\mailman.exe -p -j MMJOB.mjb -u DAN",1,True
	WshShell.Run "PsExec64.exe -i -e -u ntp\danielc -p SunBrightShine! \\MarkH2 ""\\MM2012\APPS\BCC\MM2010\mailman.exe"" -p -j MMJOB.mjb -u DAN",1,True
End Sub
Sub ExportMMCsv(KitId)
	
	Dim success
	objCsv.HasColumnNames = 1
	objCSV.EnableQuotes = 1
	success = objCsv.SetColumnName(0,"ID")
	success = objCsv.SetColumnName(1,"NAME")
	success = objCsv.SetColumnName(2,"ADDRESS1")
	success = objCsv.SetColumnName(3,"ADDRESS2")
	success = objCsv.SetColumnName(4,"ADDRESS3")
	success = objCsv.SetColumnName(5,"ADDRESS4")
	success = objCsv.SetColumnName(6,"ADDRESS5")
 	Dim rs : Set rs = oConn.Execute("Select ID," & _ 
 								 "IIF(FIRSTNAME IS NULL,'',FIRSTNAME & ' ') & " & _
 								 "IIF(MIDDLENAME IS NULL,'',MIDDLENAME & ' ') & " & _
 								 "IIF(LASTNAME IS NULL,'',LASTNAME & ' ') & " & _
 								 "IIF(SUFFIX IS NULL,'',SUFFIX & ' ') " & _
 								 "AS NAME, ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5 FROM InkjetRecords WHERE KitID =" & KitID & " ORDER By ID;")
		Dim CurrentRow:CurrentRow = 0 
		While Not rs.EOF
			objCSV.SetCell CurrentRow,0,rs("ID").value
			objCSV.SetCell CurrentRow,1,rs("NAME").value 
			objCSV.SetCell CurrentRow,2,rs("ADDRESS1").value 
			objCSV.SetCell CurrentRow,3,rs("ADDRESS2").value 
			objCSV.SetCell CurrentRow,4,rs("ADDRESS3").value 
			objCSV.SetCell CurrentRow,5,rs("ADDRESS4").value 
			objCSV.SetCell CurrentRow,6,rs("ADDRESS5").value  
			rs.MoveNext
			CurrentRow = CurrentRow +1
		Wend
		Dim CsvString:CsvString = objCSV.SaveToString()
		outFile.WriteLine CsvString
		outFile.Close
End Sub
Function CheckForJobsToCass()
oConn.ConnectionString = ConnectionString
oConn.Open
	'oConn.Open
	Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Cass' ORDER BY ID DESC;")
		If Not rs.EOF Then
			Dim kitId : kitId = rs("ID").value
			rs.Close
			CheckForJobsToCass = KitID
			 oConn.Execute("UPDATE Kit SET Status ='Cassing' WHERE ID =" & KitID & ";")
		Else 
			CheckForJobsToCass = 0
		End If 
	'oConn.Close
End Function
Public Function PadLeft(originalString,desiredLength,Char)
Dim padLength
    padLength = desiredLength - Len(originalString)
    If padLength > 0 Then
    ' Left pad the string with zeros
    PadLeft = String(padLength, Char) & originalString
Else
    ' If the original string is already longer or equal to the desired length, no padding is needed
    PadLeft = originalString
End If
End Function
 |