590 lines
33 KiB
C#
590 lines
33 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using DotNetDBF;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace BodyshopUploader.Utils.Decoder
|
|
{
|
|
class EstimateDecoder
|
|
{
|
|
public static class CIECAEstimateImport
|
|
{
|
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
/// <summary>
|
|
/// Decode the set of estimate files based on the creation of an envelope file.
|
|
/// </summary>
|
|
/// <param name="FilePath">Full path to the envelope file that was created/updated.</param>
|
|
/// <returns></returns>
|
|
public static dynamic DecodeEstimate(string FilePath)
|
|
{
|
|
dynamic ret = new JObject();
|
|
|
|
ret.ciecaid = Path.GetFileNameWithoutExtension(FilePath);
|
|
|
|
string _dir = Path.GetDirectoryName(FilePath) + @"\";
|
|
|
|
ParseAd1File(ref ret, _dir);
|
|
ParseVehFile(ref ret, _dir);
|
|
//ParseStlFile(ref ret, _dir);
|
|
//ParseTtlFile(ref ret, _dir);
|
|
//ParseLinFile(ref ret, _dir);
|
|
|
|
return ret;
|
|
}
|
|
|
|
public static void ParseAd1File(ref dynamic j, string RootFilePath)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(j.ciecaid.Value))
|
|
{
|
|
return;
|
|
}
|
|
logger.Trace(@"Parsing AD1 at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
|
|
|
int retryNumber = 0;
|
|
while (retryNumber < 11)
|
|
{
|
|
try
|
|
{
|
|
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + "A.ad1", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
var reader = new DBFReader(fis);
|
|
|
|
reader.SetSelectFields(new string[] { "INS_CO_ID","INS_CO_NM","INS_ADDR1","INS_ADDR2","INS_CITY","INS_ST","INS_ZIP","INS_CTRY",
|
|
|
|
"INS_EA","POLICY_NO","DED_AMT","DED_STATUS","ASGN_NO","ASGN_DATE","ASGN_TYPE","CLM_NO","CLM_OFC_ID","CLM_OFC_NM","CLM_ADDR1",
|
|
"CLM_ADDR2","CLM_CITY","CLM_ST","CLM_ZIP","CLM_CTRY","CLM_PH1","CLM_PH1X","CLM_PH2","CLM_PH2X","CLM_FAX","CLM_FAXX","CLM_CT_LN",
|
|
"CLM_CT_FN","CLM_TITLE","CLM_CT_PH","CLM_CT_PHX","CLM_EA","PAYEE_NMS","PAY_TYPE","PAY_DATE","PAY_CHKNM","PAY_AMT","AGT_CO_ID","AGT_CO_NM",
|
|
"AGT_ADDR1","AGT_ADDR2","AGT_CITY","AGT_ST","AGT_ZIP","AGT_CTRY","AGT_PH1","AGT_PH1X","AGT_PH2","AGT_PH2X","AGT_FAX","AGT_FAXX","AGT_CT_LN",
|
|
"AGT_CT_FN","AGT_CT_PH","AGT_CT_PHX","AGT_EA","AGT_LIC_NO",
|
|
"LOSS_DATE","LOSS_TYPE","LOSS_DESC","THEFT_IND","CAT_NO",
|
|
"TLOS_IND","CUST_PR","INSD_LN","INSD_FN","INSD_TITLE","INSD_CO_NM","INSD_ADDR1","INSD_ADDR2","INSD_CITY","INSD_ST","INSD_ZIP",
|
|
"INSD_CTRY","INSD_PH1","INSD_PH1X","INSD_PH2","INSD_PH2X","INSD_FAX","INSD_FAXX","INSD_EA","OWNR_LN","OWNR_FN","OWNR_TITLE","OWNR_CO_NM",
|
|
"OWNR_ADDR1","OWNR_ADDR2","OWNR_CITY","OWNR_ST","OWNR_ZIP","OWNR_CTRY","OWNR_PH1","OWNR_PH1X","OWNR_PH2","OWNR_PH2X","OWNR_FAX","OWNR_FAXX",
|
|
"OWNR_EA", "INS_PH1","INS_PH1X","INS_PH2","INS_PH2X","INS_FAX","INS_FAXX","INS_CT_LN","INS_CT_FN","INS_TITLE","INS_CT_PH","INS_CT_PHX", "LOSS_CAT",
|
|
});
|
|
var readValues = reader.NextRecord();
|
|
|
|
j.ins_co_id = readValues[0]?.ToString();
|
|
j.ins_co_nm = readValues[1]?.ToString();
|
|
j.ins_addr1 = readValues[2]?.ToString();
|
|
j.ins_addr2 = readValues[3]?.ToString();
|
|
j.ins_city = readValues[4]?.ToString();
|
|
j.ins_st = readValues[5]?.ToString();
|
|
j.ins_zip = readValues[6]?.ToString();
|
|
j.ins_ctry = readValues[7]?.ToString();
|
|
j.ins_ea = readValues[8]?.ToString();
|
|
j.policy_no = readValues[9]?.ToString();
|
|
j.ded_amt = readValues[10]?.ToString();
|
|
j.ded_status = readValues[11]?.ToString();
|
|
j.asgn_no = readValues[12]?.ToString();
|
|
j.asgn_date = readValues[13]?.ToString();
|
|
j.asgn_type = readValues[14]?.ToString();
|
|
j.clm_no = readValues[15]?.ToString();
|
|
j.clm_ofc_id = readValues[16]?.ToString();
|
|
j.clm_ofc_nm = readValues[17]?.ToString();
|
|
j.clm_addr1 = readValues[18]?.ToString();
|
|
j.clm_addr2 = readValues[19]?.ToString();
|
|
j.clm_city = readValues[20]?.ToString();
|
|
j.clm_st = readValues[21]?.ToString();
|
|
j.clm_zip = readValues[22]?.ToString();
|
|
j.clm_ctry = readValues[23]?.ToString();
|
|
j.clm_ph1 = readValues[24]?.ToString();
|
|
j.clm_ph1x = readValues[25]?.ToString();
|
|
j.clm_ph2 = readValues[26]?.ToString();
|
|
j.clm_ph2x = readValues[27]?.ToString();
|
|
j.clm_fax = readValues[28]?.ToString();
|
|
j.clm_faxx = readValues[29]?.ToString();
|
|
j.clm_ct_ln = readValues[30]?.ToString();
|
|
j.clm_ct_fn = readValues[31]?.ToString();
|
|
j.clm_title = readValues[32]?.ToString();
|
|
j.clm_ct_ph = readValues[33]?.ToString();
|
|
j.clm_ct_phx = readValues[34]?.ToString();
|
|
j.clm_ea = readValues[35]?.ToString();
|
|
j.payee_nms = readValues[36]?.ToString();
|
|
j.pay_type = readValues[37]?.ToString();
|
|
j.pay_date = readValues[38]?.ToString();
|
|
j.pay_chknm = readValues[39]?.ToString();
|
|
j.pay_amt = readValues[40]?.ToString();
|
|
j.agt_co_id = readValues[41]?.ToString();
|
|
j.agt_co_nm = readValues[42]?.ToString();
|
|
j.agt_addr1 = readValues[43]?.ToString();
|
|
j.agt_addr2 = readValues[44]?.ToString();
|
|
j.agt_city = readValues[45]?.ToString();
|
|
j.agt_st = readValues[46]?.ToString();
|
|
j.agt_zip = readValues[47]?.ToString();
|
|
j.agt_ctry = readValues[48]?.ToString();
|
|
j.agt_ph1 = readValues[49]?.ToString();
|
|
j.agt_ph1x = readValues[50]?.ToString();
|
|
j.agt_ph2 = readValues[51]?.ToString();
|
|
j.agt_ph2x = readValues[52]?.ToString();
|
|
j.agt_fax = readValues[53]?.ToString();
|
|
j.agt_faxx = readValues[54]?.ToString();
|
|
j.agt_ct_ln = readValues[55]?.ToString();
|
|
j.agt_ct_fn = readValues[56]?.ToString();
|
|
j.agt_ct_ph = readValues[57]?.ToString();
|
|
j.agt_ct_phx = readValues[58]?.ToString();
|
|
j.agt_ea = readValues[59]?.ToString();
|
|
j.agt_lic_no = readValues[60]?.ToString();
|
|
j.loss_date = readValues[61]?.ToString();
|
|
j.loss_type = readValues[62]?.ToString();
|
|
j.loss_desc = readValues[63]?.ToString();
|
|
j.theft_ind = readValues[64]?.ToString(); //BOOL
|
|
j.cat_no = readValues[65]?.ToString();
|
|
j.tlos_ind = readValues[66]?.ToString();
|
|
j.cust_pr = readValues[67]?.ToString();
|
|
j.insd_ln = readValues[68]?.ToString();
|
|
j.insd_fn = readValues[69]?.ToString();
|
|
j.insd_title = readValues[70]?.ToString();
|
|
j.insd_co_nm = readValues[71]?.ToString();
|
|
j.insd_addr1 = readValues[72]?.ToString();
|
|
j.insd_addr2 = readValues[73]?.ToString();
|
|
j.insd_city = readValues[74]?.ToString();
|
|
j.insd_st = readValues[75]?.ToString();
|
|
j.insd_zip = readValues[76]?.ToString();
|
|
j.insd_ctry = readValues[77]?.ToString();
|
|
j.insd_ph1 = readValues[78]?.ToString();
|
|
j.insd_ph1x = readValues[79]?.ToString();
|
|
j.insd_ph2 = readValues[80]?.ToString();
|
|
j.insd_ph2x = readValues[81]?.ToString();
|
|
j.insd_fax = readValues[82]?.ToString();
|
|
j.insd_faxx = readValues[83]?.ToString();
|
|
j.insd_ea = readValues[84]?.ToString();
|
|
j.ownr_ln = readValues[85]?.ToString();
|
|
j.ownr_fn = readValues[86]?.ToString();
|
|
j.ownr_title = readValues[87]?.ToString();
|
|
j.ownr_co_nm = readValues[88]?.ToString();
|
|
j.ownr_addr1 = readValues[89]?.ToString();
|
|
j.ownr_addr2 = readValues[90]?.ToString();
|
|
j.ownr_city = readValues[91]?.ToString();
|
|
j.ownr_st = readValues[92]?.ToString();
|
|
j.ownr_zip = readValues[93]?.ToString();
|
|
j.ownr_ctry = readValues[94]?.ToString();
|
|
j.ownr_ph1 = readValues[95]?.ToString();
|
|
j.ownr_ph1x = readValues[96]?.ToString();
|
|
j.ownr_ph2 = readValues[97]?.ToString();
|
|
j.ownr_ph2x = readValues[98]?.ToString();
|
|
j.ownr_fax = readValues[99]?.ToString();
|
|
j.ownr_faxx = readValues[100]?.ToString();
|
|
j.ownr_ea = readValues[101]?.ToString();
|
|
j.ins_ph1 = readValues[102]?.ToString();
|
|
j.ins_ph1x = readValues[103]?.ToString();
|
|
j.ins_ph2 = readValues[104]?.ToString();
|
|
j.ins_ph2x = readValues[105]?.ToString();
|
|
j.ins_fax = readValues[106]?.ToString();
|
|
j.ins_faxx = readValues[107]?.ToString();
|
|
j.ins_ct_ln = readValues[108]?.ToString();
|
|
j.ins_ct_fn = readValues[109]?.ToString();
|
|
j.ins_title = readValues[110]?.ToString();
|
|
j.ins_ct_ph = readValues[111]?.ToString();
|
|
j.ins_ct_phx = readValues[112]?.ToString();
|
|
j.loss_cat = readValues[113]?.ToString();
|
|
j.shopid = AppMetaData.ActiveShopId;
|
|
|
|
return;
|
|
}
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
logger.Trace(ex, "Unable to open AD1 file. Retrying. ");
|
|
retryNumber++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public static void ParseAd2File(ref dynamic j, string RootFilePath)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(j.ciecaid.Value))
|
|
{
|
|
return;
|
|
}
|
|
logger.Trace(@"Parsing AD2 at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
|
|
|
int retryNumber = 0;
|
|
while (retryNumber < 11)
|
|
{
|
|
try
|
|
{
|
|
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + "A.ad2", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
var reader = new DBFReader(fis);
|
|
|
|
reader.SetSelectFields(new string[] { "INS_CO_ID","INS_CO_NM","INS_ADDR1","INS_ADDR2","INS_CITY","INS_ST","INS_ZIP","INS_CTRY",
|
|
|
|
"INS_EA","POLICY_NO","DED_AMT","DED_STATUS","ASGN_NO","ASGN_DATE","ASGN_TYPE","CLM_NO","CLM_OFC_ID","CLM_OFC_NM","CLM_ADDR1",
|
|
"CLM_ADDR2","CLM_CITY","CLM_ST","CLM_ZIP","CLM_CTRY","CLM_PH1","CLM_PH1X","CLM_PH2","CLM_PH2X","CLM_FAX","CLM_FAXX","CLM_CT_LN",
|
|
"CLM_CT_FN","CLM_TITLE","CLM_CT_PH","CLM_CT_PHX","CLM_EA","PAYEE_NMS","PAY_TYPE","PAY_DATE","PAY_CHKNM","PAY_AMT","AGT_CO_ID","AGT_CO_NM",
|
|
"AGT_ADDR1","AGT_ADDR2","AGT_CITY","AGT_ST","AGT_ZIP","AGT_CTRY","AGT_PH1","AGT_PH1X","AGT_PH2","AGT_PH2X","AGT_FAX","AGT_FAXX","AGT_CT_LN",
|
|
"AGT_CT_FN","AGT_CT_PH","AGT_CT_PHX","AGT_EA","AGT_LIC_NO",
|
|
"LOSS_DATE","LOSS_TYPE","LOSS_DESC","THEFT_IND","CAT_NO",
|
|
"TLOS_IND","CUST_PR","INSD_LN","INSD_FN","INSD_TITLE","INSD_CO_NM","INSD_ADDR1","INSD_ADDR2","INSD_CITY","INSD_ST","INSD_ZIP",
|
|
"INSD_CTRY","INSD_PH1","INSD_PH1X","INSD_PH2","INSD_PH2X","INSD_FAX","INSD_FAXX","INSD_EA","OWNR_LN","OWNR_FN","OWNR_TITLE","OWNR_CO_NM",
|
|
"OWNR_ADDR1","OWNR_ADDR2","OWNR_CITY","OWNR_ST","OWNR_ZIP","OWNR_CTRY","OWNR_PH1","OWNR_PH1X","OWNR_PH2","OWNR_PH2X","OWNR_FAX","OWNR_FAXX",
|
|
"OWNR_EA", "INS_PH1","INS_PH1X","INS_PH2","INS_PH2X","INS_FAX","INS_FAXX","INS_CT_LN","INS_CT_FN","INS_TITLE","INS_CT_PH","INS_CT_PHX", "LOSS_CAT"
|
|
});
|
|
var readValues = reader.NextRecord();
|
|
|
|
j.ins_co_id = readValues[0]?.ToString();
|
|
j.ins_co_nm = readValues[1]?.ToString();
|
|
j.ins_addr1 = readValues[2]?.ToString();
|
|
j.ins_addr2 = readValues[3]?.ToString();
|
|
j.ins_city = readValues[4]?.ToString();
|
|
j.ins_st = readValues[5]?.ToString();
|
|
j.ins_zip = readValues[6]?.ToString();
|
|
j.ins_ctry = readValues[7]?.ToString();
|
|
j.ins_ea = readValues[8]?.ToString();
|
|
j.policy_no = readValues[9]?.ToString();
|
|
j.ded_amt = readValues[10]?.ToString();
|
|
j.ded_status = readValues[11]?.ToString();
|
|
j.asgn_no = readValues[12]?.ToString();
|
|
j.asgn_date = readValues[13]?.ToString();
|
|
j.asgn_type = readValues[14]?.ToString();
|
|
j.clm_no = readValues[15]?.ToString();
|
|
j.clm_ofc_id = readValues[16]?.ToString();
|
|
j.clm_ofc_nm = readValues[17]?.ToString();
|
|
j.clm_addr1 = readValues[18]?.ToString();
|
|
j.clm_addr2 = readValues[19]?.ToString();
|
|
j.clm_city = readValues[20]?.ToString();
|
|
j.clm_st = readValues[21]?.ToString();
|
|
j.clm_zip = readValues[22]?.ToString();
|
|
j.clm_ctry = readValues[23]?.ToString();
|
|
j.clm_ph1 = readValues[24]?.ToString();
|
|
j.clm_ph1x = readValues[25]?.ToString();
|
|
j.clm_ph2 = readValues[26]?.ToString();
|
|
j.clm_ph2x = readValues[27]?.ToString();
|
|
j.clm_fax = readValues[28]?.ToString();
|
|
j.clm_faxx = readValues[29]?.ToString();
|
|
j.clm_ct_ln = readValues[30]?.ToString();
|
|
j.clm_ct_fn = readValues[31]?.ToString();
|
|
j.clm_title = readValues[32]?.ToString();
|
|
j.clm_ct_ph = readValues[33]?.ToString();
|
|
j.clm_ct_phx = readValues[34]?.ToString();
|
|
j.clm_ea = readValues[35]?.ToString();
|
|
j.payee_nms = readValues[36]?.ToString();
|
|
j.pay_type = readValues[37]?.ToString();
|
|
j.pay_date = readValues[38]?.ToString();
|
|
j.pay_chknm = readValues[39]?.ToString();
|
|
j.pay_amt = readValues[40]?.ToString();
|
|
j.agt_co_id = readValues[41]?.ToString();
|
|
j.agt_co_nm = readValues[42]?.ToString();
|
|
j.agt_addr1 = readValues[43]?.ToString();
|
|
j.agt_addr2 = readValues[44]?.ToString();
|
|
j.agt_city = readValues[45]?.ToString();
|
|
j.agt_st = readValues[46]?.ToString();
|
|
j.agt_zip = readValues[47]?.ToString();
|
|
j.agt_ctry = readValues[48]?.ToString();
|
|
j.agt_ph1 = readValues[49]?.ToString();
|
|
j.agt_ph1x = readValues[50]?.ToString();
|
|
j.agt_ph2 = readValues[51]?.ToString();
|
|
j.agt_ph2x = readValues[52]?.ToString();
|
|
j.agt_fax = readValues[53]?.ToString();
|
|
j.agt_faxx = readValues[54]?.ToString();
|
|
j.agt_ct_ln = readValues[55]?.ToString();
|
|
j.agt_ct_fn = readValues[56]?.ToString();
|
|
j.agt_ct_ph = readValues[57]?.ToString();
|
|
j.agt_ct_phx = readValues[58]?.ToString();
|
|
j.agt_ea = readValues[59]?.ToString();
|
|
j.agt_lic_no = readValues[60]?.ToString();
|
|
j.loss_date = readValues[61]?.ToString();
|
|
j.loss_type = readValues[62]?.ToString();
|
|
j.loss_desc = readValues[63]?.ToString();
|
|
j.theft_ind = readValues[64]?.ToString(); //BOOL
|
|
j.cat_no = readValues[65]?.ToString();
|
|
j.tlos_ind = readValues[66]?.ToString();
|
|
j.cust_pr = readValues[67]?.ToString();
|
|
j.insd_ln = readValues[68]?.ToString();
|
|
j.insd_fn = readValues[69]?.ToString();
|
|
j.insd_title = readValues[70]?.ToString();
|
|
j.insd_co_nm = readValues[71]?.ToString();
|
|
j.insd_addr1 = readValues[72]?.ToString();
|
|
j.insd_addr2 = readValues[73]?.ToString();
|
|
j.insd_city = readValues[74]?.ToString();
|
|
j.insd_st = readValues[75]?.ToString();
|
|
j.insd_zip = readValues[76]?.ToString();
|
|
j.insd_ctry = readValues[77]?.ToString();
|
|
j.insd_ph1 = readValues[78]?.ToString();
|
|
j.insd_ph1x = readValues[79]?.ToString();
|
|
j.insd_ph2 = readValues[80]?.ToString();
|
|
j.insd_ph2x = readValues[81]?.ToString();
|
|
j.insd_fax = readValues[82]?.ToString();
|
|
j.insd_faxx = readValues[82]?.ToString();
|
|
j.insd_ea = readValues[83]?.ToString();
|
|
j.ownr_ln = readValues[84]?.ToString();
|
|
j.ownr_fn = readValues[85]?.ToString();
|
|
j.ownr_title = readValues[86]?.ToString();
|
|
j.ownr_co_nm = readValues[87]?.ToString();
|
|
j.ownr_addr1 = readValues[88]?.ToString();
|
|
j.ownr_addr2 = readValues[89]?.ToString();
|
|
j.ownr_city = readValues[90]?.ToString();
|
|
j.ownr_st = readValues[91]?.ToString();
|
|
j.ownr_zip = readValues[92]?.ToString();
|
|
j.ownr_ctry = readValues[93]?.ToString();
|
|
j.ownr_ph1 = readValues[94]?.ToString();
|
|
j.ownr_ph1x = readValues[95]?.ToString();
|
|
j.ownr_ph2 = readValues[96]?.ToString();
|
|
j.ownr_ph2x = readValues[97]?.ToString();
|
|
j.ownr_fax = readValues[98]?.ToString();
|
|
j.ownr_faxx = readValues[99]?.ToString();
|
|
j.ownr_ea = readValues[100]?.ToString();
|
|
j.ins_ph1 = readValues[101]?.ToString();
|
|
j.ins_ph1x = readValues[102]?.ToString();
|
|
j.ins_ph2 = readValues[103]?.ToString();
|
|
j.ins_ph2x = readValues[104]?.ToString();
|
|
j.ins_fax = readValues[105]?.ToString();
|
|
j.ins_faxx = readValues[106]?.ToString();
|
|
j.ins_ct_ln = readValues[107]?.ToString();
|
|
j.ins_ct_fn = readValues[108]?.ToString();
|
|
j.ins_title = readValues[109]?.ToString();
|
|
j.ins_ct_ph = readValues[110]?.ToString();
|
|
j.ins_ct_phx = readValues[111]?.ToString();
|
|
j.loss_cat = readValues[112]?.ToString();
|
|
j.shopid = AppMetaData.ActiveShopId;
|
|
|
|
return;
|
|
}
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
logger.Trace(ex, "Unable to open AD1 file. Retrying. ");
|
|
retryNumber++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public static void ParseVehFile(ref dynamic j, string RootFilePath)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(j.ciecaid.Value)) { return; }
|
|
|
|
logger.Trace(@"Parsing Veh at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
|
|
|
int retryNumber = 0;
|
|
while (retryNumber < 11)
|
|
{
|
|
try
|
|
{
|
|
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + "v.veh", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
dynamic v = new JObject();
|
|
|
|
var reader = new DBFReader(fis);
|
|
reader.SetSelectFields(new string[] { "IMPACT_1",
|
|
"IMPACT_2",
|
|
"DB_V_CODE",
|
|
"PLATE_NO",
|
|
"PLATE_ST",
|
|
"V_VIN",
|
|
"V_COND",
|
|
"V_PROD_DT",
|
|
"V_MODEL_YR",
|
|
"V_MAKECODE",
|
|
"V_MAKEDESC",
|
|
"V_MODEL",
|
|
"V_TYPE", //
|
|
"V_BSTYLE",
|
|
"V_TRIMCODE",
|
|
"TRIM_COLOR",
|
|
"V_MLDGCODE",
|
|
"V_ENGINE",
|
|
|
|
"V_COLOR",
|
|
"V_TONE",
|
|
"V_STAGE",
|
|
"PAINT_CD1",
|
|
"PAINT_CD2",
|
|
"PAINT_CD3"
|
|
});
|
|
|
|
var readValues = reader.NextRecord();
|
|
|
|
dynamic d = new JObject();
|
|
d.impact1 = readValues[0]?.ToString();
|
|
d.impact2 = readValues[1]?.ToString();
|
|
|
|
j.area_of_damage = d;
|
|
|
|
v.db_v_code = readValues[2]?.ToString();
|
|
v.plate_no = readValues[3]?.ToString();
|
|
v.plate_st = readValues[4]?.ToString();
|
|
v.v_vin = readValues[5]?.ToString();
|
|
v.v_cond = readValues[6]?.ToString();
|
|
v.v_prod_dt = readValues[7]?.ToString();
|
|
v.v_model_yr = readValues[8]?.ToString();
|
|
v.v_makecode = readValues[9]?.ToString();
|
|
v.v_make_desc = readValues[10]?.ToString();
|
|
v.v_model_desc = readValues[11]?.ToString();
|
|
v.v_type = readValues[12]?.ToString();
|
|
v.v_bstyle = readValues[13]?.ToString();
|
|
v.v_trimcode = readValues[14]?.ToString();
|
|
v.trim_color = readValues[15]?.ToString();
|
|
v.v_mldgcode = readValues[16]?.ToString();
|
|
v.v_engine = readValues[17]?.ToString();
|
|
// v.v_options = readValues[18]?.ToString();
|
|
v.v_color = readValues[18]?.ToString();
|
|
v.v_tone = readValues[19]?.ToString();
|
|
v.v_stage = readValues[20]?.ToString();
|
|
|
|
dynamic p = new JObject();
|
|
p.paint_cd1 = readValues[21]?.ToString();
|
|
p.paint_cd2 = readValues[22]?.ToString();
|
|
p.paint_cd3 = readValues[23]?.ToString();
|
|
v.v_paint_codes = p;
|
|
|
|
j.vehicle = new JObject();
|
|
j.vehicle.data = v;
|
|
|
|
v.shopid = AppMetaData.ActiveShopId;
|
|
}
|
|
return;
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
logger.Trace(ex, "Unable to open VEH file. Retrying. ");
|
|
retryNumber++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void ParseTtlFile(ref dynamic j, string RootFilePath)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(j.ciecaid.Value)) { return; }
|
|
|
|
logger.Trace(@"Parsing Ttl at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
|
|
|
int retryNumber = 0;
|
|
while (retryNumber < 11)
|
|
{
|
|
try
|
|
{
|
|
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + ".ttl", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
var reader = new DBFReader(fis);
|
|
reader.SetSelectFields(new string[] { "G_TTL_AMT" });
|
|
var readValues = reader.NextRecord();
|
|
j.Claim_Total = Convert.ToDecimal(readValues[0].ToString());
|
|
}
|
|
return;
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
logger.Trace(ex, "Unable to open TTL file. Retrying. ");
|
|
retryNumber++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void ParseStlFile(ref dynamic j, string RootFilePath)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(j.ciecaid.Value)) { return; }
|
|
|
|
logger.Trace(@"Parsing Ttl at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
|
|
|
|
|
|
|
int retryNumber = 0;
|
|
while (retryNumber < 11)
|
|
{
|
|
try
|
|
{
|
|
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + ".stl", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
var reader = new DBFReader(fis);
|
|
reader.SetSelectFields(new string[] { "TTL_TYPECD", "T_HRS" });
|
|
var _rc = reader.RecordCount;
|
|
for (var i = 0; i < _rc; i++)
|
|
{
|
|
var readValues = reader.NextRecord();
|
|
switch (readValues[0])
|
|
{
|
|
|
|
//Labor Code
|
|
case "LAB":
|
|
j.BodyHrs = Convert.ToDecimal(readValues[1]);
|
|
break;
|
|
case "LAR":
|
|
j.RefHrs = Convert.ToDecimal(readValues[1]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
logger.Trace(ex, "Unable to open STL file. Retrying. ");
|
|
retryNumber++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void ParseLinFile(ref dynamic j, string RootFilePath)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(j.ciecaid.Value)) { return; }
|
|
|
|
logger.Trace(@"Parsing Ttl at: {0}{1}", RootFilePath, j.ciecaid.Value);
|
|
//j.JobSublets = new List<JobSublet>();
|
|
|
|
string _maxSupp = "";
|
|
|
|
int retryNumber = 0;
|
|
while (retryNumber < 11)
|
|
{
|
|
try
|
|
{
|
|
using (Stream fis = File.Open(RootFilePath + j.ciecaid.Value + ".lin", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
|
{
|
|
var reader = new DBFReader(fis);
|
|
reader.SetSelectFields(new string[] { "PART_TYPE", "LINE_DESC", "UNQ_SEQ", "LINE_IND" });
|
|
var _rc = reader.RecordCount;
|
|
for (var i = 0; i < _rc; i++)
|
|
{
|
|
var readValues = reader.NextRecord();
|
|
//Find Max Supplement Number
|
|
if (string.Compare(_maxSupp, readValues[3].ToString()) < 0)
|
|
{
|
|
_maxSupp = readValues[3].ToString();
|
|
}
|
|
|
|
switch (readValues[3])
|
|
{
|
|
|
|
//Labor Code
|
|
case "PAS":
|
|
case "PASL":
|
|
//j.JobSublets.Add(new JobSublet()
|
|
//{
|
|
// SubletDesc = readValues[1].ToString(),
|
|
// Unq_Seq = Convert.ToInt32(readValues[2])
|
|
//});
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
j.MaxSupplement = _maxSupp;
|
|
return;
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
logger.Trace(ex, "Unable to open LIN file. Retrying. ");
|
|
retryNumber++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|