public void HappyPath_NightWatchmanAnalysis_BuildMachineData()
        {
            const int    DesktopCount          = 50123;
            const int    LaptopCount           = 50321;
            const string companyName           = "Nightwatchman Company, Ltd";
            long         totalMachine          = 5000;
            long         machinesOnForWeekdays = 3000;
            long         machinesOnForWeekend  = 2000;
            long         noOfDays = 15;

            var       machineData = BuildMachineData(DesktopCount, LaptopCount);
            DataTable machineActivityData;
            DataTable machineActivityValidationData;

            BuildMachineActivityData(totalMachine, machinesOnForWeekdays, machinesOnForWeekend, noOfDays, out machineActivityData, out machineActivityValidationData);

            Dictionary <string, DataTable> mockValues = new Dictionary <string, DataTable>()
            {
                { "MachineData", machineData },
                { "MachineActivityData", machineActivityData },
                { "Validate_MachineActivityData", machineActivityValidationData }
            };

            var mockQueryExecutor = new Moq.Mock <IQueryExecutor>();

            mockQueryExecutor.Setup(
                m =>
                m.ExecuteQuery(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SqlParameter[]>()))
            .Returns(
                (string a, string b, string tableName, SqlParameter[] p)
                => mockValues[tableName]);

            string assemblyPath;

            assemblyPath = Directory.GetCurrentDirectory();
            Console.WriteLine("Working directory: " + assemblyPath);
            var context = new CommonExtractionContext()
            {
                CompanyName       = companyName,
                BaseWorkDirectory = assemblyPath,
                PluginsDirectory  = assemblyPath
            };

            var factory      = new DataExtractorFactory(context.PluginsDirectory);
            var nwmExtractor = factory.GetExtractor <NightWatchmanDataExtractor>();

            Assert.NotNull(nwmExtractor, "DataExtractorFactory failed to load NightWatchmanDataExtractor");


            var extractor = new DataExtractor(factory, mockQueryExecutor.Object);
            var zipFile   = extractor.BuildPackage(context);

            Assert.IsTrue(File.Exists(zipFile), "Failed to create Zip file");
            Assert.IsTrue((string.Compare(Path.GetFileNameWithoutExtension(zipFile), context.CompanyName) == 0), "Zip file is not correctly named");

            // Need to add more code to test zip file paths
        }
        public void HappyPath_NightWatchmanAnalysis_BuildMachineData()
        {
            const int DesktopCount = 50123;
            const int LaptopCount = 50321;
            const string companyName = "Nightwatchman Company, Ltd";
            long totalMachine = 5000;
            long machinesOnForWeekdays = 3000;
            long machinesOnForWeekend = 2000;
            long noOfDays = 15;

            var machineData = BuildMachineData(DesktopCount, LaptopCount);
            DataTable machineActivityData;
            DataTable machineActivityValidationData;
            BuildMachineActivityData(totalMachine, machinesOnForWeekdays, machinesOnForWeekend, noOfDays, out machineActivityData, out machineActivityValidationData);

            Dictionary<string, DataTable> mockValues = new Dictionary<string, DataTable>()
                                                         {
                                                            {"MachineData",machineData},
                                                            {"MachineActivityData",machineActivityData},
                                                            {"Validate_MachineActivityData",machineActivityValidationData}
                                                         };

            var mockQueryExecutor = new Moq.Mock<IQueryExecutor>();
            mockQueryExecutor.Setup(
               m =>
               m.ExecuteQuery(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<SqlParameter[]>()))
               .Returns(
                  (string a, string b, string tableName, SqlParameter[] p)
                  => mockValues[tableName]);

            string assemblyPath;
            assemblyPath = Directory.GetCurrentDirectory();
            Console.WriteLine("Working directory: " + assemblyPath);
            var context = new CommonExtractionContext()
            {
                CompanyName = companyName,
                BaseWorkDirectory = assemblyPath,
                PluginsDirectory = assemblyPath
            };

            var factory = new DataExtractorFactory(context.PluginsDirectory);
            var nwmExtractor = factory.GetExtractor<NightWatchmanDataExtractor>();
            Assert.NotNull(nwmExtractor, "DataExtractorFactory failed to load NightWatchmanDataExtractor");
           

            var extractor = new DataExtractor(factory, mockQueryExecutor.Object);
            var zipFile = extractor.BuildPackage(context);
            Assert.IsTrue(File.Exists(zipFile), "Failed to create Zip file");
            Assert.IsTrue((string.Compare(Path.GetFileNameWithoutExtension(zipFile), context.CompanyName) == 0), "Zip file is not correctly named");
            
            // Need to add more code to test zip file paths
            
        }
