Imagine you're working as a software developer for a fintech company that specializes in providing financial planning tools. The company is currently working on a project to develop a comprehensive mortgage calculator application that will help users estimate their monthly mortgage payments, including the principal and interest over the life of the loan. Your task is to build the core functionality of this mortgage calculator. The mortgage calculator should take into account the total loan amount, the interest rate (annual), the term of the loan in years, and optionally, the start date of the loan. The calculator should provide the following outputs: • Monthly repayment amount. • Total amount of interest paid over the life of the loan. • Total amount paid over the life of the loan (principal + interest). • An amortization schedule that shows the breakdown of principal and interest for each month until the loan is paid off. • The company wants this tool to be accurate and user-friendly, providing valuable insights for users planning their finances
1 Your task is to develop a C# program that implements the mortgage calculator as described. You must create a class named MortgageCalculator that contains at least the following methods: A. CalculateMonthlyRepayment(double loanAmount, double annualInterestRate, int loanTermYears): This method should calculate and return the monthly repayment amount. B. CalculateTotalInterestPaid(double loanAmount, double annualInterestRate, int loanTermYears): This method should calculate and return the total amount of interest paid over the life of the loan. C. CalculateTotalAmountPaid(double loanAmount, double annualInterestRate, int loanTermYears): This method should calculate and return the total amount paid over the life of the loan. D. GenerateAmortizationSchedule(double loanAmount, double annualInterestRate, int loanTermYears): This method should generate and return an amortization schedule. Each entry in the schedule should detail the payment number, payment amount, interest paid, principal paid, and remaining balance. E. Consider using appropriate data structures for storing and returning the amortization schedule. You may also add any additional methods or properties you think are necessary to make the MortgageCalculator class functional and user-friendly