private void btnSaveSettings_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("Save changes?", "Save Settings", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (dialogResult == DialogResult.Yes)
            {
                String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

                String json;
                using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                Entities.SysSettings sysSettings          = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

                Entities.SysSettings newSysSettings = new Entities.SysSettings()
                {
                    ConnectionString         = txtConnectionString.Text,
                    Domain                   = sysSettings.Domain,
                    LogFileLocation          = sysSettings.LogFileLocation,
                    FolderToMonitor          = sysSettings.FolderToMonitor,
                    IsFolderMonitoringOnly   = false,
                    FolderMonitoringUserCode = sysSettings.FolderMonitoringUserCode,
                    FolderForSentFiles       = sysSettings.FolderForSentFiles
                };

                String newJson = new JavaScriptSerializer().Serialize(newSysSettings);
                File.WriteAllText(settingsPath, newJson);

                mainForm.connectInnosoftPOSIntegration();

                Close();
            }
        }
        public void getSettings()
        {
            String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

            String json;

            using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

            Entities.SysSettings sysSettings = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

            txtDomain.Text                    = sysSettings.Domain;
            txtLogFileLocation.Text           = sysSettings.LogFileLocation;
            txtFolderToMonitor.Text           = sysSettings.FolderToMonitor;
            txtFMUserCode.Text                = sysSettings.FolderMonitoringUserCode;
            isFolderMonitoringOnly            = sysSettings.IsFolderMonitoringOnly;
            txtFolderForSentFiles.Text        = sysSettings.FolderForSentFiles;
            cbxManualSalesIntegration.Checked = sysSettings.ManualSalesIntegration;

            if (isFolderMonitoringOnly)
            {
                txtConnectionString.Text = "";

                tabPagePOSSettings.Enabled = false;
                tabPageConnection.Enabled  = false;
                tabSettings.SelectedTab    = tabPageSystem;

                tabSettings.TabPages.Remove(tabPagePOSSettings);
                tabSettings.TabPages.Remove(tabPageConnection);
            }
            else
            {
                txtConnectionString.Text = sysSettings.ConnectionString;

                tabPagePOSSettings.Enabled = true;
                tabPageConnection.Enabled  = true;
                tabSettings.SelectedTab    = tabPagePOSSettings;

                cboPostUser.DataSource    = from d in posdb.MstUsers where d.IsLocked == true select d;
                cboPostUser.ValueMember   = "Id";
                cboPostUser.DisplayMember = "Username";

                cboPostSupplier.DataSource    = from d in posdb.MstSuppliers where d.IsLocked == true select d;
                cboPostSupplier.ValueMember   = "Id";
                cboPostSupplier.DisplayMember = "Supplier";

                var settings = from d in posdb.SysSettings select d;
                if (settings.Any())
                {
                    txtBranchCode.Text            = settings.FirstOrDefault().BranchCode;
                    txtUserCode.Text              = settings.FirstOrDefault().UserCode;
                    cbxUseItemPrice.Checked       = settings.FirstOrDefault().UseItemPrice;
                    cboPostUser.SelectedValue     = settings.FirstOrDefault().PostUserId;
                    cboPostSupplier.SelectedValue = settings.FirstOrDefault().PostSupplierId;
                }
            }
        }
Пример #3
0
        public void folderMonitoringLogMessages(String message)
        {
            if (txtFolderMonitoringLogs.InvokeRequired)
            {
                BeginInvoke((MethodInvoker) delegate
                {
                    bool log = true;

                    if (message.Equals("SIIntegrationLogOnce") ||
                        message.Equals("ORIntegrationLogOnce") ||
                        message.Equals("RRIntegrationLogOnce") ||
                        message.Equals("CVIntegrationLogOnce") ||
                        message.Equals("JVIntegrationLogOnce") ||
                        message.Equals("INIntegrationLogOnce") ||
                        message.Equals("OTIntegrationLogOnce") ||
                        message.Equals("STIntegrationLogOnce"))
                    {
                        log = false;
                        txtFolderMonitoringLogs.Text = txtFolderMonitoringLogs.Text.Substring(0, txtFolderMonitoringLogs.Text.Trim().LastIndexOf(Environment.NewLine));
                    }

                    if (log)
                    {
                        txtFolderMonitoringLogs.Text += message;

                        txtFolderMonitoringLogs.Focus();
                        txtFolderMonitoringLogs.SelectionStart = txtFolderMonitoringLogs.Text.Length;
                        txtFolderMonitoringLogs.ScrollToCaret();
                    }

                    if (txtFolderMonitoringLogs.Lines.Length >= 1000)
                    {
                        txtFolderMonitoringLogs.Text = "";

                        String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

                        String json;
                        using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

                        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                        Entities.SysSettings sysSettings          = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

                        File.WriteAllText(sysSettings.LogFileLocation + "\\FM_" + DateTime.Now.ToString("yyyyMMdd_hhmmss") + ".txt", txtFolderMonitoringLogs.Text);
                    }
                });
            }
            else
            {
                txtFolderMonitoringLogs.Text += message;

                txtFolderMonitoringLogs.Focus();
                txtFolderMonitoringLogs.SelectionStart = txtFolderMonitoringLogs.Text.Length;
                txtFolderMonitoringLogs.ScrollToCaret();
            }
        }
