コード例 #1
0
        static void Main(string[] args)
        {
            MyEventListener eventListener = new MyEventListener();
            MyEventSource   eventSource   = new MyEventSource();

            eventSource.AnEvent += eventListener.Receive;
            MyEventArgs eventArgs = new MyEventArgs();

            eventSource.InvokeAnEvent(eventArgs);
            const int count = 5000000;
            DateTime  then  = DateTime.Now;

            for (int iter = 0; iter < count; ++iter)
            {
                eventSource.InvokeAnEvent(eventArgs);
            }
            TimeSpan diff = DateTime.Now - then;

            Console.WriteLine(
                "{0} calls took {1:0.00} seconds (listener received {2} calls)",
                count,
                diff.TotalSeconds,
                eventListener.Count
                );
            Console.ReadKey();
        }
コード例 #2
0
        public void GCTest()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.Listen(provider);
            Assert.That(EventManager.Count, Is.EqualTo(1), "WeakEventManager.Count");

            provider.Raise();
            Assert.That(listener.Count, Is.EqualTo(1), "listener.Count");

//			var weakListener = new WeakReference(listener);
            listener = null;
            // how long we have to wait until the GC collects?

            GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();

            var stopwatch = new Stopwatch(); stopwatch.Start();

            while (EventManager.Count > 0)
            {
                provider.Raise();
                Thread.Sleep(10);
            }
            Trace.WriteLine("Collected after " + stopwatch.Elapsed);
            //Assert.That(WeakEventManager.Count, Is.EqualTo(0),"WeakEventManager.Count");
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var eventListener = new MyEventListener();
            var eventSource   = new MyEventSource();

            eventSource.AnEvent += eventListener.Receive;

            var eventArgs = new EventArgs();

            eventSource.InvokeAnEvent(eventArgs);

            const int Count = 3000000;

            var then = DateTime.Now;

            for (var iter = 0; iter < Count; ++iter)
            {
                eventSource.InvokeAnEvent(eventArgs);
            }

            var diff = DateTime.Now - then;

            Console.WriteLine(
                "{0} calls took {1:0.00} seconds (listener received {2} calls)",
                Count,
                diff.TotalSeconds,
                eventListener.Count
                );

            Console.ReadKey();
        }
コード例 #4
0
 private static void InitListener(IEnumerable<EventSource> sources)
 {
     var listener = new MyEventListener();
     foreach (var source in sources)
     {
         listener.EnableEvents(source, EventLevel.LogAlways);
     }
 }
コード例 #5
0
        public void EventHandler()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.Listen(provider);
            provider.Raise();
            Assert.That(listener.Count, Is.EqualTo(listener.Count), "listener.Count");
        }
コード例 #6
0
        public void BasicˑTest()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.RegisterˑMyEvent(provider);
            provider.RaiseˑMyEvent();
            Assert.That(listener.EventCount, Is.EqualTo(1));

            listener.ReleaseˑMyEvent();
            provider.RaiseˑMyEvent();
            Assert.That(listener.EventCount, Is.EqualTo(1));
        }
コード例 #7
0
        public void GCCollectTest()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.Listen(provider);
            Assert.That(EventManager.Count, Is.EqualTo(1), "WeakEventManager.Count");

            provider.Raise();
            Assert.That(listener.Count, Is.EqualTo(1), "listener.Count");

            listener = null;
            EventManager.Collect(true);
            Assert.That(EventManager.Count, Is.EqualTo(0), "WeakEventManager.Count");
        }
コード例 #8
0
        public void ProviderGarbageCollectionˑTest()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.RegisterˑMyEvent(provider);
            provider.RaiseˑMyEvent();
            Assert.That(listener.EventCount, Is.EqualTo(1));

            var c = EventHandle.StatisticsːInstancesˑCurrent;

            provider = null;
            ForceGarbageCollection();
            Assert.That(((EventHandle)listener._MyEventHandle).IsAlive, Is.EqualTo(false));
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: ukarpeychik/EtwSamples
        private static void Main(string[] args)
        {
            using (MyEventListener myListener = new MyEventListener())
                using (MyEventSource source = new MyEventSource())
                {
                    myListener.EnableEvents(source, EventLevel.Verbose);
                    if (source.ConstructionException != null)
                    {
                        throw source.ConstructionException;
                    }

                    source.String("Hello world");
                    source.Int(10);
                    source.Bool(true);
                }
        }
コード例 #10
0
        public void ListenerGarbageCollectionˑTest()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.RegisterˑMyEvent(provider);
            provider.RaiseˑMyEvent();
            Assert.That(listener.EventCount, Is.EqualTo(1));

            var c = EventHandle.StatisticsːInstancesˑCurrent;

            listener = null;
            ForceGarbageCollection();
            provider.RaiseˑMyEvent();
            Assert.That(((IEventSourceInternal)provider.MyEvent).GetContainers().Count, Is.EqualTo(0));
        }
コード例 #11
0
    protected void btnBulkCopy_Click(object sender, EventArgs e)
    {
        try
        {
            string pkgLocation;
            Package pkg;
            Application app;
            DTSExecResult pkgResults;

            MyEventListener eventListener = new MyEventListener();

            //pkgLocation = "D:\\dts\\TestDataPKG.dtsx";
            app = new Application();

            //Load Package from File system.
            //pkg = app.LoadPackage(pkgLocation, eventListener);
            //app.SaveToXml("D:\\test.xml", pkg, eventListener);

            //pkgResults = pkg.Validate(null, null, null, null);
            //pkgResults = pkg.Execute(null, null, eventListener, null, null);

            string pkgName = String.Empty;
            string sqlServer = String.Empty;
            string userID = String.Empty;
            string pwd = String.Empty;

            pkgName = ConfigurationManager.AppSettings["PackageName"];             // Give the Name of the DTS Package in SQL Server.
            sqlServer = ConfigurationManager.AppSettings["ServerName"];  // Name of the SQL Server.
            userID = ConfigurationManager.AppSettings["UserName"];            // Sql Server User ID.
            pwd = ConfigurationManager.AppSettings["Password"];       // Sql Server Password.

            AdioDTS.AdioDTS adiodts = new AdioDTS.AdioDTS();
            string retval = adiodts.RunDTS(sqlServer, userID, pwd, pkgName);
            //Load Package from sql server.
            //pkg = app.LoadFromDtsServer(pkgName, sqlServer, null);
            //pkg = app.LoadFromSqlServer(pkgName, sqlServer, userID, pwd, null);
            //pkgResults = pkg.Execute();//(null, null, eventListener, null, null);

            lblResult.Text = "DTS Package Executed Successfully...";
            btnBulkCopy.Enabled  = false;
            btnImportData.Enabled = true;
        }
        catch (Exception ex)
        {
            lblResult.Text = "Exception: " + ex.Message;
        }
    }
コード例 #12
0
        public void PerformanceTest1()
        {
            var provider = new MyEventProvider();
            var listener = new MyEventListener();

            listener.Listen(provider);
            var count = 1000000;

            var stopwatch = new Stopwatch(); stopwatch.Start();

            for (int i = 0; i < count; i++)
            {
                provider.Raise();
            }
            stopwatch.Stop();
            Assert.That(listener.Count, Is.EqualTo(count), "listener.Count");
            Trace.WriteLine(string.Format("Time: {0}", new TimeSpan(stopwatch.ElapsedTicks * 1)));
        }
