// public bool ProcessEAD(EADParameters input) // { // var loanbook = Path.Combine(input.BasePath, input.LoanBookFileName); // var paymentschedule = Path.Combine(input.BasePath, input.PaymentScheduleFileName); // var model = Path.Combine(input.BasePath, input.ModelFileName); // var loanbookTemp = loanbook.Replace(AppSettings.DDrive, AppSettings.ECLServer2); // Directory.CreateDirectory(Path.GetFullPath(loanbookTemp)); // File.Copy(loanbook, loanbookTemp, true); // var paymentscheduleTemp = paymentschedule.Replace(AppSettings.DDrive, AppSettings.ECLServer2); // File.Copy(paymentschedule, paymentscheduleTemp, true); // var modelTemp = model.Replace(AppSettings.DDrive, AppSettings.ECLServer2); // File.Copy(model, modelTemp,true); // string txtLocation = modelTemp;// Path.GetFullPath(modelTemp); // object _missingValue = System.Reflection.Missing.Value; // Application excel = new Application(); // var theWorkbook = excel.Workbooks.Open(txtLocation, // _missingValue, // false, // _missingValue, // _missingValue, // _missingValue, // true, // _missingValue, // _missingValue, // true, // _missingValue, // _missingValue, // _missingValue); // try // { // Worksheet startSheet = theWorkbook.Sheets[1]; // startSheet.Unprotect(AppSettings.SheetPassword); // startSheet.Cells[9, 5] = input.ReportDate.ToString("dd MMMM yyyy"); // startSheet.Cells[12, 5] = input.ConversionFactorObe; // startSheet.Cells[13, 5] = input.PrePaymentFactor; // startSheet.Cells[15, 5] = input.NonExpired; // startSheet.Cells[16, 5] = input.Expired; // startSheet.Cells[20, 5] = loanbookTemp; // var fileName = new FileInfo(loanbookTemp).Name; // startSheet.Cells[21, 5] = fileName; // startSheet.Cells[22, 5] = paymentscheduleTemp; // var psfileName = new FileInfo(paymentscheduleTemp).Name; // startSheet.Cells[23, 5] = psfileName; //// theWorkbook.Save(); // excel.Run("extract_ead_data"); // Worksheet projection = theWorkbook.Sheets[3]; // projection.Unprotect(AppSettings.SheetPassword); // for(int i=4; i<40; i++) // { // var key = Convert.ToString(projection.Cells[i, 2].Value); // if (key == "CORPORATE") // { // projection.Cells[i, 3] = input.CCF_Corporate; // } // if (key == "COMMERCIAL") // { // projection.Cells[i, 3] = input.CCF_Commercial; // } // if (key == "CONSUMER") // { // projection.Cells[i, 3] = input.CCF_Consumer; // } // if (key == "OBE") // { // projection.Cells[i, 3] = input.CCF_OBE; // } // if(input.VariableInterestRates.Any(o=>o.VIR_Name==key)) // { // projection.Cells[i, 3]=input.VariableInterestRates.FirstOrDefault(o => o.VIR_Name == key).Value; // } // if (input.ExchangeRates.Any(o => o.Currency == key)) // { // projection.Cells[i, 3] = input.ExchangeRates.FirstOrDefault(o => o.Currency == key).Value; // } // if(projection.Cells[i, 3].Value==null) // { // projection.Cells[i, 3] = 0; // } // } // theWorkbook.Save(); // excel.Run("calculate_lifetime_eads"); // theWorkbook.Save(); // theWorkbook.Close(true); // File.Copy(modelTemp, model, true); // return true; // } // catch(Exception ex) // { // Log4Net.Log.Error(ex); // Log4Net.Log.Info(DateTime.Now); // Log4Net.Log.Info(input.LoanBookFileName); // theWorkbook.Close(true); // excel.Quit(); // File.Copy(modelTemp, model, true); // return false; // } // finally // { // excel.Quit(); // } // } public bool ProcessEAD(EADParameters input) { var loanbook = Path.Combine(input.BasePath, input.LoanBookFileName); var paymentschedule = Path.Combine(input.BasePath, input.PaymentScheduleFileName); var model = Path.Combine(input.BasePath, $"{AppSettings.new_}{input.ModelFileName}"); var loanbookTemp = loanbook.Replace(AppSettings.Drive, AppSettings.ECLServer2); if (!(new FileInfo(loanbookTemp).Directory.Exists)) { Directory.CreateDirectory(new FileInfo(loanbookTemp).Directory.FullName); } var inputFile = JsonConvert.SerializeObject(input); var inputFilePath = Path.Combine(input.BasePath, AppSettings.ModelInputFileEto); var inputFilePathTemp = inputFilePath.Replace(AppSettings.Drive, AppSettings.ECLServer2); File.WriteAllText(inputFilePathTemp, inputFile); File.Copy(loanbook, loanbookTemp, true); var paymentscheduleTemp = paymentschedule.Replace(AppSettings.Drive, AppSettings.ECLServer2); File.Copy(paymentschedule, paymentscheduleTemp, true); var modelTemp = model.Replace(AppSettings.Drive, AppSettings.ECLServer2); model = model.Replace(AppSettings.new_, string.Empty); File.Copy(model, modelTemp, true); File.WriteAllText(Path.Combine(new FileInfo(loanbookTemp).Directory.FullName, AppSettings.TransferComplete), string.Empty); return(true); }
private EADParameters BuildEADParameter(Guid eclId, DateTime reportingDate, EclType eclType) { var bt_ead = new CalibrationInput_EAD_Behavioural_Terms_Processor(); var bt_ead_data = bt_ead.GetBehaviouralData(eclId, eclType); var eclTsk = new ECLTasks(eclId, eclType); var exchangeRate = eclTsk._eclEadInputAssumption.Where(o => o.Key.StartsWith("ExchangeRate")).ToList(); var er = new List <ExchangeRate>(); foreach (var _er in exchangeRate) { er.Add(new ExchangeRate { Currency = _er.InputName.ToUpper(), Value = Convert.ToDouble(_er.Value) }); } var vir = new List <VariableInterestRate>(); foreach (var _vir in eclTsk.ViR) { vir.Add(new VariableInterestRate { VIR_Name = _vir.InputName.ToUpper(), Value = Convert.ToDouble(_vir.Value) }); } var CCF_OBE = 1.0; try { CCF_OBE = Convert.ToDouble(eclTsk._eclEadInputAssumption.FirstOrDefault(o => o.Key == "ConversionFactorOBE").Value); } catch { } var PrePaymentFactor = 0.0; try { PrePaymentFactor = Convert.ToDouble(eclTsk._eclEadInputAssumption.FirstOrDefault(o => o.Key == "PrePaymentFactor)").Value); } catch { } var ccfData = new CalibrationInput_EAD_CCF_Summary_Processor().GetCCFData(eclId, eclType); var ccfOverall = ccfData.Overall_CCF ?? 0.0; var obj = new EADParameters { ExchangeRates = er, VariableInterestRates = vir, Expired = bt_ead_data.Expired, NonExpired = bt_ead_data.NonExpired, ReportDate = reportingDate, ConversionFactorObe = CCF_OBE, PrePaymentFactor = PrePaymentFactor, CCF_Commercial = ccfOverall, CCF_Consumer = ccfOverall, CCF_Corporate = ccfOverall, CCF_OBE = CCF_OBE, BasePath = AppSettings.ECLBasePath }; obj.NonExpired = 19; obj.Expired = 26; obj.ConversionFactorObe = 0.29; obj.PrePaymentFactor = 0; obj.ExchangeRates = new List <ExchangeRate>(); obj.ExchangeRates.Add(new ExchangeRate { Currency = "EUR", Value = 6.3613 }); obj.ExchangeRates.Add(new ExchangeRate { Currency = "GBP", Value = 7.00375 }); obj.ExchangeRates.Add(new ExchangeRate { Currency = "GHS", Value = 1 }); obj.ExchangeRates.Add(new ExchangeRate { Currency = "USD", Value = 5.6674 }); obj.ExchangeRates.Add(new ExchangeRate { Currency = "XOF", Value = 0.00969773921721742 }); obj.ExchangeRates.Add(new ExchangeRate { Currency = "ZAR", Value = 0.326 }); obj.VariableInterestRates = new List <VariableInterestRate>(); obj.VariableInterestRates.Add(new VariableInterestRate { VIR_Name = "EGH GHS BASE RATE", Value = 0.2595 }); obj.VariableInterestRates.Add(new VariableInterestRate { VIR_Name = "EGH USD BASE RATE", Value = 0.326 }); obj.VariableInterestRates.Add(new VariableInterestRate { VIR_Name = "GHANA REFERENCE RATE", Value = 0.1475 }); obj.CCF_Commercial = 0.9997; obj.CCF_Consumer = 0.9997; obj.CCF_Corporate = 0.9997; obj.CCF_OBE = 0.29; return(obj); }
private void RunECL(List <Loanbook_Data> batchContracts, int batchId, long affiliateId, Guid eclId, EclType eclType, EADParameters eadParam, LGDParameters lgdParam, PDParameters pdParam, FrameworkParameters frameworkParam) { var affiliatePath = Path.Combine(AppSettings.ECLBasePath, affiliateId.ToString()); var eclPath = Path.Combine(affiliatePath, eclId.ToString()); var batchPath = Path.Combine(eclPath, batchId.ToString()); var eadTemplate = Path.Combine(affiliatePath, "EADTemplate.xlsb"); var lgdTemplate = Path.Combine(affiliatePath, "LGDTemplate.xlsb"); var pdTemplate = Path.Combine(affiliatePath, "PDTemplate.xlsb"); var fraemworkTemplate = Path.Combine(affiliatePath, "FrameworkTemplate.xlsb"); var eadFile = Path.Combine(batchPath, "EAD.xlsb"); var lgdFile = Path.Combine(batchPath, "LGD.xlsb"); var pdFile = Path.Combine(batchPath, "PD.xlsb"); var fraemworkFile = Path.Combine(batchPath, "Framework.xlsb"); File.Copy(eadTemplate, eadFile); File.Copy(lgdTemplate, lgdFile); File.Copy(pdTemplate, pdFile); File.Copy(fraemworkTemplate, fraemworkFile); eadParam.ModelFileName = eadFile; eadParam.BasePath = batchPath; eadParam.LoanBookFileName = $"{batchId}_{eclId}_EAD_LoanBook.xlsx"; eadParam.PaymentScheduleFileName = $"{batchId}_{eclId}_PaymentSchedule.xlsx"; lgdParam.ModelFileName = lgdFile; lgdParam.BasePath = batchPath; lgdParam.LoanBookFileName = $"{batchId}_{eclId}_LGD_LoanBook.xlsx"; pdParam.ModelFileName = pdFile; pdParam.BasePath = batchPath; pdParam.LoanBookFileName = $"{batchId}_{eclId}_PD_LoanBook.xlsx"; frameworkParam.ModelFileName = fraemworkFile; frameworkParam.BasePath = batchPath; frameworkParam.EadFileName = "EAD.xlsb"; frameworkParam.LgdFile = "LGD.xlsb"; frameworkParam.PdFileName = "PD.xlsb"; var reportPath = Path.Combine(batchPath, "Report"); if (!Directory.Exists(reportPath)) { Directory.CreateDirectory(reportPath); } frameworkParam.ReportFolderName = reportPath; var taskList = new List <Task>(); var tskStatusLst = new List <TaskStatus> { TaskStatus.RanToCompletion, TaskStatus.Faulted }; var task1 = Task.Run(() => { var eadProcessor = new EAD_Processor().ProcessEAD(eadParam); }); taskList.Add(task1); var task2 = Task.Run(() => { var lgdProcessor = new LGD_Processor().ProcessLGD(lgdParam); }); taskList.Add(task2); var task3 = Task.Run(() => { var pdProcessor = new PD_Processor().ProcessPD(pdParam); }); taskList.Add(task3); while (0 < 1) { if (taskList.All(o => tskStatusLst.Contains(o.Status))) { foreach (var itm in taskList) { if (itm.Status != TaskStatus.RanToCompletion) { Log4Net.Log.Info("Did not run to Completion"); Log4Net.Log.Error(itm.Exception); } else { Log4Net.Log.Info("Ran to Completion"); } } break; } //Do Nothing } var fwProcessor = new Framework_Processor().ProcessFramework(frameworkParam); var fraemworkResultFile = Path.Combine(batchPath, "Framework.xlsb"); ExtractAndSaveResult(batchContracts, fraemworkResultFile, eclId, eclType); }
public bool ProcessEAD(EADParameters input) { var loanbook = Path.Combine(input.BasePath, input.LoanBookFileName); var paymentschedule = Path.Combine(input.BasePath, input.PaymentScheduleFileName); var model = Path.Combine(input.BasePath, input.ModelFileName); string txtLocation = Path.GetFullPath(model); object _missingValue = System.Reflection.Missing.Value; Application excel = new Application(); var theWorkbook = excel.Workbooks.Open(txtLocation, _missingValue, false, _missingValue, _missingValue, _missingValue, true, _missingValue, _missingValue, true, _missingValue, _missingValue, _missingValue); try { Worksheet startSheet = theWorkbook.Sheets[1]; startSheet.Unprotect(AppSettings.SheetPassword); startSheet.Cells[9, 5] = input.ReportDate.ToString("dd MMMM yyyy"); startSheet.Cells[12, 5] = input.ConversionFactorObe; startSheet.Cells[13, 5] = input.PrePaymentFactor; startSheet.Cells[15, 5] = input.NonExpired; startSheet.Cells[16, 5] = input.Expired; startSheet.Cells[20, 5] = loanbook; var fileName = new FileInfo(loanbook).Name; startSheet.Cells[21, 5] = fileName; startSheet.Cells[22, 5] = paymentschedule; var psfileName = new FileInfo(paymentschedule).Name; startSheet.Cells[23, 5] = psfileName; // theWorkbook.Save(); excel.Run("extract_ead_data"); Worksheet projection = theWorkbook.Sheets[3]; projection.Unprotect(AppSettings.SheetPassword); for (int i = 4; i < 40; i++) { var key = Convert.ToString(projection.Cells[i, 2].Value); if (key == "CORPORATE") { projection.Cells[i, 3] = input.CCF_Corporate; } if (key == "COMMERCIAL") { projection.Cells[i, 3] = input.CCF_Commercial; } if (key == "CONSUMER") { projection.Cells[i, 3] = input.CCF_Consumer; } if (key == "OBE") { projection.Cells[i, 3] = input.CCF_OBE; } if (input.VariableInterestRates.Any(o => o.VIR_Name == key)) { projection.Cells[i, 3] = input.VariableInterestRates.FirstOrDefault(o => o.VIR_Name == key).Value; } if (input.ExchangeRates.Any(o => o.Currency == key)) { projection.Cells[i, 3] = input.ExchangeRates.FirstOrDefault(o => o.Currency == key).Value; } } theWorkbook.Save(); excel.Run("calculate_lifetime_eads"); theWorkbook.Save(); theWorkbook.Close(true); } catch (Exception ex) { theWorkbook.Close(true); excel.Quit(); Console.WriteLine(ex); } finally { excel.Quit(); } return(true); }