Пример #4
0
        public void getSettings()
        {
            String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

            String json;

            using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

            Entities.SysSettings sysSettings = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

            if (sysSettings.IsFolderMonitoringOnly)
            {
                isFolderMonitoringOnly = true;

                tabPagePOSSalesIntegration.Enabled         = false;
                tabPagePOSManualSalesIntegration.Enabled   = false;
                tabPageFolderMonitoringIntegration.Enabled = true;

                tabIntegration.SelectedTab = tabPageFolderMonitoringIntegration;
                tabIntegration.TabPages.Remove(tabPagePOSSalesIntegration);
                tabIntegration.TabPages.Remove(tabPagePOSManualSalesIntegration);

                btnLogout.Visible = false;
            }
            else
            {
                salesIntegrationLogFileLocation    = sysSettings.LogFileLocation;
                textBoxSalesIntegrationDomain.Text = sysSettings.Domain;

                var settings = from d in posdb.SysSettings
                               select d;

                if (settings.Any())
                {
                    posdb.Refresh(RefreshMode.OverwriteCurrentValues, settings);

                    textBoxSalesIntegrationBranchCode.Text       = settings.FirstOrDefault().BranchCode;
                    textBoxSalesIntegrationUserCode.Text         = settings.FirstOrDefault().UserCode;
                    checkBoxSalesIntegrationUseItemPrice.Checked = settings.FirstOrDefault().UseItemPrice;
                }

                GetTerminalList();
                textBoxManualSalesIntegrationDomain.Text = sysSettings.Domain;
            }

            textBoxFolderMonitoringUserCode.Text = sysSettings.FolderMonitoringUserCode;
            textBoxFolderMonitoringDomain.Text   = sysSettings.Domain;
            textBoxFolderToMonitor.Text          = sysSettings.FolderToMonitor;
        }
        public static String getConnectionString()
        {
            String ConnectionString = "";
            String settingsPath     = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

            String json;

            using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

            Entities.SysSettings sysSettings = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

            ConnectionString = sysSettings.ConnectionString;

            return(ConnectionString);
        }
        public SysConnectionString(MainForm form)
        {
            InitializeComponent();

            mainForm = form;

            String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

            String json;

            using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

            Entities.SysSettings sysSettings = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

            txtConnectionString.Text = sysSettings.ConnectionString;
        }
        private void btnSaveSettings_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("Save changes?", "Save Settings", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (dialogResult == DialogResult.Yes)
            {
                if (!isFolderMonitoringOnly)
                {
                    var settings = from d in posdb.SysSettings select d;
                    if (settings.Any())
                    {
                        var updateSettings = settings.FirstOrDefault();
                        updateSettings.BranchCode     = txtBranchCode.Text;
                        updateSettings.UserCode       = txtUserCode.Text;
                        updateSettings.UseItemPrice   = cbxUseItemPrice.Checked;
                        updateSettings.PostUserId     = Convert.ToInt32(cboPostUser.SelectedValue);
                        updateSettings.PostSupplierId = Convert.ToInt32(cboPostSupplier.SelectedValue);
                        posdb.SubmitChanges();
                    }
                }

                Entities.SysSettings newSysSettings = new Entities.SysSettings()
                {
                    ConnectionString         = txtConnectionString.Text,
                    Domain                   = txtDomain.Text,
                    LogFileLocation          = txtLogFileLocation.Text,
                    FolderToMonitor          = txtFolderToMonitor.Text,
                    IsFolderMonitoringOnly   = isFolderMonitoringOnly,
                    FolderMonitoringUserCode = txtFMUserCode.Text,
                    FolderForSentFiles       = txtFolderForSentFiles.Text,
                    ManualSalesIntegration   = cbxManualSalesIntegration.Checked
                };

                String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");
                String newJson      = new JavaScriptSerializer().Serialize(newSysSettings);

                File.WriteAllText(settingsPath, newJson);

                trnInnosoftPOSIntegrationForm.getSettings();

                Close();
            }
        }