コード例 #13
0
ファイル: fmMain.cs プロジェクト: tudinh29/WebServer
 private void btnBuildDaily_Click(object sender, EventArgs e)
 {
     try
     {
         string                pkgLocation;
         runtime.Package       pkg;
         runtime.Application   app;
         runtime.DTSExecResult pkgResults;
         MyEventListener       eventListener = new MyEventListener();
         pkgLocation = @"D:\SSIS\SSIS_Bank\Integration Services Project1\DB_TransToDaily.dtsx";;
         app         = new runtime.Application();
         pkg         = app.LoadPackage(pkgLocation, eventListener);
         pkgResults  = pkg.Execute(null, null, eventListener, null, null);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
コード例 #14
0
 /// <summary>
 /// Metodo para lanzar las ETL
 /// </summary>
 /// <param name="pkgLocation"></param>
 public void lanzarETL(string pkgLocation, ConfigGlassWindow parent)
 {
     Package pkg;
     Microsoft.SqlServer.Dts.Runtime.Application app;
     DTSExecResult pkgResults;
     parentWin = parent;
     eventListener = new MyEventListener(parentWin);
     //pkgLocation =
     //  @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
     //  @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
     app = new Microsoft.SqlServer.Dts.Runtime.Application();
     pkg = app.LoadPackage(pkgLocation, eventListener);
     //pkg.Variables.Add("strNombreServidorLocal", false, "", "ASINE1159\\SQLEXPRESS");
     //pkg.Variables["strNombreServidorLocal"].Value = "ASINE1159\\SQLEXPRESS";
     pkgResults = pkg.Execute(null, pkg.Variables, eventListener, null, null);
     //errores.Add(pkgResults.ToString());
     //Console.WriteLine(pkgResults.ToString());
     //Console.ReadKey();
 }
コード例 #15
0
ファイル: fmMain.cs プロジェクト: tudinh29/WebServer
 private void btnYearly_Click(object sender, EventArgs e)
 {
     try
     {
         string                pkgLocation;
         runtime.Package       pkg;
         runtime.Application   app;
         runtime.DTSExecResult pkgResults;
         MyEventListener       eventListener = new MyEventListener();
         pkgLocation = @"D:\SSIS\SSIS_Bank\Integration Services Project1\DB_QuarterlyToYearly.dtsx";
         app         = new runtime.Application();
         pkg         = app.LoadPackage(pkgLocation, eventListener);
         pkg.Variables["User::nam"].Value = DateTime.Today.Year;
         pkgResults = pkg.Execute(null, null, eventListener, null, null);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
コード例 #16
0
        public void MassiveListenerGCTest()
        {
            var       provider        = new MyEventProvider();
            var       eventContainers = ((EventSource)provider.MyEvent).GetContainers();
            var       r         = new System.Random();
            var       stopwatch = new Stopwatch(); stopwatch.Start();
            const int max       = 5000;
            var       c         = eventContainers.Count;

            for (int i = 1; i <= max; i++)
            {
                var listener = new MyEventListener();
                listener.RegisterˑMyEvent(provider);
                provider.RaiseˑMyEvent();
                Thread.Sleep(r.Next(8, 12 + 1));
                if (eventContainers.Count + c < i)
                {
                    //OK any listener has been collected
                    Trace.WriteLine("GC collected at iteration " + i + " " + stopwatch.Elapsed + " " + eventContainers.Count + " alive");
                    c = i - eventContainers.Count;
                }
                listener.Dispose();
                listener = null;
            }
            Trace.WriteLine(eventContainers.Count * 100 / max + "% alive after " + stopwatch.Elapsed);
            var next = stopwatch.Elapsed.Add(TimeSpan.FromSeconds(1));

            while (eventContainers.Count > 0)
            {
                if (stopwatch.Elapsed < next)
                {
                    Thread.Sleep(100);
                    //ForceGarbageCollection();
                    provider.RaiseˑMyEvent(); continue;
                }
                Trace.WriteLine(eventContainers.Count * 100 / max + "% alive after " + stopwatch.Elapsed);
                next = stopwatch.Elapsed.Add(TimeSpan.FromSeconds(1));
            }

            //Assert.Fail("Nothing collected!");
        }
コード例 #17
0
        public void EjecutarETL(String path, String periodo)
        {
            string        pkgLocation;
            Package       pkg;
            Application   app;
            DTSExecResult pkgResults;

            MyEventListener eventListener = new MyEventListener();

            pkgLocation =
                @"\\srvprodbd-ds\ETL\RO_CONSOLIDADO\CargaConcepto.dtsx";

            app = new Application();
            pkg = app.LoadPackage(pkgLocation, eventListener);
            Variables vars = pkg.Variables;

            vars["ExcelPath"].Value = path;

            pkgResults = pkg.Execute(null, null, eventListener, null, null);

            Console.WriteLine(pkgResults.ToString());
            Console.ReadKey();
        }
コード例 #18
0
ファイル: fmMain.cs プロジェクト: tudinh29/WebServer
 private void runInsertDPtoServer(string location)
 {
     try
     {
         string                pkgLocation;
         runtime.Package       pkg;
         runtime.Application   app;
         runtime.DTSExecResult pkgResults;
         MyEventListener       eventListener = new MyEventListener();
         pkgLocation = location;
         app         = new runtime.Application();
         pkg         = app.LoadPackage(pkgLocation, eventListener);
         pkgResults  = pkg.Execute(null, null, eventListener, null, null);
         if (pkgResults.ToString() != "Success")
         {
             MessageBox.Show("Package run failed");
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
コード例 #19
0
        public void MassiveGCTest()
        {
            var       provider  = new MyEventProvider();
            var       r         = new System.Random();
            var       stopwatch = new Stopwatch(); stopwatch.Start();
            const int max       = 2000;
            var       c         = EventManager.Count;

            for (int i = 1; i <= max; i++)
            {
                var listener = new MyEventListener();
                listener.Listen(provider);
                provider.Raise();
                Thread.Sleep(r.Next(8, 12 + 1));
                if (EventManager.Count + c < i)
                {
                    //OK any listener has been collected
                    Trace.WriteLine("GC collected at interation " + i + " " + stopwatch.Elapsed + " " + EventManager.Count + " alive");
                    c = i - EventManager.Count;
                }
            }
            Trace.WriteLine(EventManager.Count * 100 / max + "% alive after " + stopwatch.Elapsed);
            var next = stopwatch.Elapsed.Add(TimeSpan.FromSeconds(1));

            while (EventManager.Count > 0)
            {
                if (stopwatch.Elapsed < next)
                {
                    Thread.Sleep(10); EventManager.Collect(); continue;
                }
                Trace.WriteLine(EventManager.Count * 100 / max + "% alive after " + stopwatch.Elapsed);
                next = stopwatch.Elapsed.Add(TimeSpan.FromSeconds(1));
            }

            //Assert.Fail("Nothing collected!");
        }
コード例 #20
0
 public NUnitJson(string testAssemblyPath)
 {
     Eventqueue       = new BlockingCollection <string>(new ConcurrentQueue <string>());
     NunitListener    = new MyEventListener(Eventqueue);
     TestAssemblyPath = testAssemblyPath;
 }
コード例 #21
0
        public ActionResult DownloadBrewReport(String _BatchKey, bool CreateLogFile = false)
        {
            // Parameterhandling
            const string FILENAME_TYPE       = "xlsx";
            const string EXCEL_TEMPLATE_NAME = "ExcelReport_BatchBrew_Template" + "." + FILENAME_TYPE;
            const string SSIS_PACKAGE        = "ExcelReport_BatchBrew.dtsx";
            const string FOLDER_BASE_SOURCE  = "Areas\\PlantiT.Web.HeinekenMassafra.MES\\Excel";
            const string FOLDER_BIN          = "bin";
            const string FOLDER_TEMPLATE     = "template";
            const string FOLDER_BASE_OUTPUT  = "Areas\\PlantiT.Web.HeinekenMassafra.MES\\Excel\\output";
            const string LOG_FILE_NAME       = "DownloadBrewBatch_Log.txt";

            const int WAITTIME_IN_MS    = 1000;
            const int MAXWAITTIME_IN_MS = 30000;

            String sLocation = Assembly.GetExecutingAssembly().Location; // Get current directory

            Logger logger = null;

            long   nBatchKey      = 0;
            string sBatchName     = String.Empty;
            string sBatchNumber   = String.Empty;
            string sSAPMaterial   = String.Empty;
            string sSAP_Batch     = String.Empty;
            string sBrewLine      = String.Empty;
            string sShortMaterial = String.Empty;



            string sSourcePath          = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FOLDER_BASE_SOURCE);
            string sDestinationPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FOLDER_BASE_OUTPUT);
            string sDestinationFilePath = String.Empty;
            string sFileName            = String.Empty;

            DateTime dtCheckTime = DateTime.Now;

            List <CBatch> listBatch = null;

            // Log generieren
            if (CreateLogFile)
            {
                logger = new Logger(Path.Combine(sDestinationPath, LOG_FILE_NAME), true);
            }


            // Batch Key ermitteln
            try
            {
                nBatchKey = Convert.ToInt64(_BatchKey);
            }
            catch
            {
                return(new HttpNotFoundResult(String.Format("Invalid BatchKey: {0}", _BatchKey)));
            }

            // Batchdaten ermitteln
            String odataURI = String.Format("odata/ods/ZWebSAPInterfaceStatuses?$select=_BatchKey,BatchName,SAPMaterial,SAP_Batch,BatchProcessStartTime&$filter=_BatchKey eq {0}", _BatchKey);

            PGatewayConnection gatewayConnection = DependencyResolver.Current.GetService(typeof(PGatewayConnection)) as PGatewayConnection;

            try
            {
                listBatch = gatewayConnection.ReadItem <CODataResponse <CBatch> >(odataURI).Value;
            }
            catch
            {
                return(new HttpNotFoundResult(String.Format("OData query invalid for BatchKey: {0}", _BatchKey)));
            }

            // Daten prüfen
            if (listBatch == null || listBatch.Where(x => x._BatchKey == nBatchKey).Count() == 0)
            {
                return(new HttpNotFoundResult(String.Format("Data not found for BatchKey: {0}", _BatchKey)));
            }

            // Namen von Auftrag ermitteln
            sBatchName     = listBatch.Where(x => x._BatchKey == nBatchKey).FirstOrDefault().BatchName;
            sBatchNumber   = sBatchName.Substring(0, 12).Substring(sBatchName.Substring(0, 12).Length - 4, 4);
            sSAPMaterial   = listBatch.Where(x => x._BatchKey == nBatchKey).FirstOrDefault().SAPMaterial;
            sSAP_Batch     = listBatch.Where(x => x._BatchKey == nBatchKey).FirstOrDefault().SAP_Batch;
            sBrewLine      = sSAP_Batch.Substring(5, 1);
            sShortMaterial = sSAPMaterial.Substring(sSAPMaterial.Length - 5);

            string FILENAME_PREFIX = (listBatch.Where(x => x._BatchKey == nBatchKey).FirstOrDefault().BatchProcessStartTime).ToString("yy");


            // BatchName prüfen
            if (sBatchName.Equals(String.Empty))
            {
                return(new HttpNotFoundResult(String.Format("No Batchname found for BatchKey: {0}", _BatchKey)));
            }



            // Nach Datei suchen
            sFileName = FILENAME_PREFIX + "_" + sBatchNumber + "_" + sBrewLine + "_1_" + sShortMaterial;


            Microsoft.SqlServer.Dts.Runtime.Application app     = new Microsoft.SqlServer.Dts.Runtime.Application();
            Microsoft.SqlServer.Dts.Runtime.Package     package = null;
            MyEventListener eventListener = new MyEventListener();

            //Load the SSIS Package which will be executed
            app.PackagePassword = "******";

            String sPackageFilePath = Path.Combine(sSourcePath, FOLDER_BIN, SSIS_PACKAGE);

            // Execute
            try
            {
                // Load package
                package = app.LoadPackage(sPackageFilePath, eventListener);


                // Set values
                Variables vars = package.Variables;

                vars["User::InputBatchKey"].Value         = nBatchKey;
                vars["User::InputDestinationFile"].Value  = sFileName + "." + FILENAME_TYPE;
                vars["User::InputDestinationPath"].Value  = sDestinationPath;
                vars["User::InputTemplateFilePath"].Value = Path.Combine(sSourcePath, FOLDER_TEMPLATE, EXCEL_TEMPLATE_NAME);
                vars["User::InputCreateLogFile"].Value    = CreateLogFile;
                vars["User::InputLogFilePath"].Value      = (logger != null) ? logger.FilePath : String.Empty;

                // Log erzeugen
                if (logger != null)
                {
                    logger.Log("InputBatchKey", vars["User::InputBatchKey"].Value.ToString());
                    logger.Log("InputDestinationFile", vars["User::InputDestinationFile"].Value.ToString());
                    logger.Log("InputDestinationPath", vars["User::InputDestinationPath"].Value.ToString());
                    logger.Log("InputTemplateFilePath", vars["User::InputTemplateFilePath"].Value.ToString());
                }


                vars["InputToOverwrite"].Value = true;

                DTSExecResult results = package.Execute(null, null, eventListener, null, null);
            }
            catch (Exception ex)
            {
                if (logger != null)
                {
                    logger.Log("Error", String.Format("Error: {0} // Innermessage: {1}", ex.Message, (ex.InnerException != null) ? ex.InnerException.Message : String.Empty));
                }

                return(new HttpNotFoundResult(String.Format("Error: {0} // Innermessage: {1}", ex.Message, (ex.InnerException != null) ? ex.InnerException.Message : String.Empty)));
            }

            // zyklisch prüfen ob Datei vorhanden ist, maximal  MAXWAITTIME_IN_MS
            for (int i = 0; i < MAXWAITTIME_IN_MS; i += WAITTIME_IN_MS)
            {
                // erstmal eine Sekunde zeit geben, zyklisch prüfen
                System.Threading.Thread.Sleep(WAITTIME_IN_MS);

                // alle Dateien des Pfades holen die dem Suchmuster entsprechen
                DirectoryInfo dirInfo     = new DirectoryInfo(Path.Combine(sDestinationPath));
                var           filesInPath = dirInfo.EnumerateFiles(String.Format("{0}*.{1}", sFileName, FILENAME_TYPE));

                var file = filesInPath.Where(x => x.Name.Contains(sFileName)).OrderByDescending(x => x.LastWriteTime).FirstOrDefault();

                // nur welche die eben erstellt wurde
                if (file == null)
                {
                    continue;
                }

                // Falls eben erstellt...
                if (file.LastWriteTime >= dtCheckTime)
                {
                    // gefunden, Abbruch
                    sFileName = file.Name;
                    break;
                }
            }

            // Pfad mit Datei erzeugen
            sDestinationFilePath = Path.Combine(sDestinationPath, sFileName);

            // Datei vorhanden?
            if (!System.IO.File.Exists(sDestinationFilePath))
            {
                return(new HttpNotFoundResult(String.Format("Excel file could not created for BatchKey: {0}", _BatchKey)));
            }

            // Create data return stream
            byte[] fileData    = System.IO.File.ReadAllBytes(sDestinationFilePath);
            string contentType = System.Web.MimeMapping.GetMimeMapping(sDestinationFilePath);

            // Datei entfernen
            System.IO.File.Delete(sDestinationFilePath);

            var cd = new System.Net.Mime.ContentDisposition()
            {
                // for example foo.bak
                FileName = sFileName,

                // always prompt the user for downloading, set to true if you want
                // the browser to try to show the file inline
                Inline = false,
            };

            Response.AppendHeader("Content-Disposition", cd.ToString());
            return(File(fileData, contentType));
        }
コード例 #22
0
        private static void tmr_Tick(Object myObject, EventArgs myEventArgs)
        {
            StreamWriter sw;

            sw = new StreamWriter("Log.txt", true);

            mailBody += "Attempting to process files ";
            //   + Convert.ToString(count++) + " of " + Convert.ToString(retr-1) + "\r\n\r\n\r\n";

            if (Retries == 1)
            {
                exitFlag = true;
            }
            Retries--;

            //  tmr.Enabled = false;
            tmr.Interval = 60000 * TimerInterval;

            string   OutputDirectory, TransactReportImportPath, UnsettledReportImportPath;
            DateTime dt = DateTime.Now.AddDays(-1);


            string year  = string.Format("{0:D2}", dt.Year).Substring(2);
            string month = string.Format("{0:D2}", dt.Month);
            string day   = string.Format("{0:D2}", dt.Day);

            emailTo  = ini.IniReadValue("Email", "To Email List");
            emailCC  = ini.IniReadValue("Email", "CC Email List");
            emailBCC = ini.IniReadValue("Email", "BCC Email List");
            TransactReportImportPath  = ini.IniReadValue("Directories", "TransactReportImportPath");
            UnsettledReportImportPath = ini.IniReadValue("Directories", "UnsettledReportImportPath");
            OutputDirectory           = ini.IniReadValue("Directories", "OutputDirectory");

            /****************************************************/

            sw.WriteLine("BEGIN\n");

            try
            {
                /*both morning and noon*/

                SqlConnectionStringBuilder sqConTransactB = new SqlConnectionStringBuilder();
                sqConTransactB.DataSource = @"10.7.46.2\sql2k5_dev"; //Production

                sqConTransactB.IntegratedSecurity = true;
                sqConTransactB.InitialCatalog     = "ZacReporting";
                sqConTransactB.ConnectTimeout     = 0;

                SqlConnection transactConn = new SqlConnection(sqConTransactB.ConnectionString);
                transactConn.Open();

                SqlCommand transactEmpty = new SqlCommand();
                transactEmpty.Connection     = transactConn;
                transactEmpty.CommandTimeout = 0;
                transactEmpty.CommandText    = "Delete from [abc096].[IMP_TRANSACT_D]";
                transactEmpty.ExecuteNonQuery();

                transactConn.Close();
            }
            catch
            {
            }

            try
            {
                if (morning == true)
                {
                    //System.IO.File.Copy(TransactReportImportPath + "report_" + "20" + year + month + day + ".csv", OutputDirectory + "transactreport.csv", true);
                    System.IO.File.Copy(@"\\\\192.168.241.252\\TransactReports\\Daily\\" + "report_" + "20" + year + month + day + ".csv", OutputDirectory + "transactreport.csv", true);

                    mailBody += "report_" + "20" + year + month + day + ".csv FOUND.\r\n\r\n";

                    sw.WriteLine("report_" + "20" + year + month + day + ".csv FOUND.\r\n\r\n");
                }
                else/*noon*/
                {
                    //System.IO.File.Copy(TransactReportImportPath + "report2_" + "20" + year + month + day + ".csv", OutputDirectory + "transactreport.csv", true);
                    System.IO.File.Copy(@"\\\\192.168.241.252\\TransactReports\\Daily\\" + "report2_" + "20" + year + month + day + ".csv", OutputDirectory + "transactreport.csv", true);

                    mailBody += "report2_" + "20" + year + month + day + ".csv FOUND.\r\n\r\n";

                    sw.WriteLine("report2_" + "20" + year + month + day + ".csv FOUND.\r\n\r\n");
                }
            }
            catch
            {
                if (morning == true)
                {
                    mailBody += "report_" + "20" + year + month + day + ".csv not found. \r\n";
                    Console.WriteLine("report_" + "20" + year + month + day + ".csv not found. \r\n");
                    sw.WriteLine("report_" + "20" + year + month + day + ".csv not found. \r\n");
                }
                else
                {
                    mailBody += "report2_" + "20" + year + month + day + ".csv not found. \r\n";
                    Console.WriteLine("report2_" + "20" + year + month + day + ".csv not found. \r\n");
                    sw.WriteLine("report2_" + "20" + year + month + day + ".csv not found. \r\n");
                }

                try { sw.Close(); }
                catch { }
                return;
            }

            //try move up 21012015
            //{
            //    /*both morning and noon*/

            //    SqlConnectionStringBuilder sqConTransactB = new SqlConnectionStringBuilder();
            //    sqConTransactB.DataSource = @"10.7.46.2\sql2k5_dev"; //Production

            //    sqConTransactB.IntegratedSecurity = true;
            //    sqConTransactB.InitialCatalog = "ZacReporting";
            //    sqConTransactB.ConnectTimeout = 0;

            //    SqlConnection transactConn = new SqlConnection(sqConTransactB.ConnectionString);
            //    transactConn.Open();

            //    SqlCommand transactEmpty = new SqlCommand();
            //    transactEmpty.Connection = transactConn;
            //    transactEmpty.CommandTimeout = 0;
            //    transactEmpty.CommandText = "Delete from [abc096].[IMP_TRANSACT_D]";
            //    transactEmpty.ExecuteNonQuery();

            //    transactConn.Close();
            //}
            //catch
            //{

            //}

            try
            {   /*both morning and noon*/
                string        pkgLocation;
                Package       pkg;
                DTSExecResult pkgResults;
                Microsoft.SqlServer.Dts.Runtime.Application app;
                MyEventListener eventListener = new MyEventListener();

                app         = new Microsoft.SqlServer.Dts.Runtime.Application();
                pkgLocation = @".\Package.dtsx";
                pkg         = app.LoadPackage(pkgLocation, eventListener);
                pkgResults  = pkg.Execute(null, null, eventListener, null, null);

                mailBody += "transactreport.csv IMPORTED." + pkgResults.ToString() + "\r\n";
                sw.WriteLine("transactreport.csv IMPORTED." + pkgResults.ToString() + "\r\n");
            }
            catch
            {
                mailBody += "transactreport.csv could not be imported. \r\n";
                Console.WriteLine("transactreport.csv could not be imported. \r\n");
                sw.WriteLine("transactreport.csv could not be imported. \r\n");
                try { sw.Close(); }
                catch { }

                return;
            }

            try
            {
                /*both morning and noon*/

                SqlConnectionStringBuilder sqConTransactB = new SqlConnectionStringBuilder();
                sqConTransactB.DataSource = @"10.7.46.2\sql2k5_dev"; //Production

                sqConTransactB.IntegratedSecurity = true;
                sqConTransactB.InitialCatalog     = "ZacReporting";
                sqConTransactB.ConnectTimeout     = 0;

                SqlConnection transactConn = new SqlConnection(sqConTransactB.ConnectionString);
                transactConn.Open();

                SqlCommand transactUpd = new SqlCommand();
                transactUpd.Connection     = transactConn;
                transactUpd.CommandTimeout = 0;
                transactUpd.CommandText    = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] " +
                                             "set amount =0 where msgid='0200'  " +
                                             "and REVERSED='F' " +
                                             "and exists " +
                                             "(select * from [ZacReporting].[abc096].[IMP_TRANSACT_D]  B where b.msgid='0400' and amount=b.amount and " +
                                             "mask=b.mask and mid=b.mid and tid=b.tid and DESTCOMID=B.DESTCOMID AND B.REVERSED='A') ";
                transactUpd.ExecuteNonQuery();


                SqlCommand transactDel = new SqlCommand();
                transactDel.Connection     = transactConn;
                transactDel.CommandTimeout = 0;
                transactDel.CommandText    = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D]  where msgid='0400'  " +
                                             "and exists " +
                                             "(select * from [ZacReporting].[abc096].[IMP_TRANSACT_D]  B where b.msgid<>'0400' " +
                                             "and mask=b.mask and mid=b.mid and tid=b.tid and DESTCOMID=B.DESTCOMID AND B.REVERSED='F') ";

                transactDel.ExecuteNonQuery();

                mailBody += "Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n";
                Console.WriteLine("Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n");
                sw.WriteLine("Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n");


                transactDel.CommandText = "UPDATE [ZacReporting].[abc096].[IMP_TRANSACT_D] SET [DESTCOMID]='NET_ALPHA' where [DESTCOMID]='NET_CLBICALPHA'";
                transactDel.ExecuteNonQuery();

                transactDel.CommandText = "UPDATE [ZacReporting].[abc096].[IMP_TRANSACT_D] SET [DESTCOMID]='NET_EBNK' where [DESTCOMID]='NET_CLBICEBNK'";
                transactDel.ExecuteNonQuery();

                Console.WriteLine("Update BIC ports.\r\n");


                transactDel.CommandText = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D] where msgid='0100' and proccode ='080000'";
                transactDel.ExecuteNonQuery();

                Console.WriteLine("Delete inquiries.\r\n");

                transactDel.CommandText = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D] where msgid='0200' and proccode ='890000'";
                transactDel.ExecuteNonQuery();

                Console.WriteLine("Delete DCC inquiries.\r\n");

                transactDel.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set msgid='0200',proccode ='000001' " +
                                          "where destcomid='NET_NTBNLTY' and msgid='0100' and proccode ='000000'";
                transactDel.ExecuteNonQuery();

                transactDel.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set msgid='0200',proccode ='020001' " +
                                          "where destcomid='NET_NTBNLTY' and msgid='0100' and proccode ='020000'";
                transactDel.ExecuteNonQuery();

                Console.WriteLine("Update Go4More.\r\n");

                SqlCommand transactDelnul = new SqlCommand();
                transactDelnul.Connection     = transactConn;
                transactDelnul.CommandTimeout = 0;
                transactDelnul.CommandText    = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D]  where mask is null or mask='' ";

                transactDelnul.ExecuteNonQuery();


                Console.WriteLine("delete null pan \r\n");


                SqlCommand transactproduct = new SqlCommand();
                transactproduct.Connection     = transactConn;
                transactproduct.CommandTimeout = 0;
                transactproduct.CommandText    = "update [abc096].[imp_TRansact_D] " +
                                                 " set productid= " +
                                                 " case " +
                                                 " when " +
                                                 " exists " +
                                                 " (select * from abc096.products b " +
                                                 " where " +
                                                 " (substring(mask,1,6)=cast((substring(b.bin,1,6 )) as dec(22,0)) or" +
                                                 " substring(mask,1,6)=cast((substring(b.binu,1,6)) as dec(22,0)) or" +
                                                 " substring(mask,1,6) between cast((substring(b.bin,1,6 )) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,6)) as dec(22,0)) ) )" +
                                                 " then " +
                                                 "(select min(b.id) from abc096.products b" +
                                                 " where " +
                                                 " productid=cast((substring(b.bin,1,6 )) as dec(22,0)) or" +
                                                 " productid=cast((substring(b.binu,1,6)) as dec(22,0)) or" +
                                                 " productid between cast((substring(b.bin,1,6 )) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,6)) as dec(22,0)) )" +
                                                 " when " +
                                                 " exists " +
                                                 " (select * from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,5)=cast((substring(b.bin,1,5 )) as dec(22,0)) or" +
                                                 " substring(mask,1,5)=cast((substring(b.binu,1,5)) as dec(22,0)) or" +
                                                 " substring(mask,1,5) between cast((substring(b.bin,1,5)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,5)) as dec(22,0))) and len(b.bin)=5)" +
                                                 " then " +
                                                 " (select min(b.id) from abc096.products b" +
                                                 " where " +
                                                 " (substring(mask,1,5)=cast((substring(b.bin,1,5 )) as dec(22,0)) or" +
                                                 " substring(mask,1,5)=cast((substring(b.binu,1,5)) as dec(22,0)) or" +
                                                 " substring(mask,1,5) between cast((substring(b.bin,1,5)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,5)) as dec(22,0))) and len(b.bin)=5)" +
                                                 " when " +
                                                 " exists " +
                                                 " (select * from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,4)=cast((substring(b.bin,1,4 )) as dec(22,0)) or" +
                                                 " substring(mask,1,4)=cast((substring(b.binu,1,4)) as dec(22,0)) or" +
                                                 " substring(mask,1,4) between cast((substring(b.bin,1,4)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,4)) as dec(22,0))) and len(b.bin)=4)" +
                                                 " then " +
                                                 " (select min(b.id) from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,4)=cast((substring(b.bin,1,4 )) as dec(22,0)) or" +
                                                 " substring(mask,1,4)=cast((substring(b.binu,1,4)) as dec(22,0)) or" +
                                                 " substring(mask,1,4) between cast((substring(b.bin,1,4)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,4)) as dec(22,0))) and len(b.bin)=4)" +
                                                 " when" +
                                                 " exists" +
                                                 " (select * from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,3)=cast((substring(b.bin,1,3 )) as dec(22,0)) or" +
                                                 " substring(mask,1,3)=cast((substring(b.binu,1,3)) as dec(22,0)) or" +
                                                 " substring(mask,1,3) between cast((substring(b.bin,1,3)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,3)) as dec(22,0))) and len(b.bin)=3)" +
                                                 " then" +
                                                 " (select min(b.id) from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,3)=cast((substring(b.bin,1,3 )) as dec(22,0)) or" +
                                                 " substring(mask,1,3)=cast((substring(b.binu,1,3)) as dec(22,0)) or" +
                                                 " substring(mask,1,3) between cast((substring(b.bin,1,3)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,3)) as dec(22,0))) and len(b.bin)=3)" +
                                                 " when" +
                                                 " exists" +
                                                 " (select * from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,2)=cast((substring(b.bin,1,2 )) as dec(22,0)) or" +
                                                 " substring(mask,1,2)=cast((substring(b.binu,1,2)) as dec(22,0)) or" +
                                                 " substring(mask,1,2) between cast((substring(b.bin,1,2)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,2)) as dec(22,0))) and len(b.bin)=2)" +
                                                 " then" +
                                                 " (select min(b.id) from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,2)=cast((substring(b.bin,1,2 )) as dec(22,0)) or" +
                                                 " substring(mask,1,2)=cast((substring(b.binu,1,2)) as dec(22,0)) or" +
                                                 " substring(mask,1,2) between cast((substring(b.bin,1,2)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,2)) as dec(22,0))) and len(b.bin)=2)" +
                                                 " when" +
                                                 " exists" +
                                                 " (select * from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,1)=cast((substring(b.bin,1,1 )) as dec(22,0)) or" +
                                                 " substring(mask,1,1)=cast((substring(b.binu,1,1)) as dec(22,0)) or" +
                                                 " substring(mask,1,1) between cast((substring(b.bin,1,1)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,1)) as dec(22,0))) and len(b.bin)=1)" +
                                                 " then " +
                                                 " (select min(b.id) from abc096.products b" +
                                                 " where" +
                                                 " (substring(mask,1,1)=cast((substring(b.bin,1,1 )) as dec(22,0)) or" +
                                                 " substring(mask,1,1)=cast((substring(b.binu,1,1)) as dec(22,0)) or" +
                                                 " substring(mask,1,1) between cast((substring(b.bin,1,1)) as dec(22,0)) and" +
                                                 " cast((substring(b.binu,1,1)) as dec(22,0))) and len(b.bin)=1)" +
                                                 " end";
                transactproduct.ExecuteNonQuery();
                transactConn.Close();

                mailBody += "Fixed product in IMP_TRANSACT_D. \r\n";
                Console.WriteLine("Fixed product in IMP_TRANSACT_D. \r\n");
                sw.WriteLine("Fixed product in IMP_TRANSACT_D. \r\n");
            }
            catch
            {
            }


            try
            {
                if (morning == true)
                {
                    System.IO.File.Move(OutputDirectory + "transactreport.csv", OutputDirectory + "Done\\" + "report_" + "20" + year + month + day + ".csv");
//                    System.IO.File.Move(TransactReportImportPath + "report_" + "20" + year + month + day + ".csv", TransactReportImportPath + "Processed\\" + "report_" + "20" + year + month + day + ".csv");
                    System.IO.File.Move(@"\\\\192.168.241.252\\TransactReports\\Daily\\" + "report_" + "20" + year + month + day + ".csv", @"\\\\192.168.241.252\\TransactReports\\Daily\\" + "Processed\\" + "report_" + "20" + year + month + day + ".csv");

                    mailBody += "report_" + "20" + year + month + day + ".csv DONE" + "\r\n";
                }

                else /*noon*/
                {
                    System.IO.File.Move(OutputDirectory + "transactreport.csv", OutputDirectory + "Done\\" + "report2_" + "20" + year + month + day + ".csv");
                    // System.IO.File.Move(TransactReportImportPath + "report2_" + "20" + year + month + day + ".csv", TransactReportImportPath + "Processed\\" + "report2_" + "20" + year + month + day + ".csv");
                    System.IO.File.Move(@"\\\\192.168.241.252\\TransactReports\\Daily\\" + "report2_" + "20" + year + month + day + ".csv", @"\\\\192.168.241.252\\TransactReports\\Daily\\" + "Processed\\" + "report2_" + "20" + year + month + day + ".csv");

                    mailBody += "report2_" + "20" + year + month + day + ".csv DONE" + "\r\n";
                    sw.WriteLine("report2_" + "20" + year + month + day + ".csv DONE" + "\r\n");
                    exitFlag = true;

                    try { sw.Close(); }
                    catch { }

                    return;
                }
            }
            catch
            { try { sw.Close(); }
              catch { }
              return; }

            try
            {
                if (morning == true)
                {
                    DateTime dt1 = DateTime.Now;


                    string year1  = string.Format("{0:D2}", dt1.Year).Substring(2);
                    string month1 = string.Format("{0:D2}", dt1.Month);
                    string day1   = string.Format("{0:D2}", dt1.Day);

                    //System.IO.File.Copy(UnsettledReportImportPath + "unsettled_" + "20" + year1 + month1 + day1 + ".csv", OutputDirectory + "unsettled.csv", true);
                    System.IO.File.Copy(@"\\\\192.168.241.252\\TransactReports\\Unsettled\\" + "unsettled_" + "20" + year1 + month1 + day1 + ".csv", OutputDirectory + "unsettled.csv", true);

                    mailBody += "\r\nunsettled_" + "20" + year1 + month1 + day1 + ".csv FOUND.\r\n";
                    sw.WriteLine("\r\nunsettled_" + "20" + year1 + month1 + day1 + ".csv FOUND.\r\n");

                    string        pkgLocation;
                    Package       pkg;
                    DTSExecResult pkgResults;
                    Microsoft.SqlServer.Dts.Runtime.Application app;
                    MyEventListener eventListener = new MyEventListener();

                    app         = new Microsoft.SqlServer.Dts.Runtime.Application();
                    pkgLocation = @".\PackageUnsettled.dtsx";
                    pkg         = app.LoadPackage(pkgLocation, eventListener);
                    pkgResults  = pkg.Execute(null, null, eventListener, null, null);



                    SqlConnectionStringBuilder sqConTransactB = new SqlConnectionStringBuilder();
                    sqConTransactB.DataSource = @"10.7.46.2\sql2k5_dev"; //Production

                    sqConTransactB.IntegratedSecurity = true;
                    sqConTransactB.InitialCatalog     = "ZacReporting";
                    sqConTransactB.ConnectTimeout     = 0;

                    SqlConnection transactConn = new SqlConnection(sqConTransactB.ConnectionString);
                    transactConn.Open();


                    SqlCommand transactDel = new SqlCommand();
                    transactDel.Connection     = transactConn;
                    transactDel.CommandTimeout = 0;
                    transactDel.CommandText    = "delete from [ZacReporting].[dbo].[V_TransactUnsettledBatches]  where tid<'14000000' or tid>='90000000'";//donna 14102013 hellaspay unsettled should be processed

                    transactDel.ExecuteNonQuery();


                    SqlCommand transactDel1 = new SqlCommand();
                    transactDel1.Connection     = transactConn;
                    transactDel1.CommandTimeout = 0;
                    transactDel1.CommandText    = "delete from [ZacReporting].[dbo].[V_TransactUnsettledBatches]  where Bank='NET_ALPMOR'";

                    transactDel1.ExecuteNonQuery();

                    transactConn.Close();


                    mailBody += "unsettled_" + "20" + year1 + month1 + day1 + ".csv IMPORTED." + pkgResults.ToString() + "\r\n";

                    System.IO.File.Move(OutputDirectory + "unsettled.csv", OutputDirectory + "unsettled\\" + "unsettled_" + "20" + year1 + month1 + day1 + ".csv");

                    //                  System.IO.File.Move(UnsettledReportImportPath + "unsettled_" + "20" + year1 + month1 + day1 + ".csv", UnsettledReportImportPath + "Processed\\" + "report_" + "20" + year + month + day + ".csv");
                    System.IO.File.Move(@"\\\\192.168.241.252\\TransactReports\\Unsettled\\" + "unsettled_" + "20" + year1 + month1 + day1 + ".csv", @"\\\\192.168.241.252\\TransactReports\\Unsettled\\" + "Processed\\" + "report_" + "20" + year + month + day + ".csv");
                    mailBody += "unsettled_" + "20" + year1 + month1 + day1 + ".csv DONE" + "\r\n";
                    sw.WriteLine("unsettled_" + "20" + year1 + month1 + day1 + ".csv DONE" + "\r\n");



                    SqlConnectionStringBuilder sqConTransactC = new SqlConnectionStringBuilder();
                    sqConTransactC.DataSource = @"10.7.46.2\sql2k5_dev"; //Production

                    sqConTransactC.IntegratedSecurity = true;
                    sqConTransactC.InitialCatalog     = "ZacReporting";
                    sqConTransactC.ConnectTimeout     = 0;

                    SqlConnection transactConn1 = new SqlConnection(sqConTransactC.ConnectionString);
                    transactConn1.Open();

                    SqlCommand transactEmptyBanks = new SqlCommand();
                    transactEmptyBanks.Connection     = transactConn1;
                    transactEmptyBanks.CommandTimeout = 0;
                    transactEmptyBanks.CommandText    = "Delete from [abc096].[DEACTIVATED_BANKS]";
                    transactEmptyBanks.ExecuteNonQuery();

                    transactConn1.Close();

                    try
                    {
                        //System.IO.File.Copy(UnsettledReportImportPath + "unsettled_" + "20" + year1 + month1 + day1 + ".csv", OutputDirectory + "unsettled.csv", true);
                        System.IO.File.Copy(@"\\\\192.168.241.252\\TransactReports\\DeactivatedBanks\\" + "deact_banks" + year1 + month1 + day1 + ".csv", OutputDirectory + "deact_banks.csv", true);

                        mailBody += "\r\ndeact_banks" + year1 + month1 + day1 + ".csv FOUND.\r\n";
                        sw.WriteLine("\r\ndeact_banks" + year1 + month1 + day1 + ".csv FOUND.\r\n");

                        string        pkgLocation1;
                        Package       pkg1;
                        DTSExecResult pkgResults1;
                        Microsoft.SqlServer.Dts.Runtime.Application app1;
                        MyEventListener eventListener1 = new MyEventListener();

                        app1         = new Microsoft.SqlServer.Dts.Runtime.Application();
                        pkgLocation1 = @".\Package_deactbanks.dtsx";
                        pkg1         = app1.LoadPackage(pkgLocation1, eventListener1);
                        pkgResults1  = pkg1.Execute(null, null, eventListener1, null, null);


                        mailBody += "deact_banks" + year1 + month1 + day1 + ".csv IMPORTED." + pkgResults1.ToString() + "\r\n";

                        System.IO.File.Move(OutputDirectory + "deact_banks.csv", OutputDirectory + "DeactivatedBanks\\" + "deact_banks" + year1 + month1 + day1 + ".csv");

                        //                  System.IO.File.Move(UnsettledReportImportPath + "unsettled_" + "20" + year1 + month1 + day1 + ".csv", UnsettledReportImportPath + "Processed\\" + "report_" + "20" + year + month + day + ".csv");
                        System.IO.File.Move(@"\\\\192.168.241.252\\TransactReports\\DeactivatedBanks\\" + "deact_banks" + year1 + month1 + day1 + ".csv", @"\\\\192.168.241.252\\TransactReports\\DeactivatedBanks\\" + "Processed\\" + "deact_banks" + year1 + month1 + day1 + ".csv");
                        mailBody += "deact_banks" + year1 + month1 + day1 + ".csv DONE" + "\r\n";
                        sw.WriteLine("deact_banks" + year1 + month1 + day1 + ".csv DONE" + "\r\n");
                    }
                    catch
                    { }


                    SqlConnectionStringBuilder sqConTransactD = new SqlConnectionStringBuilder();
                    sqConTransactD.DataSource = @"10.7.46.2\sql2k5_dev"; //Production

                    sqConTransactD.IntegratedSecurity = true;
                    sqConTransactD.InitialCatalog     = "ZacReporting";
                    sqConTransactD.ConnectTimeout     = 0;

                    SqlConnection transactConn2 = new SqlConnection(sqConTransactD.ConnectionString);
                    transactConn2.Open();

                    SqlCommand transactEmptyBinRuling = new SqlCommand();
                    transactEmptyBinRuling.Connection     = transactConn2;
                    transactEmptyBinRuling.CommandTimeout = 0;
                    transactEmptyBinRuling.CommandText    = "Delete from [abc096].[FAILED_BINRULING]";
                    transactEmptyBinRuling.ExecuteNonQuery();

                    transactConn2.Close();

                    try
                    {
                        System.IO.File.Copy(@"\\\\192.168.241.252\\TransactReports\\Daily\\" + "report4_" + "20" + year + month + day + ".csv", OutputDirectory + "failedbinruling.csv", true);

                        mailBody += "report4_" + "20" + year + month + day + ".csv FOUND.\r\n\r\n";

                        sw.WriteLine("report4_" + "20" + year + month + day + ".csv FOUND.\r\n\r\n");


                        string        pkgLocation2;
                        Package       pkg2;
                        DTSExecResult pkgResults2;
                        Microsoft.SqlServer.Dts.Runtime.Application app2;
                        MyEventListener eventListener2 = new MyEventListener();

                        app2         = new Microsoft.SqlServer.Dts.Runtime.Application();
                        pkgLocation2 = @".\Package_failedbinruling.dtsx";
                        pkg2         = app2.LoadPackage(pkgLocation2, eventListener2);
                        pkgResults2  = pkg2.Execute(null, null, eventListener2, null, null);


                        mailBody += "report4_" + "20" + year + month + day + ".csv IMPORTED." + pkgResults2.ToString() + "\r\n";

                        System.IO.File.Move(OutputDirectory + "failedbinruling.csv", OutputDirectory + "Done\\" + "report4_" + "20" + year + month + day + ".csv");
                        System.IO.File.Move(@"\\\\192.168.241.252\\TransactReports\\Daily\\" + "report4_" + "20" + year + month + day + ".csv", @"\\\\192.168.241.252\\TransactReports\\Daily\\" + "Processed\\" + "report4_" + "20" + year + month + day + ".csv");

                        mailBody += "report4_" + "20" + year + month + day + ".csv DONE" + "\r\n";
                        sw.WriteLine("report4_" + "20" + year + month + day + ".csv DONE" + "\r\n");
                    }
                    catch {}

                    exitFlag = true;

                    try { sw.Close(); }
                    catch { }
                    return;
                }
                else /*noon*/
                {
                }
            }
            catch
            {
            }

            try { sw.Close(); }
            catch { }
        }