Пример #3
0
        public static void Main(string[] args)
        {
            ExitCodes exitCode = ExitCodes.Success;

            try
            {
                CommandLine.DisplayBanner();
                var commandLine = new CommandLine(new Arguments(args));
                if (commandLine.Valid())
                {
                    // Create common configuration context
                    string connectionString = BuildConnectionString(commandLine);
                    Console.WriteLine("Using database connection string " + connectionString);
                    string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                    var    context      = new CommonExtractionContext
                    {
                        CompanyName       = commandLine.CompanyName,
                        SccmConnection    = connectionString,
                        StartDate         = commandLine.StartDate,
                        EndtDate          = commandLine.EndDate,
                        BaseWorkDirectory = assemblyPath,
                        PluginsDirectory  = Path.Combine(assemblyPath, "Plugins")
                    };

                    // Create DataExtractor Plugin Factory
                    var factory = new DataExtractorFactory(context.PluginsDirectory);

                    int commandExecutionTimeout = SqlCommandExecutionTimeout();
                    var queryExecutor           = new SqlQueryExecutor(context.SccmConnection, commandExecutionTimeout);

                    // Create Data Extractor and build package
                    var    extractor = new DataExtractor(factory, queryExecutor);
                    string zipPath   = extractor.BuildPackage(context);

                    if (extractor.Succeded())
                    {
                        string uploadurl = ConfigurationManager.AppSettings["fileUploadUrl"].Replace(
                            "[SERVERNAME]", commandLine.UploadServerName);

                        FileUploader.UploadFile(uploadurl, zipPath);
                    }
                }
            }
            catch (Exception ex)
            {
                DisplayError(ex);
                exitCode = ExitCodes.Error;
            }

            Environment.Exit((int)exitCode);
        }
Пример #4
0
        public static void Main(string[] args)
        {
            ExitCodes exitCode = ExitCodes.Success;
            try
            {
                CommandLine.DisplayBanner();
                var commandLine = new CommandLine(new Arguments(args));
                if (commandLine.Valid())
                {
                    // Create common configuration context
                    string connectionString = BuildConnectionString(commandLine);
                    Console.WriteLine("Using database connection string " + connectionString);
                    string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                    var context = new CommonExtractionContext
                        {
                            CompanyName = commandLine.CompanyName, 
                            SccmConnection = connectionString, 
                            StartDate = commandLine.StartDate, 
                            EndtDate = commandLine.EndDate, 
                            BaseWorkDirectory = assemblyPath, 
                            PluginsDirectory = Path.Combine(assemblyPath, "Plugins")
                        };

                    // Create DataExtractor Plugin Factory
                    var factory = new DataExtractorFactory(context.PluginsDirectory);

                    int commandExecutionTimeout = SqlCommandExecutionTimeout();
                    var queryExecutor = new SqlQueryExecutor(context.SccmConnection, commandExecutionTimeout);

                    // Create Data Extractor and build package
                    var extractor = new DataExtractor(factory, queryExecutor);
                    string zipPath = extractor.BuildPackage(context);

                    if (extractor.Succeded())
                    {
                        string uploadurl = ConfigurationManager.AppSettings["fileUploadUrl"].Replace(
                            "[SERVERNAME]", commandLine.UploadServerName);

                        FileUploader.UploadFile(uploadurl, zipPath);
                    }
                }
            }
            catch (Exception ex)
            {
                DisplayError(ex);
                exitCode = ExitCodes.Error;
            }

            Environment.Exit((int)exitCode);
        }