Пример #8
0
        private void btnSaveLogs_Click(object sender, EventArgs e)
        {
            try
            {
                String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

                String json;
                using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                Entities.SysSettings sysSettings          = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

                File.WriteAllText(sysSettings.LogFileLocation + "\\ISPOS_" + DateTime.Now.ToString("yyyyMMdd_hhmmss") + ".txt", txtLogs.Text);
                File.WriteAllText(sysSettings.LogFileLocation + "\\FM_" + DateTime.Now.ToString("yyyyMMdd_hhmmss") + ".txt", txtFolderMonitoringLogs.Text);

                MessageBox.Show("Save Log Successful!", "EasyFIS Integration", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (DirectoryNotFoundException drex)
            {
                MessageBox.Show(drex.Message, "EasyFIS Integration", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        // =================
        // Send Disbursement
        // =================
        public async void SendDisbursement(Forms.TrnIntegrationForm trnIntegrationForm, String userCode, String file, String domain)
        {
            trnIntegrationForm.folderMonitoringLogMessages("\r\n\nOpening File: " + file + " \r\n\n");

            List <Entities.FolderMonitoringTrnDisbursement> newDisbursements = new List <Entities.FolderMonitoringTrnDisbursement>();
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            String jsonData = "";

            // ========
            // Cleaning
            // ========
            trnIntegrationForm.folderMonitoringLogMessages("\r\n\nCleaning Disbursement... (0%) \r\n\n");
            while (true)
            {
                try
                {
                    String deleteTemporaryDisbursementTask = await DeleteTemporaryDisbursement(domain);

                    if (!deleteTemporaryDisbursementTask.Equals("Clean Successful..."))
                    {
                        trnIntegrationForm.folderMonitoringLogMessages(deleteTemporaryDisbursementTask);
                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                        trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                        Thread.Sleep(5000);
                    }
                    else
                    {
                        trnIntegrationForm.folderMonitoringLogMessages("CVIntegrationLogOnce");

                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\nCleaning Disbursement... (100%) \r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Clean Successful!" + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                        break;
                    }
                }
                catch (Exception e)
                {
                    trnIntegrationForm.folderMonitoringLogMessages("Error: " + e.Message + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                    trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                    Thread.Sleep(5000);
                }
            }

            // ================
            // Reading CSV Data
            // ================
            trnIntegrationForm.folderMonitoringLogMessages("Reading CSV Data... (0%) \r\n\n");
            while (true)
            {
                newDisbursements = new List <Entities.FolderMonitoringTrnDisbursement>();

                try
                {
                    if (SysFileControl.IsCurrentFileClosed(file))
                    {
                        Int32 count = 0;

                        using (StreamReader dataStreamReader = new StreamReader(file))
                        {
                            dataStreamReader.ReadLine();
                            while (dataStreamReader.Peek() >= 0)
                            {
                                count += 1;

                                List <String> data = dataStreamReader.ReadLine().Split(',').ToList();
                                newDisbursements.Add(new Entities.FolderMonitoringTrnDisbursement
                                {
                                    BranchCode      = data[0],
                                    CVDate          = data[1],
                                    SupplierCode    = data[2],
                                    Payee           = data[3],
                                    PayType         = data[4],
                                    BankCode        = data[5],
                                    Remarks         = data[6],
                                    ManualCVNumber  = data[7],
                                    CheckNumber     = data[8],
                                    CheckDate       = data[9],
                                    IsCrossCheck    = Convert.ToBoolean(data[10]),
                                    IsClear         = Convert.ToBoolean(data[11]),
                                    UserCode        = userCode,
                                    CreatedDateTime = data[12],
                                    LineBranchCode  = data[13],
                                    AccountCode     = data[14],
                                    ArticleCode     = data[15],
                                    RRNumber        = data[16],
                                    ManualRRNumber  = data[17],
                                    Particulars     = data[18],
                                    Amount          = Convert.ToDecimal(data[19]),
                                    No = count
                                });

                                journalDate = Convert.ToDateTime(data[1]);
                            }
                        }

                        trnIntegrationForm.folderMonitoringLogMessages("CVIntegrationLogOnce");

                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\nReading CSV Data... (100%) \r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Read Successful!" + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                        break;
                    }
                    else
                    {
                        trnIntegrationForm.folderMonitoringLogMessages("Error: File: " + file + " is currently open. \r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                        trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                        Thread.Sleep(5000);
                    }
                }
                catch (Exception e)
                {
                    trnIntegrationForm.folderMonitoringLogMessages("Error: " + e.Message + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                    trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                    Thread.Sleep(5000);
                }
            }

            if (newDisbursements.Any())
            {
                // =========================
                // Checking Muliple CV Dates
                // =========================
                trnIntegrationForm.folderMonitoringLogMessages("Checking Multiple CV Dates... (0%) \r\n\n");
                while (true)
                {
                    try
                    {
                        var groupedCVDates = from d in newDisbursements group d by d.CVDate into g select g.Key;

                        var CVDates = from d in groupedCVDates.ToList() select d;
                        if (CVDates.Count() > 1)
                        {
                            trnIntegrationForm.folderMonitoringLogMessages("Checking Error: Cannot integrate multiple CV Dates. \r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                            trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                            Thread.Sleep(5000);
                        }
                        else
                        {
                            trnIntegrationForm.folderMonitoringLogMessages("CVIntegrationLogOnce");

                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\nChecking Multiple CV Dates... (100%) \r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("Check Successful!" + "\r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        trnIntegrationForm.folderMonitoringLogMessages("Error: " + e.Message + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                        trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                        Thread.Sleep(5000);
                    }
                }

                Boolean post = false;

                // =======
                // Sending
                // =======
                trnIntegrationForm.folderMonitoringLogMessages("Sending Disbursement... (0%) \r\n\n");
                while (true)
                {
                    try
                    {
                        Decimal percentage = 0;

                        Boolean send = false;
                        Int32   skip = 0;

                        for (Int32 i = 1; i <= newDisbursements.Count(); i++)
                        {
                            if (i % 100 == 0)
                            {
                                jsonData = serializer.Serialize(newDisbursements.Skip(skip).Take(100));
                                skip     = i;

                                send       = true;
                                percentage = Convert.ToDecimal((Convert.ToDecimal(skip) / Convert.ToDecimal(newDisbursements.Count())) * 100);
                            }
                            else
                            {
                                if (i == newDisbursements.Count())
                                {
                                    if (newDisbursements.Count() <= 100)
                                    {
                                        jsonData = serializer.Serialize(newDisbursements);
                                    }
                                    else
                                    {
                                        jsonData = serializer.Serialize(newDisbursements.Skip(skip).Take(i - skip));
                                    }

                                    send       = true;
                                    percentage = Convert.ToDecimal((Convert.ToDecimal(i) / Convert.ToDecimal(newDisbursements.Count())) * 100);
                                }
                            }

                            if (send)
                            {
                                while (true)
                                {
                                    try
                                    {
                                        String insertTemporaryDisbursementTask = await InsertTemporaryDisbursement(domain, jsonData);

                                        if (!insertTemporaryDisbursementTask.Equals("Send Successful..."))
                                        {
                                            trnIntegrationForm.folderMonitoringLogMessages(insertTemporaryDisbursementTask);
                                            trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                                            trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                                            Thread.Sleep(5000);
                                        }
                                        else
                                        {
                                            trnIntegrationForm.folderMonitoringLogMessages("CVIntegrationLogOnce");
                                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\nSending Disbursement... (" + Math.Round(percentage, 2) + "%) \r\n\n");

                                            if (i == newDisbursements.Count())
                                            {
                                                trnIntegrationForm.folderMonitoringLogMessages("Send Successful!" + "\r\n\n");
                                                trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                                trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");
                                            }

                                            break;
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        trnIntegrationForm.folderMonitoringLogMessages("Sending Error: " + e.Message + "\r\n\n");
                                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                                        trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                                        Thread.Sleep(5000);
                                    }
                                }

                                send = false;
                            }
                        }

                        post = true;
                        break;
                    }
                    catch (Exception e)
                    {
                        trnIntegrationForm.folderMonitoringLogMessages("Error: " + e.Message + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                        trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                        trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                        Thread.Sleep(5000);
                    }
                }

                // =======
                // Posting
                // =======
                if (post)
                {
                    trnIntegrationForm.folderMonitoringLogMessages("Posting Disbursement... (0%) \r\n\n");
                    while (true)
                    {
                        try
                        {
                            var groupedDisbursements = from d in newDisbursements
                                                       group d by new
                            {
                                d.BranchCode,
                                d.ManualCVNumber
                            } into g
                            select g.Key;

                            var disbursements = from d in groupedDisbursements.ToList() select d;
                            if (disbursements.Any())
                            {
                                Decimal percentage = 0;
                                Int32   count      = 0;

                                foreach (var disbursement in disbursements.ToList())
                                {
                                    count     += 1;
                                    percentage = Convert.ToDecimal((Convert.ToDecimal(count) / Convert.ToDecimal(disbursements.Count())) * 100);

                                    while (true)
                                    {
                                        try
                                        {
                                            String postDisbursementTask = await PostDisbursement(domain, disbursement.BranchCode, disbursement.ManualCVNumber);

                                            if (!postDisbursementTask.Equals("Post Successful..."))
                                            {
                                                trnIntegrationForm.folderMonitoringLogMessages(postDisbursementTask);
                                                trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                                trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                                                trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                                                Thread.Sleep(5000);
                                            }
                                            else
                                            {
                                                trnIntegrationForm.folderMonitoringLogMessages("CVIntegrationLogOnce");
                                                trnIntegrationForm.folderMonitoringLogMessages("\r\n\nPosting Disbursement... (" + Math.Round(percentage, 2) + "%) \r\n\n");

                                                if (count == disbursements.Count())
                                                {
                                                    trnIntegrationForm.folderMonitoringLogMessages("Post Successful!" + "\r\n\n");
                                                    trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                                    trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                                                    String jDate  = journalDate.ToString("MM-dd-yyyy", CultureInfo.InvariantCulture);
                                                    String apiURL = "http://" + domain + "/api/folderMonitoring/journal/" + jDate + "/CV";

                                                    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(apiURL);
                                                    httpWebRequest.Method = "GET";
                                                    httpWebRequest.Accept = "application/json";

                                                    HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                                                    using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))
                                                    {
                                                        var result = streamReader.ReadToEnd();
                                                        JavaScriptSerializer js = new JavaScriptSerializer();
                                                        Entities.FolderMonitoringTrnJournal sumUpJournal = (Entities.FolderMonitoringTrnJournal)js.Deserialize(result, typeof(Entities.FolderMonitoringTrnJournal));

                                                        if (sumUpJournal != null)
                                                        {
                                                            trnIntegrationForm.folderMonitoringLogMessages("Date: " + sumUpJournal.JournalDate + "\r\n\n");
                                                            trnIntegrationForm.folderMonitoringLogMessages("Total Debit: " + sumUpJournal.TotalDebitAmount + "\r\n\n");
                                                            trnIntegrationForm.folderMonitoringLogMessages("Total Credit: " + sumUpJournal.TotalCreditAmount + "\r\n\n");
                                                            trnIntegrationForm.folderMonitoringLogMessages("Balance: " + sumUpJournal.TotalBalance + "\r\n\n");
                                                            trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");
                                                        }
                                                    }
                                                }

                                                break;
                                            }
                                        }
                                        catch (Exception e)
                                        {
                                            trnIntegrationForm.folderMonitoringLogMessages("Posting Error: " + e.Message + "\r\n\n");
                                            trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                                            trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                                            Thread.Sleep(5000);
                                        }
                                    }
                                }
                            }

                            break;
                        }
                        catch (Exception e)
                        {
                            trnIntegrationForm.folderMonitoringLogMessages("Error: " + e.Message + "\r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                            trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                            trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                            Thread.Sleep(5000);
                        }
                    }
                }
            }
            else
            {
                trnIntegrationForm.folderMonitoringLogMessages("Erorr: Data Source Empty \r\n\n");
                trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");
            }

            // =============
            // Move CSV File
            // =============
            trnIntegrationForm.folderMonitoringLogMessages("Moving Disbursement File... (0%) \r\n\n");
            while (true)
            {
                try
                {
                    String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");
                    using (StreamReader trmRead = new StreamReader(settingsPath))
                    {
                        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                        Entities.SysSettings sysSettings          = javaScriptSerializer.Deserialize <Entities.SysSettings>(trmRead.ReadToEnd());

                        String executingUser = WindowsIdentity.GetCurrent().Name;

                        DirectorySecurity securityRules = new DirectorySecurity();
                        securityRules.AddAccessRule(new FileSystemAccessRule(executingUser, FileSystemRights.Read, AccessControlType.Allow));
                        securityRules.AddAccessRule(new FileSystemAccessRule(executingUser, FileSystemRights.FullControl, AccessControlType.Allow));

                        if (!Directory.Exists(sysSettings.FolderForSentFiles + "\\CV_" + DateTime.Now.ToString("yyyyMMdd") + "\\"))
                        {
                            DirectoryInfo createDirectoryCVCSV = Directory.CreateDirectory(sysSettings.FolderForSentFiles + "\\CV_" + DateTime.Now.ToString("yyyyMMdd") + "\\", securityRules);
                        }

                        String folderForSentFiles = sysSettings.FolderForSentFiles + "\\CV_" + DateTime.Now.ToString("yyyyMMdd") + "\\";
                        File.Move(file, folderForSentFiles + "CV_" + DateTime.Now.ToString("yyyyMMdd_hhmmss") + ".csv");
                    }

                    trnIntegrationForm.folderMonitoringLogMessages("CVIntegrationLogOnce");

                    trnIntegrationForm.folderMonitoringLogMessages("\r\n\nMoving Disbursement File... (100%) \r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("Move Successful!" + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                    break;
                }
                catch (Exception e)
                {
                    trnIntegrationForm.folderMonitoringLogMessages("Moving File Error: " + e.Message + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("Time Stamp: " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + "\r\n\n");
                    trnIntegrationForm.folderMonitoringLogMessages("\r\n\n");

                    trnIntegrationForm.folderMonitoringLogMessages("Retrying...\r\n\n");

                    Thread.Sleep(5000);
                }
            }
        }
        public void login()
        {
            try
            {
                btnLogin.Enabled  = false;
                btnCancel.Enabled = false;

                String username = txtUsername.Text;
                String password = txtPassword.Text;

                var user = from d in posdb.MstUsers
                           where d.UserName.Equals(username) &&
                           d.Password.Equals(password)
                           select d;

                if (user.Any())
                {
                    currentUser = user.FirstOrDefault().FullName;

                    String settingsPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Settings.json");

                    String json;
                    using (StreamReader trmRead = new StreamReader(settingsPath)) { json = trmRead.ReadToEnd(); }

                    JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                    Entities.SysSettings sysSettings          = javaScriptSerializer.Deserialize <Entities.SysSettings>(json);

                    Entities.SysSettings newSysSettings = new Entities.SysSettings()
                    {
                        ConnectionString         = sysSettings.ConnectionString,
                        Domain                   = sysSettings.Domain,
                        LogFileLocation          = sysSettings.LogFileLocation,
                        FolderToMonitor          = sysSettings.FolderToMonitor,
                        IsFolderMonitoringOnly   = false,
                        FolderMonitoringUserCode = sysSettings.FolderMonitoringUserCode,
                        FolderForSentFiles       = sysSettings.FolderForSentFiles,
                        ManualSalesIntegration   = sysSettings.ManualSalesIntegration
                    };

                    String newJson = new JavaScriptSerializer().Serialize(newSysSettings);
                    File.WriteAllText(settingsPath, newJson);

                    TrnIntegrationForm trnInnosoftPOSIntegrationForm = new TrnIntegrationForm();
                    trnInnosoftPOSIntegrationForm.getLoginDetails(this);
                    trnInnosoftPOSIntegrationForm.Show();

                    Hide();
                }
                else
                {
                    MessageBox.Show("Incorrect Username or Password.", "Login Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    btnLogin.Enabled  = true;
                    btnCancel.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                btnLogin.Enabled  = true;
                btnCancel.Enabled = true;
            }
        }