コード例 #23
0
        public ActionResult DownloadBatchOverviewReport(String _TemplateKey, String _1stBatchKey, String _2ndBatchKey, String _BatchTypeKey, String _MaterialKey, String StartTime, String EndTime, bool CreateLogFile = false)
        {
            const string FILENAME_PREFIX = "BatchOverview_";
            //const string FILENAME_PREFIX = "BatchOverview";
            const string FILENAME_TYPE       = "xlsx";
            const string EXCEL_TEMPLATE_NAME = "ExcelReport_BatchOverview_Template.xlsx";
            const string SSIS_PACKAGE        = "ExcelReport_BatchOverview.dtsx";
            const string FOLDER_BASE_SOURCE  = "Areas\\PlantiT.Web.HeinekenMassafra.MES\\Excel";
            const string FOLDER_BIN          = "bin";
            const string FOLDER_TEMPLATE     = "template";
            const string FOLDER_BASE_OUTPUT  = "Areas\\PlantiT.Web.HeinekenMassafra.MES\\Excel\\output";
            //const string FOLDER_BASE_OUTPUT = "Areas\\PlantiT.Web.HeinekenMassafra.MES\\Excel\\output\\";
            const string LOG_FILE_NAME = "DownloadBatchOverview_Log.txt";


            const int WAITTIME_IN_MS    = 1000;
            const int MAXWAITTIME_IN_MS = 30000;

            String sLocation = Assembly.GetExecutingAssembly().Location; // Get current directory

            Logger logger = null;

            long     nTemplateKey  = 0;
            long     n1stBatchKey  = 0;
            long     n2ndBatchKey  = 0;
            long     nBatchTypeKey = 0;
            long     nMaterialKey  = 0;
            DateTime dtStartTime   = DateTime.MaxValue;
            DateTime dtEndTime     = DateTime.MinValue;

            string sSourcePath          = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FOLDER_BASE_SOURCE);
            string sDestinationPath     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FOLDER_BASE_OUTPUT);
            string sDestinationFilePath = String.Empty;
            string sFileName            = String.Empty;

            DateTime dtCheckTime = DateTime.Now;

            // Log generieren
            if (CreateLogFile)
            {
                logger = new Logger(Path.Combine(sDestinationPath, LOG_FILE_NAME), true);
            }


            // Parameter ermitteln
            // TemplateKey
            try
            {
                nTemplateKey = Convert.ToInt64(_TemplateKey);
            }
            catch { }

            // 1stBatchKey
            try
            {
                n1stBatchKey = Convert.ToInt64(_1stBatchKey);
            }
            catch { }

            // 2ndBatchKey
            try
            {
                n2ndBatchKey = Convert.ToInt64(_2ndBatchKey);
            }
            catch { }

            // BatchTypeKey
            try
            {
                nBatchTypeKey = Convert.ToInt64(_BatchTypeKey);
            }
            catch { }

            // MaterialKey
            try
            {
                nMaterialKey = Convert.ToInt64(_MaterialKey);
            }
            catch { }

            // StartTime
            try
            {
                dtStartTime = Convert.ToDateTime(StartTime);
            }
            catch { }

            // EndTime
            try
            {
                dtEndTime = Convert.ToDateTime(EndTime);
            }
            catch { }



            // Nach Datei suchen
            sFileName = FILENAME_PREFIX + DateTime.Now.ToString().Replace(":", "").Replace('/', '.').Replace('-', '.');
            //sFileName = FILENAME_PREFIX;

            Microsoft.SqlServer.Dts.Runtime.Application app     = new Microsoft.SqlServer.Dts.Runtime.Application();
            Microsoft.SqlServer.Dts.Runtime.Package     package = null;
            MyEventListener eventListener = new MyEventListener();

            //Load the SSIS Package which will be executed
            app.PackagePassword = "******";

            String sPackageFilePath = Path.Combine(sSourcePath, FOLDER_BIN, SSIS_PACKAGE);

            // Execute
            try
            {
                // Load package
                package = app.LoadPackage(sPackageFilePath, eventListener);


                // Set values
                Variables vars = package.Variables;

                vars["User::InputTemplateKey"].Value  = nTemplateKey;
                vars["User::Input1stBatchKey"].Value  = n1stBatchKey;
                vars["User::Input2ndBatchKey"].Value  = n2ndBatchKey;
                vars["User::InputBatchTypeKey"].Value = nBatchTypeKey;
                vars["User::InputMaterialKey"].Value  = nMaterialKey;
                vars["User::InputStartTime"].Value    = dtStartTime;
                vars["User::InputEndTime"].Value      = dtEndTime;



                vars["User::InputDestinationFile"].Value  = sFileName + "." + FILENAME_TYPE;
                vars["User::InputDestinationPath"].Value  = sDestinationPath;
                vars["User::InputTemplateFilePath"].Value = Path.Combine(sSourcePath, FOLDER_TEMPLATE, EXCEL_TEMPLATE_NAME);
                vars["User::InputCreateLogFile"].Value    = CreateLogFile;
                vars["User::InputLogFilePath"].Value      = (logger != null) ? logger.FilePath : String.Empty;

                // Log erzeugen
                if (logger != null)
                {
                    logger.Log("InputTemplateKey", vars["User::InputTemplateKey"].Value.ToString());
                    logger.Log("Input1stBatchKey", vars["User::Input1stBatchKey"].Value.ToString());
                    logger.Log("Input2ndBatchKey", vars["User::Input2ndBatchKey"].Value.ToString());
                    logger.Log("InputBatchTypeKey", vars["User::InputBatchTypeKey"].Value.ToString());
                    logger.Log("InputMaterialKey", vars["User::InputMaterialKey"].Value.ToString());
                    logger.Log("InputStartTime", vars["User::InputStartTime"].Value.ToString());
                    logger.Log("InputEndTime", vars["User::InputEndTime"].Value.ToString());

                    logger.Log("InputDestinationFile", vars["User::InputDestinationFile"].Value.ToString());
                    logger.Log("InputDestinationPath", vars["User::InputDestinationPath"].Value.ToString());
                    logger.Log("InputTemplateFilePath", vars["User::InputTemplateFilePath"].Value.ToString());
                }


                vars["InputToOverwrite"].Value = true;

                DTSExecResult results = package.Execute(null, null, eventListener, null, null);
            }
            catch (Exception ex)
            {
                if (logger != null)
                {
                    logger.Log("Error", String.Format("Error: {0} // Innermessage: {1}", ex.Message, (ex.InnerException != null) ? ex.InnerException.Message : String.Empty));
                }

                return(new HttpNotFoundResult(String.Format("Error: {0} // Innermessage: {1}", ex.Message, (ex.InnerException != null) ? ex.InnerException.Message : String.Empty)));
            }

            // zyklisch prüfen ob Datei vorhanden ist, maximal  MAXWAITTIME_IN_MS
            for (int i = 0; i < MAXWAITTIME_IN_MS; i += WAITTIME_IN_MS)
            {
                if (package.Errors.Count > 0)
                {
                    foreach (var item in package.Errors)
                    {
                        if (logger != null)
                        {
                            logger.Log("Error", item.Description);
                        }
                    }
                    break;
                }

                // erstmal eine Sekunde zeit geben, zyklisch prüfen
                System.Threading.Thread.Sleep(WAITTIME_IN_MS);

                // alle Dateien des Pfades holen die dem Suchmuster entsprechen
                DirectoryInfo dirInfo     = new DirectoryInfo(Path.Combine(sDestinationPath));
                var           filesInPath = dirInfo.EnumerateFiles(String.Format("{0}*.{1}", sFileName, FILENAME_TYPE));

                var file = filesInPath.Where(x => x.Name.Contains(sFileName)).OrderByDescending(x => x.LastWriteTime).FirstOrDefault();

                // nur welche die eben erstellt wurde
                if (file == null)
                {
                    continue;
                }

                // Falls eben erstellt...
                if (file.LastWriteTime >= dtCheckTime)
                {
                    // gefunden, Abbruch
                    sFileName = file.Name;
                    break;
                }
            }

            // Pfad mit Datei erzeugen
            sDestinationFilePath = Path.Combine(sDestinationPath, sFileName);

            // Datei vorhanden?
            if (!System.IO.File.Exists(sDestinationFilePath))
            {
                return(new HttpNotFoundResult("Excel file could not created!"));
            }

            // Create data return stream
            byte[] fileData    = System.IO.File.ReadAllBytes(sDestinationFilePath);
            string contentType = System.Web.MimeMapping.GetMimeMapping(sDestinationFilePath);

            // Datei entfernen
            System.IO.File.Delete(sDestinationFilePath);

            var cd = new System.Net.Mime.ContentDisposition()
            {
                // for example foo.bak
                FileName = sFileName,

                // always prompt the user for downloading, set to true if you want
                // the browser to try to show the file inline
                Inline = false,
            };

            Response.AppendHeader("Content-Disposition", cd.ToString());
            return(File(fileData, contentType));
        }
