//        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }