private void Button_GenerateDisclosures_Click(object sender, EventArgs e)
        {
            if (ValidateReadyToRunDisclosures() == false)
            {
                return;
            }

            ButtonGenerateDisclosures.Enabled = false;
            var package = DisclosuresManger.GetDisclosurePackageSelected(this.Loan);

            try
            {
                this.RunDisclosuresProcess(package);
            }
            catch (WCMException ex)
            {
                UIHelper.DisplayWCMException(ex);
            }
            catch (Exception ex)
            {
                Macro.Alert($"Unhandled Exception ERROR: {ex.ToString()}");
            }
            finally
            {
                SetSendDisclosuresControls();
            }
        }
        private DisclosuresManger InitDisclosuresManager(PdfDocumentList encompassDisclosuresList, PleaseWaitDialog waitDialog)
        {
            var packageSelected = DisclosuresManger.GetDisclosurePackageSelected(EncompassApplication.CurrentLoan);
            var wcmDisclosures  = GetDisclosures(encompassDisclosuresList, packageSelected);

            return(new DisclosuresManger(DisclosuresUtilityConfig,
                                         new DisclosuresUtilityRequest()
            {
                DisclosurePackage = packageSelected,
                Disclosures = wcmDisclosures,
                Loan = EncompassApplication.CurrentLoan,
                Progress = waitDialog.Progress
            }));
        }
        public async void SendDisclosures(PdfDocumentList encompassDisclosuresList)
        {
            SendDisclosuresButton.Enabled = false;

            var waitDialog = new PleaseWaitDialog(emSendDisclosuresDialogForm);


            await new TaskFactory().StartNew(() =>
            {
                try
                {
                    DisclosuresService  = InitDisclosuresManager(encompassDisclosuresList, waitDialog);
                    var packageResponse = DisclosuresService.SendDisclosurePackageToBorrower();


                    waitDialog.Progress.Report($"Disclosures sent successfully. {Environment.NewLine + Environment.NewLine}Saving Loan...");

                    EncompassApplication.CurrentLoan.Commit();

                    waitDialog.PleaseWaitForm.Close();

                    // SP - close EM disclosure dialog
                    emSendDisclosuresDialogForm.Close();

                    Macro.Alert($"Disclosure Package Sent Successfully.");
                }
                catch (WCMException e)
                {
                    waitDialog.PleaseWaitForm.Close();

                    UIHelper.DisplayWCMException(e);
                    SendDisclosuresButton.Enabled = true;
                }
                catch (Exception e)
                {
                    waitDialog.PleaseWaitForm.Close();

                    Macro.Alert($"Unhandled Exception ERROR: {e.ToString()}");
                    SendDisclosuresButton.Enabled = true;
                }
            });
        }
        public void SetSendDisclosuresControls()
        {
            // Disable buttons on form load and when new package is selected
            ButtonGenerateDisclosures.Enabled = false;

            if (this.Loan.Fields[DisclosurePackageToSendField].IsEmpty())
            {
                ButtonCreateAppraisalCreditCardTask.Enabled = false;
                return;
            }

            // if appraisal task ID is not blank, means it has already been created
            if (Loan.Fields["CX.APPRAISAL.CC.TASK.ID"].IsEmpty() == false)
            {
                ButtonCreateAppraisalCreditCardTask.Enabled = false;
            }

            var package = DisclosuresManger.GetDisclosurePackageSelected(this.Loan);

            DisclosurePackageSelected = package.PackageType;



            InitialDisclosuresReadyToGenerateCheck distributionCheck = _passFailUtility.InitialDisclosuresReadyToGenerateCheck();

            if (distributionCheck.IsLoanReadyToGenerateInitialDisclosures == false)
            {
                LabelDisclosureFailReasons.ForeColor = System.Drawing.Color.Red;
                LabelDisclosureFailReasons.Visible   = true;
                FormatReasonsNotReadyToGenerate(distributionCheck.ReasonsPackageIsNotReadyToGenerate);
            }
            else if (distributionCheck.IsLoanReadyToGenerateInitialDisclosures)
            {
                LabelDisclosureFailReasons.Visible   = true;
                LabelDisclosureFailReasons.Text      = "Disclosures ready to be sent!";
                LabelDisclosureFailReasons.ForeColor = System.Drawing.Color.Green;


                ButtonGenerateDisclosures.Enabled = true;
            }
        }
        private List <PostPackageResponse> SendWCMDisclosurePackage(WCMDisclosurePackage package, PleaseWaitDialog waitDialog)
        {
            var trackedDoc     = _cdoDisclosuresUtility.GetDisclosuresTrackedDoc(package.EfolderNameThatContainsDisclosures, package);
            var wcmDisclosures =
                _cdoDisclosuresUtility.GetDisclosuresFromTrackedDocument(package, trackedDoc);

            var disclosuresService = new DisclosuresManger(DisclosuresHelper.PopulateDisclosuresUtilityConfig(),
                                                           new DisclosuresUtilityRequest()
            {
                EfolderContainingDisclosures = trackedDoc,
                DisclosurePackage            = package,
                Disclosures = wcmDisclosures,
                Loan        = EncompassApplication.CurrentLoan,
                Progress    = waitDialog.Progress
            });

            var packageResponse = disclosuresService.SendDisclosurePackageToBorrower();

            waitDialog.Progress.Report($"Disclosures sent successfully. {Environment.NewLine + Environment.NewLine}Saving Loan...");

            return(packageResponse);
        }