コード例 #24
0
        static void Main(string[] args)
        {
            string date        = "";//Fix Aegean report 20170206
            bool   selectedday = false;

            if (args.Length == 1)      //Fix Aegean report 20170206
            {
                date        = args[0]; //ex 2017-02-06
                selectedday = true;
            }

            try
            {
                System.IO.File.Move("D:\\Reporting\\Import\\report.csv", "D:\\Reporting\\transactreport.csv");
            }
            catch
            {
                Console.WriteLine("D:\\Reporting\\Import\\report.csv does not exist.\r\n");
            }

            SqlConnectionStringBuilder sqConTransactB = new SqlConnectionStringBuilder();

            sqConTransactB.DataSource = @"grat1-dev-ap2t"; //Production

            sqConTransactB.IntegratedSecurity = true;
            sqConTransactB.InitialCatalog     = "ZacReporting";
            sqConTransactB.ConnectTimeout     = 0;

            SqlConnection transactConn = new SqlConnection(sqConTransactB.ConnectionString);

            transactConn.Open();

            SqlCommand transactEmpty = new SqlCommand();

            transactEmpty.Connection     = transactConn;
            transactEmpty.CommandTimeout = 0;
            transactEmpty.CommandText    = "Delete from [abc096].[IMP_TRANSACT_D]";
            transactEmpty.ExecuteNonQuery();

            transactConn.Close();



            string        pkgLocation;
            Package       pkg;
            DTSExecResult pkgResults;

            Microsoft.SqlServer.Dts.Runtime.Application app;
            MyEventListener eventListener = new MyEventListener();

            app         = new Microsoft.SqlServer.Dts.Runtime.Application();
            pkgLocation = @"D:\Reporting\DTSX Packages\ImportDailyDTSx -manual\Integration Services Project1\Package.dtsx";

            //pkgLocation = @".\ImportDaily.dtsx";
            //pkgLocation = @".\Package.dtsx";
            pkg        = app.LoadPackage(pkgLocation, eventListener);
            pkgResults = pkg.Execute(null, null, eventListener, null, null);



            SqlConnectionStringBuilder sqConTransactB1 = new SqlConnectionStringBuilder();

            sqConTransactB1.DataSource = @"grat1-dev-ap2t"; //Production

            sqConTransactB1.IntegratedSecurity = true;
            sqConTransactB1.InitialCatalog     = "ZacReporting";
            sqConTransactB1.ConnectTimeout     = 0;

            SqlConnection transactConn1 = new SqlConnection(sqConTransactB1.ConnectionString);

            transactConn1.Open();

            SqlCommand transactUpd = new SqlCommand();

            transactUpd.Connection     = transactConn1;
            transactUpd.CommandTimeout = 0;
            transactUpd.CommandText    = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] " +
                                         "set amount =0 where msgid='0200'  " +
                                         "and REVERSED='F' " +
                                         "and exists " +
                                         "(select * from [ZacReporting].[abc096].[IMP_TRANSACT_D]  B where b.msgid='0400' and amount=b.amount and " +
                                         "mask=b.mask and mid=b.mid and tid=b.tid and DESTCOMID=B.DESTCOMID AND B.REVERSED='A') ";
            transactUpd.ExecuteNonQuery();


            SqlCommand transactDel = new SqlCommand();

            transactDel.Connection     = transactConn1;
            transactDel.CommandTimeout = 0;
            transactDel.CommandText    = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D]  where msgid='0400'  " +
                                         "and exists " +
                                         "(select * from [ZacReporting].[abc096].[IMP_TRANSACT_D]  B where b.msgid<>'0400' " +
                                         "and mask=b.mask and mid=b.mid and tid=b.tid and DESTCOMID=B.DESTCOMID AND B.REVERSED='F') ";

            transactDel.ExecuteNonQuery();



            Console.WriteLine("Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n");


            transactDel.CommandText = "UPDATE [ZacReporting].[abc096].[IMP_TRANSACT_D] SET [DESTCOMID]='NET_ALPHA' where [DESTCOMID]='NET_CLBICALPHA'";
            transactDel.ExecuteNonQuery();

            transactDel.CommandText = "UPDATE [ZacReporting].[abc096].[IMP_TRANSACT_D] SET [DESTCOMID]='NET_EBNK' where [DESTCOMID]='NET_CLBICEBNK'";
            transactDel.ExecuteNonQuery();

            Console.WriteLine("Update BIC ports.\r\n");


            transactDel.CommandText = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D] where msgid='0100' and proccode ='080000'";
            transactDel.ExecuteNonQuery();

            Console.WriteLine("Delete inquiries.\r\n");

            transactDel.CommandText = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D] where msgid='0200' and proccode ='890000'";
            transactDel.ExecuteNonQuery();

            Console.WriteLine("Delete DCC inquiries.\r\n");


            transactDel.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set msgid='0200',proccode ='000001' " +
                                      "where (destcomid='NET_NTBNLTY' or destcomid='NET_PBGLTY') and msgid='0100' and proccode ='000000'";
            transactDel.ExecuteNonQuery();

            transactDel.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set msgid='0200',proccode ='020001' " +
                                      "where (destcomid='NET_NTBNLTY' or destcomid='NET_PBGLTY') and msgid='0100' and proccode ='020000'";
            transactDel.ExecuteNonQuery();

            Console.WriteLine("Update Go4More and Yellow.\r\n");



            SqlCommand transactDelnul = new SqlCommand();

            transactDelnul.Connection     = transactConn1;
            transactDelnul.CommandTimeout = 0;
            transactDelnul.CommandText    = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D]  where mask is null or mask='' ";

            transactDelnul.ExecuteNonQuery();

            transactDelnul.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D]  set mask='000000' where productid is null ";
            transactDelnul.ExecuteNonQuery();

            Console.WriteLine("delete null pan \r\n");

            if (selectedday == true)
            {
                SqlCommand UpdateUPD1 = new SqlCommand();    //Fix Aegean report 20170206
                UpdateUPD1.Connection     = transactConn1;
                UpdateUPD1.CommandTimeout = 0;
                UpdateUPD1.CommandText    = "delete FROM [ZacReporting].[abc096].[IMP_TRANSACT_D]where mid='000000120004600' and bdtstamp>'" + date + " 23:59:59.000'";
                UpdateUPD1.ExecuteNonQuery();
                Console.WriteLine("remove AEGEAN current day \r\n");
            }

            // ln 20170922      ----------    start    ---------
            SqlCommand UpdateUPD3 = new SqlCommand();

            UpdateUPD3.Connection     = transactConn1;
            UpdateUPD3.CommandTimeout = 0;
            UpdateUPD3.CommandText    = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set productid = 0 ";
            UpdateUPD3.ExecuteNonQuery();
            Console.WriteLine("Update productid = 0 \r\n");
            // ln 20170922      ----------    end    ---------


            SqlCommand transactproduct = new SqlCommand();

            transactproduct.Connection     = transactConn1;
            transactproduct.CommandTimeout = 0;

            // ln 20170922      ----------    start    ---------
            transactproduct.CommandText = "update zacreporting.[abc096].[imp_TRansact_D] " +
                                          "set productid = ( select   top 1 b.id " +
                                          "from  zacreporting.abc096.Products b   " +
                                          "where substring(mask,1,6) = b.bin ); ";
            // ln 20170922      ----------    end    ---------

            //     LN 20170922 Commented     ----------    start    ---------
            //transactproduct.CommandText = "update [abc096].[imp_TRansact_D] " +
            //    " set productid= " +
            //    " case " +
            //    " when " +
            //    " exists " +
            //       " (select * from abc096.products b " +
            //        " where " +
            //        " (substring(mask,1,6)=cast((substring(b.bin,1,6 )) as dec(22,0)) or" +
            //        " substring(mask,1,6)=cast((substring(b.binu,1,6)) as dec(22,0)) or" +
            //        " substring(mask,1,6) between cast((substring(b.bin,1,6 )) as dec(22,0)) and" +
            //             " cast((substring(b.binu,1,6)) as dec(22,0)) ) )" +
            //    " then " +
            //        "(select min(b.id) from abc096.products b" +
            //        " where " +
            //        " productid=cast((substring(b.bin,1,6 )) as dec(22,0)) or" +
            //        " productid=cast((substring(b.binu,1,6)) as dec(22,0)) or" +
            //        " productid between cast((substring(b.bin,1,6 )) as dec(22,0)) and" +
            //             " cast((substring(b.binu,1,6)) as dec(22,0)) )" +
            //        " when " +
            //        " exists " +
            //            " (select * from abc096.products b" +
            //            " where" +
            //            " (substring(mask,1,5)=cast((substring(b.bin,1,5 )) as dec(22,0)) or" +
            //            " substring(mask,1,5)=cast((substring(b.binu,1,5)) as dec(22,0)) or" +
            //            " substring(mask,1,5) between cast((substring(b.bin,1,5)) as dec(22,0)) and" +
            //                " cast((substring(b.binu,1,5)) as dec(22,0))) and len(b.bin)=5)" +
            //        " then " +
            //            " (select min(b.id) from abc096.products b" +
            //            " where " +
            //            " (substring(mask,1,5)=cast((substring(b.bin,1,5 )) as dec(22,0)) or" +
            //            " substring(mask,1,5)=cast((substring(b.binu,1,5)) as dec(22,0)) or" +
            //            " substring(mask,1,5) between cast((substring(b.bin,1,5)) as dec(22,0)) and" +
            //                 " cast((substring(b.binu,1,5)) as dec(22,0))) and len(b.bin)=5)" +
            //            " when " +
            //            " exists " +
            //                " (select * from abc096.products b" +
            //                " where" +
            //                " (substring(mask,1,4)=cast((substring(b.bin,1,4 )) as dec(22,0)) or" +
            //                " substring(mask,1,4)=cast((substring(b.binu,1,4)) as dec(22,0)) or" +
            //                " substring(mask,1,4) between cast((substring(b.bin,1,4)) as dec(22,0)) and" +
            //                    " cast((substring(b.binu,1,4)) as dec(22,0))) and len(b.bin)=4)" +
            //            " then " +
            //                " (select min(b.id) from abc096.products b" +
            //                " where" +
            //                " (substring(mask,1,4)=cast((substring(b.bin,1,4 )) as dec(22,0)) or" +
            //                " substring(mask,1,4)=cast((substring(b.binu,1,4)) as dec(22,0)) or" +
            //                " substring(mask,1,4) between cast((substring(b.bin,1,4)) as dec(22,0)) and" +
            //                    " cast((substring(b.binu,1,4)) as dec(22,0))) and len(b.bin)=4)" +
            //                " when" +
            //                " exists" +
            //                    " (select * from abc096.products b" +
            //                    " where" +
            //                    " (substring(mask,1,3)=cast((substring(b.bin,1,3 )) as dec(22,0)) or" +
            //                    " substring(mask,1,3)=cast((substring(b.binu,1,3)) as dec(22,0)) or" +
            //                    " substring(mask,1,3) between cast((substring(b.bin,1,3)) as dec(22,0)) and" +
            //                        " cast((substring(b.binu,1,3)) as dec(22,0))) and len(b.bin)=3)" +
            //                " then" +
            //                    " (select min(b.id) from abc096.products b" +
            //                    " where" +
            //                    " (substring(mask,1,3)=cast((substring(b.bin,1,3 )) as dec(22,0)) or" +
            //                    " substring(mask,1,3)=cast((substring(b.binu,1,3)) as dec(22,0)) or" +
            //                    " substring(mask,1,3) between cast((substring(b.bin,1,3)) as dec(22,0)) and" +
            //                        " cast((substring(b.binu,1,3)) as dec(22,0))) and len(b.bin)=3)" +
            //                    " when" +
            //                    " exists" +
            //                         " (select * from abc096.products b" +
            //                         " where" +
            //                         " (substring(mask,1,2)=cast((substring(b.bin,1,2 )) as dec(22,0)) or" +
            //                         " substring(mask,1,2)=cast((substring(b.binu,1,2)) as dec(22,0)) or" +
            //                         " substring(mask,1,2) between cast((substring(b.bin,1,2)) as dec(22,0)) and" +
            //                            " cast((substring(b.binu,1,2)) as dec(22,0))) and len(b.bin)=2)" +
            //                    " then" +
            //                         " (select min(b.id) from abc096.products b" +
            //                         " where" +
            //                         " (substring(mask,1,2)=cast((substring(b.bin,1,2 )) as dec(22,0)) or" +
            //                         " substring(mask,1,2)=cast((substring(b.binu,1,2)) as dec(22,0)) or" +
            //                         " substring(mask,1,2) between cast((substring(b.bin,1,2)) as dec(22,0)) and" +
            //                             " cast((substring(b.binu,1,2)) as dec(22,0))) and len(b.bin)=2)" +
            //                         " when" +
            //                         " exists" +
            //                              " (select * from abc096.products b" +
            //                              " where" +
            //                              " (substring(mask,1,1)=cast((substring(b.bin,1,1 )) as dec(22,0)) or" +
            //                              " substring(mask,1,1)=cast((substring(b.binu,1,1)) as dec(22,0)) or" +
            //                              " substring(mask,1,1) between cast((substring(b.bin,1,1)) as dec(22,0)) and" +
            //                                   " cast((substring(b.binu,1,1)) as dec(22,0))) and len(b.bin)=1)" +
            //                         " then " +
            //                              " (select min(b.id) from abc096.products b" +
            //                              " where" +
            //                              " (substring(mask,1,1)=cast((substring(b.bin,1,1 )) as dec(22,0)) or" +
            //                              " substring(mask,1,1)=cast((substring(b.binu,1,1)) as dec(22,0)) or" +
            //                              " substring(mask,1,1) between cast((substring(b.bin,1,1)) as dec(22,0)) and" +
            //                              " cast((substring(b.binu,1,1)) as dec(22,0))) and len(b.bin)=1)" +
            //         " end";
            transactproduct.ExecuteNonQuery();

            // ln 20170922      ----------    start    ---------
            SqlCommand UpdZeroPrdctID = new SqlCommand();

            UpdZeroPrdctID.Connection     = transactConn1;
            UpdZeroPrdctID.CommandTimeout = 0;
            UpdZeroPrdctID.CommandText    = "update zacreporting.[abc096].[imp_TRansact_D] " +
                                            "set productid =  " +
                                            "case " +
                                            "when substring(mask,1,2) >= '40' and substring(mask,1,2) <= '49' then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c " +
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) >= '60' and substring(mask,1,2) <= '69' then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c " +
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '23'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '24'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '25'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '26'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '30'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            " group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '34'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '35'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '36'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '37'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '38'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '50'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '51'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '52'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '53'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '54'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '55'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '56'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '57'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "when substring(mask,1,2) = '58'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                            "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                            "group by b.id,b.bin) " +
                                            "end " +
                                            "where productid = '0' ";
            UpdZeroPrdctID.ExecuteNonQuery();
            Console.WriteLine("Update productid for '0' \r\n");
            // ln 20170922      ----------    end    ---------

            transactConn1.Close();
            Console.WriteLine("Fixed product in IMP_TRANSACT_D. \r\n");
            System.IO.File.Move("D:\\Reporting\\transactreport.csv", "D:\\Reporting\\Import\\report.csv");
        }
