Ejemplo n.º 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)
                                        ));
            }
        }
Ejemplo n.º 2
0
        private bool DoCmsOrder(string orderType, int doId)
        {
            var sw = Stopwatch.StartNew();

            Db.Instance.Open();

            MySqlDataReader dr         = null;
            bool            IsApr      = orderType == prefixOrderApr;
            string          envFileMsg = "";
            string          resultsMsg = "";

            lastErr = "";
            string vendorOrderNo = "";
            var    order         = new CmsOrder(dictConfig);

            try
            {
                string sql = sqlGetOrderInfo.FormatWith(doId);    //bpo_ is the default in sql Stmt

                if (IsApr)
                {
                    sql = sql.ReplaceStr("bpo_", "apr_");
                }

                // 1. get order data

                if (!Db.Instance.ExecReader(sql, ref dr, ref lastErr))
                {
                    return(False(lastErr.ToStringDef(noData + doId.ToString())));
                }

                if (!dr.Read())
                {
                    return(False(noRead + doId.ToString()));
                }

                // 2. Get Bpo Env file name set as Parent Doc Id for all orders sent to CMS by property_id
                string pid = dr["property_id"].ToString();

                order.sendParentDocId = Db.Instance.SqlFunc(selEnvParentDocId.FormatWith(
                                                                "CMS",          //vendor = '{0}'
                                                                pid.ToIntDef(0) //{ 1}
                                                                ));

                // 3. execute the order

                if (!order.Execute(doId, dr, IsApr))
                {
                    False(order.errorMsg + " doId: " + doId.ToString());
                }

                resultsMsg    = String.Join("\n", order.resultsLog.ToArray());
                vendorOrderNo = order.vendorOrderNo;
                // see above envFileMsg    = order.envFileWasSent ? "Env File Sent " + DateTime.Now.ToString() : "";

                return(lastErr.IsStrEmpty());
            }
            catch (Exception e)
            {
                return(False(e.Message));
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
                dr = null;
                sw.Stop();
                log.DebugFormat("OrderTime taken: {0}ms", sw.Elapsed.TotalMilliseconds);
                string updSql = updOrderRequest;

                if (IsApr)
                {
                    updSql = updSql.ReplaceStr("bpo_", "apr_");
                }
                if (lastErr.HasValue())
                {
                    lastErr = " error: " + lastErr;
                }
                Db.Instance.SqlExec(updSql.FormatWith(
                                        (vendorOrderNo.HasValue() ? "open" : "cancelled")
                                        , DbUtils.Escape(vendorOrderNo) //folderId
                                        , DbUtils.Escape(" SendOrder: {0}{1}".FormatWith(resultsMsg, lastErr))
                                        , doId                          //order_id
                                        , DbUtils.Escape(envFileMsg)    //status_msg
                                        ));
            }
        }
Ejemplo n.º 3
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
                }
            }
        }