private void reconcileButton_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(selectedPathLabel.Text) && Directory.Exists(selectedPathLabel.Text)) { reconcileButton.Text = RECONCILE_PROCESSING_LABEL; reconcileButton.Enabled = false; resetButton.Enabled = false; #region processing hospital report List <HospitalReport> hospitalReports = new List <HospitalReport>(); var receiptsPath = string.Format(@"{0}\{1}", selectedPathLabel.Text, RECEIPT_FILENAME); if (!string.IsNullOrEmpty(receiptsPath) && File.Exists(receiptsPath)) { processingLabel(string.Format(PROCESSING_MESSAGE_LABEL, RECEIPT_FILENAME), true); try { hospitalReportHelper.ReadReceiptsExcel(receiptsPath, hospitalReports); } catch { ErrorLabel(string.Format(TECHNICAL_ISSUE_ERROR_LABEL, RECEIPT_FILENAME), true); processingLabel(string.Empty, false); } } else { ErrorLabel(string.Format("{0} is not found in the selected folder", RECEIPT_FILENAME), true); } var listOfReceiptsPath = string.Format(@"{0}\{1}", selectedPathLabel.Text, LIST_OF_RECEIPTS_REPORT_FILENAME); if (!string.IsNullOrEmpty(listOfReceiptsPath) && File.Exists(listOfReceiptsPath)) { processingLabel(string.Format(PROCESSING_MESSAGE_LABEL, LIST_OF_RECEIPTS_REPORT_FILENAME), true); try { hospitalReportHelper.ReadListOfReceiptReport(listOfReceiptsPath, hospitalReports); } catch { ErrorLabel(string.Format(TECHNICAL_ISSUE_ERROR_LABEL, LIST_OF_RECEIPTS_REPORT_FILENAME), true); processingLabel(string.Empty, false); } } #endregion #region processing bank report List <BankReport> bankReports = new List <BankReport>(); string[] fileEntries = Directory.GetFiles(selectedPathLabel.Text); foreach (string filePath in fileEntries) { if (!filePath.Contains(RECEIPT_FILENAME) && !filePath.Contains(LIST_OF_RECEIPTS_REPORT_FILENAME) && !filePath.Contains("~")) { if (filePath.ToUpper().Contains(AMEX)) { processingLabel(string.Format(PROCESSING_MESSAGE_LABEL, AMEX), true); bankReportHelper.ReadCSV(filePath, FileType.Amex, bankReports); } if (filePath.ToUpper().Contains(MBB)) { processingLabel(string.Format(PROCESSING_MESSAGE_LABEL, MBB), true); bankReportHelper.ReadCSV(filePath, FileType.MBB, bankReports); } if (filePath.ToUpper().Contains(ALIPAY)) { processingLabel(string.Format(PROCESSING_MESSAGE_LABEL, ALIPAY), true); bankReportHelper.ReadCSV(filePath, FileType.ALIPAY, bankReports); } if (filePath.ToUpper().Contains(HSBC)) { processingLabel(string.Format(PROCESSING_MESSAGE_LABEL, Path.GetFileName(filePath)), true); bankReportHelper.ReadExcel(filePath, FileType.HSBC, bankReports); } } } #endregion #region reconciliation List <ReconcileReport> mergedData = new List <ReconcileReport>(); List <HospitalReconcileReport> hospitalReportReconcile = new List <HospitalReconcileReport>(); List <BankReconcileReport> bankReportReconcile = new List <BankReconcileReport>(); processingLabel(PROCESSING_RECONCILE_MESSAGE_LABEL, true); reconciliationHelper.MergingData(hospitalReports, bankReports, mergedData); reconciliationHelper.Reconcile(mergedData, hospitalReportReconcile, bankReportReconcile); #endregion #region check mismatch report List <HospitalReport> hospitalReportsForMismatch = new List <HospitalReport>(); List <HospitalReport> hospitalMisMatchReport = new List <HospitalReport>(); hospitalReportHelper.RevertHospitalReports(hospitalReports, hospitalReportsForMismatch); reconciliationHelper.CheckForMismatch(hospitalReportsForMismatch, bankReports, hospitalMisMatchReport); #endregion #region generating report processingLabel(PROCESSING_GENERATE_REPORT_MESSAGE_LABEL, true); excelGenerator.GenerateReport(selectedPathLabel.Text, hospitalReports, bankReports, hospitalReportReconcile, bankReportReconcile, hospitalMisMatchReport); #endregion processingLabel(PROCESSING_COMPLETED_MESSAGE_LABEL, true); reconcileButton.Text = RECONCILE_STANDARD_LABEL; reconcileButton.Enabled = true; resetButton.Enabled = true; } else { ErrorLabel(SELECTED_PATH_ERROR_LABEL, true); } }