﻿

Imports Superbowl_Daily_2.SystemFunctions
Imports Superbowl_Daily_2.ProjectFunctions
Imports Superbowl_Daily_2.db
Imports Superbowl_Daily_2.Process

Imports System.IO
Imports Microsoft.VisualBasic

'20190820 - v3.0.0  - Create Call Cycle Data Report import - Dirk

Public Class CallCycleDataReport_Process : Inherits Process

    Sub New(Process As Process)
        MyBase.New(Process.Name, Process.Filename, Process.Path, Process.PK)

        Me.barProcess = Process.barProcess

    End Sub

    Public Sub Run()
        '1 download & log
        '2 check file, set pgbar
        '3.1 clear stg
        '3.2 import from local file
        '4.1 log duplicate
        '4.2 set deletes
        '4.3 insert/update stg=>dw
        '4.4 delete deletes


        '1 download & log
        Me.LogProcessStart()
        Me.DownloadFile()

        '2 check file, set pgbar
        Me.CheckLocalFile()


        If Me.isValid = True Then
            '3.1 clear stg
            '3.2 import from local file

            Me.ClearStagingTable()
            Me.ImportLocalFile()
            Me.ArchiveFile()

        End If

        If Me.isValid = True Then

            Me.barProcess.BackColor = Color.DarkOrchid
            Me.barProcess.Style = ProgressBarStyle.Continuous
            Me.barProcess.Refresh()

            '4.1 log duplicate
            Me.LogDuplicates()
            '4.2 set deletes

            'Me.SetDeletes("LEFT(strPromoDate,6)", frmMain.chkPartialImport.Checked)

            '4.3 insert/update stg=>dw
            Me.ProcessDW()
         '4.4 delete deletes
         'Me.DeleteDW()

         Me.barProcess.Style = ProgressBarStyle.Blocks
            Me.barProcess.Refresh()
        End If


        Me.LogProcessCompleted()

    End Sub


    Public Sub ProcessDW()
        Dim dr As DataRow
        Dim xdb As New db

      'update stg <=> dwf
      dr = db.getRow("SELECT * FROM sysQuery WHERE ID = 82")
      Try
            xdb.doQuery(dr!memQuery)
            WriteLog("info", Me.Name, "Process DataWarehouse", xdb.intRows & " record(s) Updated.")
        Catch ex As Exception
        End Try

      'insert stg => dwf
      dr = db.getRow("SELECT * FROM sysQuery WHERE ID = 83")
      Try
            xdb.doQuery(dr!memQuery)
            WriteLog("info", Me.Name, "Process DataWarehouse", xdb.intRows & " record(s) Inserted.")
        Catch ex As Exception
        End Try
    End Sub


    '************************
    '*** sql ***
    '************************

    Public Overrides Function sqlInsertStaging(dr As String()) As String



      dr(0) = CleanString(dr(0))
         dr(1) = CleanString(dr(1))
         'Dim x1 = CleanString(dr(2))
         dr(3) = CleanString(dr(3))
         'dr(4) = CleanString(dr(4))
         dr(5) = CleanString(dr(5))
      dr(6) = CleanString(dr(6))

      ' 20230124 - Dont add records if the STORE code is not valid
      If dr(5).Length > 10 Then Throw New InvalidCastException("Invalid Store code! '" & dr(5) & "'")

      Return "INSERT INTO [dbo].[stgCallCycleDataReport] ([strProvince],[strUserName],[intWeeks],[strDays],[intStoreID],[strStoreCode],[strStoreName])" &
                  "VALUES ('" & dr(0) & "', '" & dr(1) & "', " & dr(2) & ", '" & dr(3) & "', " & dr(4) & ", '" & dr(5) & "', '" & dr(6) & "')"

   End Function


End Class