Пример #5
0
        private void btnImportData_Click(object sender, EventArgs e)
        {
            try
            {
                IDataExtractor result = null;

                using (var dialog = new Dialog.ImportSelectDialog())
                {
                    dialog.Filter      = "File / Folders to Import|*.*|Data File|*.csv;*.xslx";
                    dialog.Multiselect = true;
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        if (dialog.FileName == Utils.GetAppFilePath(AppFileType.ImportExtractor))
                        {
                            result = DataExtractorFactory.Deserialize(File.ReadAllText(dialog.FileName));
                        }
                        else if (dialog.FilterIndex == 1 || Directory.Exists(dialog.FileName))
                        {
                            result = DataExtractorFactory.Get(dialog.FileNames, ImportType.Files);
                        }
                        else
                        {
                            throw new NotSupportedException();
                        }
                    }
                }

                if (result != null)
                {
                    var mapping = new ImportMapping();
                    mapping.Extractor = result;

                    var connSelect = new ConnectionSelection();
                    connSelect.MultiSelect  = false;
                    connSelect.GoNextAction = () => _wizard.GoToStep(mapping);
                    _wizard.GoToStep(connSelect);
                }
            }
            catch (Exception ex)
            {
                Utils.HandleError(ex);
            }
        }
Пример #6
0
        //public void ReportThread(string result, string strRptFolder)
        public void BankRateThread(object QueryCode)
        {
            List <BANK_RULES> lbr = new List <BANK_RULES>();
            BankRuleService   brs = new BankRuleService();

            lbr = brs.findAll();
            foreach (BANK_RULES BR in lbr)
            {
                try
                {
                    string      result = "";
                    BankService bs     = new BankService();
                    BANK        b      = new BANK();
                    b = bs.find(BR.BankCode);
                    if (b != null)
                    {
                        string             groupCode   = Guid.NewGuid().ToString();
                        RATE_HISTORY       rateHistory = new RATE_HISTORY();
                        RateHistoryService rhs         = new RateHistoryService();
                        if (b.BankCode == "OCB")
                        {
                            Thread.Sleep(180000);
                            if (BankRateService.LastOCBRun.AddMinutes(5) < DateTime.Now)
                            {
                                BankRateService.LastOCBRun = DateTime.Now;
                                string bankData = DataExtractorFactory.getDataExtractor(b).extractData(b);

                                result = RuleProcessor.process(bankData, BR.BankRule, b.BankCode);
                            }
                        }
                        else
                        {
                            string bankData = DataExtractorFactory.getDataExtractor(b).extractData(b);

                            result = RuleProcessor.process(bankData, BR.BankRule, b.BankCode);
                        }

                        if (result != "")
                        {
                            rateHistory = rhs.get(b.BankCode, BR.TenorCode);
                            float finalResult;
                            if (rateHistory != null)
                            {
                                if (float.TryParse(result, out finalResult))
                                {
                                    rateHistory.InsRate   = result;
                                    rateHistory.GroupCode = groupCode;
                                    rateHistory.Timestamp = DateTime.Now;
                                    rhs.editRateHistory(rateHistory);
                                }
                            }
                            else
                            {
                                if (float.TryParse(result, out finalResult))
                                {
                                    rateHistory           = new RATE_HISTORY();
                                    rateHistory.BankCode  = b.BankCode;
                                    rateHistory.TenorCode = BR.TenorCode;

                                    rateHistory.InsRate   = result;
                                    rateHistory.GroupCode = groupCode;
                                    rateHistory.Timestamp = DateTime.Now;
                                    rhs.addRateHistory(rateHistory);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    log.Info("Error: ", ex);
                }
            }
        }