/// <summary> /// Constructor of Loan Class which sets CSVFileName, CSVDelimiter, LoanAmount, PaymentPeriod and NumberOfPeriods. /// </summary> /// <param name="csvFileName">Contains list of lenders in CSV format - (Name, Rate, Avaiable).</param> /// <param name="loanAmount">The demanding amount by borrower.</param> /// <param name="paymentPeriod">Period in months when the borrowed money is returned. Default is 36 months.</param> /// <param name="numberOfPeriods">Monthly Compound Interest Rate Period in months. Default is 12 month (anually).</param> /// <param name="csvDelimiterChar">Delimeter for the CSV file to be parsed. Default charater is comma ','.</param> public LoanCalculator(string csvFileName, long loanAmount, int paymentPeriod = 36, int numberOfPeriods = 12, long minimumLimitOfLoanAmount = 1000, long maximumLimitOfLoanAmount = 15000, char csvDelimiterChar = ',') { fileValidationStatus = csvFileName.ValidateFileName(); if (fileValidationStatus == FileValidationStatus.Validated) { CSVFileName = csvFileName; } else { throw new Exception(fileValidationStatus.ToString() + " - Check whether the file exists or the filename is correct"); } loanAmountValidationStatus = loanAmount.ValidateLoanAmount(minimumLimitOfLoanAmount, maximumLimitOfLoanAmount); if (loanAmountValidationStatus == LoanAmountValidationStatus.Validated) { LoanAmount = loanAmount; } else { throw new Exception(loanAmountValidationStatus.ToString()); } CSVDelimiterChar = csvDelimiterChar; MinimumLimitOfLoanAmount = minimumLimitOfLoanAmount; MaximumLimitOfLoanAmount = maximumLimitOfLoanAmount; PaymentPeriod = paymentPeriod; NumberOfPeriods = numberOfPeriods; LendersPool = new List<Lender>(); ParticipatingLendersList = new List<ParticipatingLender>(); }
/// <summary> /// Constructor to create triangle of claims. /// </summary> /// <param name="csvFileName">CSV file name which has claims data</param> /// <param name="csvDelimiterChar">csv delimiter. Default is ','.</param> public TriangleOfClaims(string csvFileName, char csvDelimiterChar = ',') { //Validating file name and location fileValidationStatus = csvFileName.ValidateFileName(); if (fileValidationStatus == FileValidationStatus.Validated) { CSVFileName = csvFileName; CSVDelimiterChar = csvDelimiterChar; } else { throw new Exception(fileValidationStatus.ToString() + " - Check whether the file exists or the filename is correct"); } }
/// <summary> /// Valdates the file given filename /// </summary> /// <param name="fileName">Input file as CSV</param> /// <returns></returns> public static FileValidationStatus ValidateFileName(this string fileName) { FileValidationStatus fileValidationStatus = FileValidationStatus.Validated; //Check if the file extension of the filename is csv if (System.IO.Path.GetExtension(fileName).ToLower() != ".csv") { fileValidationStatus = FileValidationStatus.CSVFileExtension_Error; return(fileValidationStatus); } //Check if the file Exists if (!System.IO.File.Exists(fileName)) { fileValidationStatus = FileValidationStatus.CSVFileDoesNotExist_Error; return(fileValidationStatus); } return(fileValidationStatus); }