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) )); } }
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 )); } }
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 } } }