Beispiel #1
0
        public bool DoBpo2PdfEnv(int doId)
        {
            var sw = Stopwatch.StartNew();

            Db.Instance.Open();  //only opens 1 time. subsequent opens just ping the db

            MySqlDataReader dr       = null;
            MySqlDataReader drPics   = null;
            int             picKnt   = 0;
            string          err      = "";
            string          pid      = "";
            string          taskType = "";

            try
            {
                // 1. get bpo pics list

                string sql = sqlGetBpoPics.FormatWith(doId);

                if (!Db.Instance.ExecReader(sql, ref drPics, ref err))
                {
                    err = err.ToStringDef("GetBpoPics did not return Bpo Pic Data. Tid: " + doId.ToString());
                    return(False(err));
                }

                // 2. get bpo data
                // run-time args: {0} is property_id {1} is pic task_id {2} is picTaskType (leave comment here)

                pid      = drPics["property_id"].ToString();
                taskType = drPics["task_type"].ToString();

                sql = sqlGetBpoInfo.FormatWith(pid, doId, taskType);

                if (!Db.Instance.ExecReader(sql, ref dr, ref err))
                {
                    err = err.ToStringDef("GetBpoInfo did not return BpoData. Tid: " + doId.ToString());
                    return(False(err));
                }
                if (!dr.Read())
                {
                    err = "GetBpoInfo DbRead failed for Tid: " + doId.ToString();
                    return(False(err));
                }

                // 3. Generate BPO Pdf and Env files at FNC site and download files

                var bpo = new GetBpoPdfEnv(dictConfig);
                bpo.pid     = pid;
                bpo.pdfOnly = taskType.ToLower() == "bpoupic";

                if (!bpo.Execute(doId, dr, drPics))
                {
                    picKnt = bpo.picCount;
                    err    = bpo.errorMsg + " Tid: " + doId.ToString();
                    return(False(err));
                }

                picKnt = bpo.picCount;
                err    = "";

                if (bpo.pdfOnly)
                {
                    return(true);
                }

                // 4. send Env File to CMS System as a CMS Order, Save DocId to bpo_orders table

                var order = new CmsOrder(dictConfig);

                if (!order.SendEnvAsOrder(doId, dr, bpo.fileEnvPath))
                {
                    return(False(order.errorMsg + " doId: " + doId.ToString()));
                }

                if (order.envDocId.HasValue())
                {
                    Db.Instance.SqlExec(addEnvOrderRequest.FormatWith(             //set up Bpo_Order as Done status
                                            "CMS"                                  // '{0}'  char( 10 )   vendor
                                            , order.envDocId                       // '{1}'  char( 25 )   vendor_order_no
                                            , pid                                  //{2} mediumint( 7 ) unsigned property_id
                                            , doId                                 // {3} int( 10 )      unsigned task_id
                                            , dr["res_id"].ToString()              //{ 4} mediumint( 6 ) res_id
                                            , dr["subj_addr_street"].ToString()    // '{5}'  char( 40 )   address
                                            , dr["subj_addr_city"].ToString()      // '{6}'  char( 40 )   city
                                            , dr["subj_addr_stateprov"].ToString() // '{7}'  char( 2 )    state
                                            , dr["subj_addr_zip"].ToString()       // '{8}'  char( 10 )   zip
                                            , dr["subj_loannum"].ToString()        // '{9}'  char( 20 )   loan_no
                                            , dr["ApplicantLastName"].ToString()   // '{10}' char( 40 )   borrower_last
                                            , dr["ApplicantFirstName"].ToString()  // '{11}' char( 40 )   borrower_first
                                            , "env"                                // '{12}' char( 70 )   document_type
                                            , ""                                   // '{13}' char( 70 )   document_name
                                            , "Env File Uploaded"                  // '{14}' char( 255 )  status_msg
                                            , ""                                   // '{15}' char( 50 )   file
                                            , "102"                                // '{16}' char( 20 )   bpo_type
                                            ));
                }

                return(true);
            }
            catch (Exception e)
            {
                return(False(e.Message));
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
                if (drPics != null)
                {
                    drPics.Close();
                }
                dr     = null;
                drPics = null;

                sw.Stop();
                log.DebugFormat("BpoTime taken ({1} pics): {0}ms", sw.Elapsed.TotalMilliseconds, picKnt);
                Db.Instance.SqlExec(updProcRepEntry.FormatWith(
                                        err.IsStrEmpty() ? "Done" : "Canceled"                      //status
                                        , err.IsStrEmpty() ? "" : " error: " + err.Replace("'", "") //report_parms
                                        , "AmGetBpoPdf"
                                        , doId                                                      //task_id
                                        , pid.ToIntDef(0)
                                        ));
            }
        }
Beispiel #2
0
        private bool SetConfigItems()
        {
            filesAvoid = new Dictionary <string, int>(200, StringComparer.InvariantCultureIgnoreCase);
            Db.Instance.Open();
            errs   = new StringBuilder();
            config = new Config();

            try
            {
                string srce = System.Configuration.ConfigurationManager.AppSettings["configValues"].ToStringDef("");
                if (srce.ToLower() == "resnet.parms")
                {
                    dictConfig = Db.Instance.InitializeDefaults(String.Format(selConfigParms));
                }
                else
                {
                    var aa = System.Configuration.ConfigurationManager.AppSettings;
                    dictConfig = aa
                                 .Cast <string>()
                                 .ToDictionary(p => p, p => aa[p], StringComparer.InvariantCultureIgnoreCase);
                }
                if (dictConfig == null || dictConfig.Count == 0)
                {
                    errs.Append("No Parms entries in resnet_if.parms_sql");
                    return(false);
                }

                config.listenFilter       = dictConfig.GetValueDef("listen_FILter");
                config.listenPath         = dictConfig.GetValueDef("listen_path");
                config.sleepBefore        = dictConfig.GetValueDef("sleep_before_ms").ToIntDef(config.sleepBefore);
                config.timerInterval      = dictConfig.GetValueDef("timer_interval_mins").ToIntDef(5) * 60 * 1000;     //mins
                config.transPauseMs       = dictConfig.GetValueDef("PauseMsBetweenTransactions").ToStringDef("").ToIntDef(0);
                config.fileRefreshTrigger = dictConfig.GetValueDef("refresh_config_trigger").ToStringDef(config.fileRefreshTrigger).ToLower();
                config.fileRefreshTrigger = Path.GetFileNameWithoutExtension(config.fileRefreshTrigger);
                prefixEnvPdf   = dictConfig.GetValueDef("envFilePrefix").ToStringDef("").ToLower();
                prefixOrderApr = dictConfig.GetValueDef("cmsFilePrefixApr").ToStringDef("").ToLower();
                prefixOrderBpo = dictConfig.GetValueDef("cmsFilePrefixBpo").ToStringDef("").ToLower();

                sqlGetBpoInfo    = Db.Instance.GetDbSql(selParmsSql.FormatWith("SendToCMSEnv", "Bpo2Env"), true, true);
                sqlGetBpoPics    = Db.Instance.GetDbSql(selParmsSql.FormatWith("SendToCMSEnv", "Bpo2EnvPics"), true, true);
                sqlGetOrderInfo  = Db.Instance.GetDbSql(selParmsSql.FormatWith("SendToCMSOrder", "ValOrderInfo"), true, true);
                sqlGetBpoEnvName = Db.Instance.GetDbSql(selParmsSql.FormatWith("SendToCMSOrder", "EnvFileName"), true, true);

                if (config.listenFilter.IsStrEmpty())
                {
                    errs.Append(", listen_filter");
                }
                if (config.listenPath.IsStrEmpty())
                {
                    errs.Append(", listen_path");
                }
                if (prefixEnvPdf.IsStrEmpty())
                {
                    errs.Append(", envFilePrefix");
                }
                if (prefixOrderApr.IsStrEmpty())
                {
                    errs.Append(", cmsFilePrefixApr");
                }
                if (prefixOrderBpo.IsStrEmpty())
                {
                    errs.Append(", cmsFilePrefixBpo");
                }
                if (sqlGetBpoInfo.IsStrEmpty())
                {
                    errs.Append(", SendToCMSEnv/Bpo2Env ParmsSql");
                }
                if (sqlGetBpoPics.IsStrEmpty())
                {
                    errs.Append(", SendToCMSEnv/Bpo2EnvPics ParmsSql");
                }
                if (sqlGetOrderInfo.IsStrEmpty())
                {
                    errs.Append(", SendToCMSOrder/ValOrderInfo ParmsSql");
                }
                if (sqlGetBpoEnvName.IsStrEmpty())
                {
                    errs.Append(", SendToCMSOrder/EnvFileName ParmsSql");
                }


                if (!Directory.Exists(config.listenPath))
                {
                    errs.Append(", Invalid listenPath: " + config.listenPath);
                }

                if (errs.Length > 0)
                {
                    errs.Insert(0, "Required Config Values missing: " + errs.ToString().Substring(1));
                }

                foreach (var item in dictConfig)
                {
                    if (item.Key.EndsWith("dir", StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (!Directory.Exists(item.Value))
                        {
                            errs.Append(", " + item.Key);
                        }
                    }
                }

                if (errs.Length > 0)
                {
                    errs.Insert(0, "Required Config Paths are Invalid: " + errs.ToString().Substring(1));
                }

                if (errs.Length > 0)
                {
                    return(false);
                }

                errs.Append(GetBpoPdfEnv.CheckConfig(dictConfig));

                if (errs.Length > 0)
                {
                    return(false);
                }

                errs.Append(CmsOrder.CheckConfig(dictConfig));

                if (errs.Length > 0)
                {
                    return(false);
                }

                return(errs.Length == 0);
            }
            catch (Exception e)
            {
                errs.Append("SetDbConfig " + e.Message);
                return(false);
            }
            finally
            {
                if (errs.Length > 0)
                {
                    Db.Instance.Close();                     //exiting
                }
            }
        }