コード例 #25
0
ファイル: Program.cs プロジェクト: elrik428/atom_Warehouse
        private static void Import_transactreport(bool onboard, bool casino)
        {
            SqlConnectionStringBuilder sqCon = new SqlConnectionStringBuilder();

            sqCon.DataSource = @"grat1-dev-ap2t"; //Production

            sqCon.IntegratedSecurity = true;
            sqCon.InitialCatalog     = "ZacReporting";
            sqCon.ConnectTimeout     = 0;

            SqlConnection Conn = new SqlConnection(sqCon.ConnectionString);


            try
            {   /*both morning and noon*/
                string        pkgLocation;
                Package       pkg;
                DTSExecResult pkgResults;
                Microsoft.SqlServer.Dts.Runtime.Application app;
                MyEventListener eventListener = new MyEventListener();

                app         = new Microsoft.SqlServer.Dts.Runtime.Application();
                pkgLocation = @"D:\Reporting\\DTSX Packages\\ImportDailyDTSx\\Integration Services Project1\\bin\\Package.dtsx";
                pkg         = app.LoadPackage(pkgLocation, eventListener);
                pkgResults  = pkg.Execute(null, null, eventListener, null, null);

                mailBody += "transactreport.csv IMPORTED." + pkgResults.ToString() + "\r\n\r\n";
                // sw.WriteLine("transactreport.csv IMPORTED." + pkgResults.ToString() + "\r\n");

                if (onboard == true)
                {
                    try //20170609 AEGEAN
                    {
                        Conn.Open();

                        SqlCommand transactUpd = new SqlCommand();
                        transactUpd.Connection     = Conn;
                        transactUpd.CommandTimeout = 0;
                        transactUpd.CommandText    = "delete FROM [ZacReporting].[abc096].[IMP_TRANSACT_D] where mid='000000120004600'";
                        transactUpd.ExecuteNonQuery();

                        Conn.Close();

                        app         = new Microsoft.SqlServer.Dts.Runtime.Application();
                        pkgLocation = @"D:\\Reporting\\DTSX Packages\\ImportOnboard\\Integration Services Project1\\bin\\Package.dtsx";
                        pkg         = app.LoadPackage(pkgLocation, eventListener);
                        pkgResults  = pkg.Execute(null, null, eventListener, null, null);
                        mailBody   += "onboard transactreport.csv IMPORTED." + pkgResults.ToString() + "\r\n\r\n";
                    }
                    catch
                    {
                        mailBody += "onboard_transactreport.csv PROBLEM!!!\r\n";
                    }
                }

                if (casino == true)
                {
                    try //20170831 casino
                    {
                        Conn.Open();

                        SqlCommand transactUpd = new SqlCommand();
                        transactUpd.Connection     = Conn;
                        transactUpd.CommandTimeout = 0;
                        transactUpd.CommandText    = "delete FROM [ZacReporting].[abc096].[IMP_TRANSACT_D] where mid='000000120005300'";
                        transactUpd.ExecuteNonQuery();

                        Conn.Close();

                        app         = new Microsoft.SqlServer.Dts.Runtime.Application();
                        pkgLocation = @"D:\\Reporting\\DTSX Packages\\ImportCasino\\Integration Services Project1\\bin\\Package.dtsx";
                        pkg         = app.LoadPackage(pkgLocation, eventListener);
                        pkgResults  = pkg.Execute(null, null, eventListener, null, null);
                        mailBody   += "casino transactreport.csv IMPORTED." + pkgResults.ToString() + "\r\n\r\n";
                    }
                    catch
                    {
                        mailBody += "casino_transactreport.csv PROBLEM!!!\r\n";
                    }
                }

                try
                {
                    /*both morning and noon*/


                    Conn.Open();

                    SqlCommand transactUpd = new SqlCommand();
                    transactUpd.Connection     = Conn;
                    transactUpd.CommandTimeout = 0;
                    transactUpd.CommandText    = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] " +
                                                 "set amount =0 where msgid='0200'  " +
                                                 "and REVERSED='F' " +
                                                 "and exists " +
                                                 "(select * from [ZacReporting].[abc096].[IMP_TRANSACT_D]  B where b.msgid='0400' and amount=b.amount and " +
                                                 "mask=b.mask and mid=b.mid and tid=b.tid and DESTCOMID=B.DESTCOMID AND B.REVERSED='A') ";
                    transactUpd.ExecuteNonQuery();


                    SqlCommand transactDel = new SqlCommand();
                    transactDel.Connection     = Conn;
                    transactDel.CommandTimeout = 0;
                    transactDel.CommandText    = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D]  where msgid='0400'  " +
                                                 "and exists " +
                                                 "(select * from [ZacReporting].[abc096].[IMP_TRANSACT_D]  B where b.msgid<>'0400' " +
                                                 "and mask=b.mask and mid=b.mid and tid=b.tid and DESTCOMID=B.DESTCOMID AND B.REVERSED='F') ";

                    transactDel.ExecuteNonQuery();

                    mailBody += "Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n";
                    Console.WriteLine("Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n");
                    // sw.WriteLine("Updated reversed and deleted reversals from IMP_TRANSACT_D. \r\n");


                    transactDel.CommandText = "UPDATE [ZacReporting].[abc096].[IMP_TRANSACT_D] SET [DESTCOMID]='NET_ALPHA' where [DESTCOMID]='NET_CLBICALPHA' or [DESTCOMID]='NET_BICALPHA'";
                    transactDel.ExecuteNonQuery();

                    transactDel.CommandText = "UPDATE [ZacReporting].[abc096].[IMP_TRANSACT_D] SET [DESTCOMID]='NET_EBNK' where [DESTCOMID]='NET_CLBICEBNK'";
                    transactDel.ExecuteNonQuery();

                    Console.WriteLine("Update BIC ports.\r\n");


                    transactDel.CommandText = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D] where msgid='0100' and proccode ='080000'";
                    transactDel.ExecuteNonQuery();

                    Console.WriteLine("Delete inquiries.\r\n");

                    transactDel.CommandText = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D] where msgid='0200' and proccode ='890000'";
                    transactDel.ExecuteNonQuery();

                    Console.WriteLine("Delete DCC inquiries.\r\n");

                    transactDel.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set msgid='0200',proccode ='000001' " +
                                              "where (destcomid='NET_NTBNLTY' or destcomid='NET_PBGLTY') and msgid='0100' and proccode ='000000'";
                    transactDel.ExecuteNonQuery();

                    transactDel.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set msgid='0200',proccode ='020001' " +
                                              "where (destcomid='NET_NTBNLTY' or destcomid='NET_PBGLTY') and msgid='0100' and proccode ='020000'";
                    transactDel.ExecuteNonQuery();

                    Console.WriteLine("Update Go4More and Yellow.\r\n");

                    SqlCommand transactDelnul = new SqlCommand();
                    transactDelnul.Connection     = Conn;
                    transactDelnul.CommandTimeout = 0;
                    transactDelnul.CommandText    = "delete from [ZacReporting].[abc096].[IMP_TRANSACT_D]  where mask is null or mask='' ";

                    transactDelnul.ExecuteNonQuery();

                    transactDelnul.CommandText = "update [ZacReporting].[abc096].[IMP_TRANSACT_D]  set mask='000000' where productid is null ";

                    transactDelnul.ExecuteNonQuery();

                    Console.WriteLine("delete null pan \r\n");

                    // ln 20170922      ----------    start    ---------
                    SqlCommand UpdatePrdctID = new SqlCommand();
                    UpdatePrdctID.Connection     = Conn;
                    UpdatePrdctID.CommandTimeout = 0;
                    UpdatePrdctID.CommandText    = "update [ZacReporting].[abc096].[IMP_TRANSACT_D] set productid = 0 ";
                    UpdatePrdctID.ExecuteNonQuery();
                    Console.WriteLine("Update productid = 0 \r\n");
                    // ln 20170922      ----------     end     ---------

                    SqlCommand transactproduct = new SqlCommand();
                    transactproduct.Connection     = Conn;
                    transactproduct.CommandTimeout = 0;

                    // ln 20170922      ----------    start    ---------
                    transactproduct.CommandText = "update zacreporting.[abc096].[imp_TRansact_D] " +
                                                  "set productid = ( select   top 1 b.id " +
                                                  "from  zacreporting.abc096.Products b   " +
                                                  "where substring(mask,1,6) = b.bin ); ";

                    // ln 20170922      ----------     end     ---------

                    //     LN 20170922 Commented     ----------    start    ---------
                    //transactproduct.CommandText = "update [abc096].[imp_TRansact_D] " +
                    //    " set productid= " +
                    //    " case " +
                    //    " when " +
                    //    " exists " +
                    //       " (select * from abc096.products b " +
                    //        " where " +
                    //        " (substring(mask,1,6)=cast((substring(b.bin,1,6 )) as dec(22,0)) or" +
                    //        " substring(mask,1,6)=cast((substring(b.binu,1,6)) as dec(22,0)) or" +
                    //        " substring(mask,1,6) between cast((substring(b.bin,1,6 )) as dec(22,0)) and" +
                    //             " cast((substring(b.binu,1,6)) as dec(22,0)) ) )" +
                    //    " then " +
                    //        "(select min(b.id) from abc096.products b" +
                    //        " where " +
                    //        " substring(mask,1,6)=cast((substring(b.bin,1,6 )) as dec(22,0)) or" +
                    //        " substring(mask,1,6)=cast((substring(b.binu,1,6)) as dec(22,0)) or" +
                    //        " substring(mask,1,6) between cast((substring(b.bin,1,6 )) as dec(22,0)) and" +
                    //             " cast((substring(b.binu,1,6)) as dec(22,0)) )" +
                    //        " when " +
                    //        " exists " +
                    //            " (select * from abc096.products b" +
                    //            " where" +
                    //            " (substring(mask,1,5)=cast((substring(b.bin,1,5 )) as dec(22,0)) or" +
                    //            " substring(mask,1,5)=cast((substring(b.binu,1,5)) as dec(22,0)) or" +
                    //            " substring(mask,1,5) between cast((substring(b.bin,1,5)) as dec(22,0)) and" +
                    //                " cast((substring(b.binu,1,5)) as dec(22,0))) and len(b.bin)=5)" +
                    //        " then " +
                    //            " (select min(b.id) from abc096.products b" +
                    //            " where " +
                    //            " (substring(mask,1,5)=cast((substring(b.bin,1,5 )) as dec(22,0)) or" +
                    //            " substring(mask,1,5)=cast((substring(b.binu,1,5)) as dec(22,0)) or" +
                    //            " substring(mask,1,5) between cast((substring(b.bin,1,5)) as dec(22,0)) and" +
                    //                 " cast((substring(b.binu,1,5)) as dec(22,0))) and len(b.bin)=5)" +
                    //            " when " +
                    //            " exists " +
                    //                " (select * from abc096.products b" +
                    //                " where" +
                    //                " (substring(mask,1,4)=cast((substring(b.bin,1,4 )) as dec(22,0)) or" +
                    //                " substring(mask,1,4)=cast((substring(b.binu,1,4)) as dec(22,0)) or" +
                    //                " substring(mask,1,4) between cast((substring(b.bin,1,4)) as dec(22,0)) and" +
                    //                    " cast((substring(b.binu,1,4)) as dec(22,0))) and len(b.bin)=4)" +
                    //            " then " +
                    //                " (select min(b.id) from abc096.products b" +
                    //                " where" +
                    //                " (substring(mask,1,4)=cast((substring(b.bin,1,4 )) as dec(22,0)) or" +
                    //                " substring(mask,1,4)=cast((substring(b.binu,1,4)) as dec(22,0)) or" +
                    //                " substring(mask,1,4) between cast((substring(b.bin,1,4)) as dec(22,0)) and" +
                    //                    " cast((substring(b.binu,1,4)) as dec(22,0))) and len(b.bin)=4)" +
                    //                " when" +
                    //                " exists" +
                    //                    " (select * from abc096.products b" +
                    //                    " where" +
                    //                    " (substring(mask,1,3)=cast((substring(b.bin,1,3 )) as dec(22,0)) or" +
                    //                    " substring(mask,1,3)=cast((substring(b.binu,1,3)) as dec(22,0)) or" +
                    //                    " substring(mask,1,3) between cast((substring(b.bin,1,3)) as dec(22,0)) and" +
                    //                        " cast((substring(b.binu,1,3)) as dec(22,0))) and len(b.bin)=3)" +
                    //                " then" +
                    //                    " (select min(b.id) from abc096.products b" +
                    //                    " where" +
                    //                    " (substring(mask,1,3)=cast((substring(b.bin,1,3 )) as dec(22,0)) or" +
                    //                    " substring(mask,1,3)=cast((substring(b.binu,1,3)) as dec(22,0)) or" +
                    //                    " substring(mask,1,3) between cast((substring(b.bin,1,3)) as dec(22,0)) and" +
                    //                        " cast((substring(b.binu,1,3)) as dec(22,0))) and len(b.bin)=3)" +
                    //                    " when" +
                    //                    " exists" +
                    //                         " (select * from abc096.products b" +
                    //                         " where" +
                    //                         " (substring(mask,1,2)=cast((substring(b.bin,1,2 )) as dec(22,0)) or" +
                    //                         " substring(mask,1,2)=cast((substring(b.binu,1,2)) as dec(22,0)) or" +
                    //                         " substring(mask,1,2) between cast((substring(b.bin,1,2)) as dec(22,0)) and" +
                    //                            " cast((substring(b.binu,1,2)) as dec(22,0))) and len(b.bin)=2)" +
                    //                    " then" +
                    //                         " (select min(b.id) from abc096.products b" +
                    //                         " where" +
                    //                         " (substring(mask,1,2)=cast((substring(b.bin,1,2 )) as dec(22,0)) or" +
                    //                         " substring(mask,1,2)=cast((substring(b.binu,1,2)) as dec(22,0)) or" +
                    //                         " substring(mask,1,2) between cast((substring(b.bin,1,2)) as dec(22,0)) and" +
                    //                             " cast((substring(b.binu,1,2)) as dec(22,0))) and len(b.bin)=2)" +
                    //                         " when" +
                    //                         " exists" +
                    //                              " (select * from abc096.products b" +
                    //                              " where" +
                    //                              " (substring(mask,1,1)=cast((substring(b.bin,1,1 )) as dec(22,0)) or" +
                    //                              " substring(mask,1,1)=cast((substring(b.binu,1,1)) as dec(22,0)) or" +
                    //                              " substring(mask,1,1) between cast((substring(b.bin,1,1)) as dec(22,0)) and" +
                    //                                   " cast((substring(b.binu,1,1)) as dec(22,0))) and len(b.bin)=1)" +
                    //                         " then " +
                    //                              " (select min(b.id) from abc096.products b" +
                    //                              " where" +
                    //                              " (substring(mask,1,1)=cast((substring(b.bin,1,1 )) as dec(22,0)) or" +
                    //                              " substring(mask,1,1)=cast((substring(b.binu,1,1)) as dec(22,0)) or" +
                    //                              " substring(mask,1,1) between cast((substring(b.bin,1,1)) as dec(22,0)) and" +
                    //                              " cast((substring(b.binu,1,1)) as dec(22,0))) and len(b.bin)=1)" +
                    //           " end";
                    //     LN 20170922 Commented     ----------    end    ---------

                    transactproduct.ExecuteNonQuery();

                    // ln 20170922      ----------    start    ---------
                    SqlCommand UpdZeroPrdctID = new SqlCommand();
                    UpdZeroPrdctID.Connection     = Conn;
                    UpdZeroPrdctID.CommandTimeout = 0;
                    UpdZeroPrdctID.CommandText    = "update zacreporting.[abc096].[imp_TRansact_D] " +
                                                    "set productid =  " +
                                                    "case " +
                                                    "when substring(mask,1,2) >= '40' and substring(mask,1,2) <= '49' then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c " +
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) >= '60' and substring(mask,1,2) <= '69' then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c " +
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '23'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '24'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '25'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '26'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '30'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    " group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '34'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '35'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '36'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '37'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '38'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '50'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '51'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '52'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '53'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '54'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '55'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '56'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '57'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "when substring(mask,1,2) = '58'	 then  (select b.id from zacreporting.[abc096].[imp_TRansact_D] c "+
                                                    "inner join zacreporting.dbo.Products b on substring(c.mask,1,2) = b.bin " +
                                                    "group by b.id,b.bin) " +
                                                    "end " +
                                                    "where productid = '0' ";
                    UpdZeroPrdctID.ExecuteNonQuery();
                    Console.WriteLine("Update productid for '0' \r\n");
                    // ln 20170922      ----------    end    ---------

                    Conn.Close();

                    mailBody += "Fixed product in IMP_TRANSACT_D. \r\n";
                    Console.WriteLine("Fixed product in IMP_TRANSACT_D. \r\n");
                    // sw.WriteLine("Fixed product in IMP_TRANSACT_D. \r\n");
                }
                catch
                { mailBody += "transactreport.csv could not be imported. \r\n";
                  Console.WriteLine("transactreport.csv could not be imported. \r\n");
                  // sw.WriteLine("transactreport.csv could not be imported. \r\n");
                  // try { sw.Close(); }
                  // catch { }
                }
            }
            catch
            { mailBody += "transactreport.csv could not be imported. \r\n";
              Console.WriteLine("transactreport.csv could not be imported. \r\n");
              //sw.WriteLine("transactreport.csv could not be imported. \r\n");
              //try { sw.Close(); }
              //catch { }
            }
        }