#include "Mortgage.h"

MortgageImpl::MortgageImpl (const char *name, CORBA::Float rate)
  : name_ (name)
  , rate_ (rate/100)
{
}

char *
MortgageImpl::name (void)
{
  return CORBA::string_dup (name_.c_str ());
}

CORBA::Float
MortgageImpl::rate (void)
{
  return rate_;
}

void
MortgageImpl::calculateMortgage (CORBA::Long loan_amount, CORBA::Short years)
{
  CORBA::Double annual_payments = 0.0;
  CORBA::Double monthly_payments = 0.0;

  annual_payments = ((loan_amount*pow ((1+rate_),years)*rate_))/((pow ((1+rate_),years)-1));
  monthly_payments = annual_payments/12;

  ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("Your annual payments for a $%i mortgage over %i years with %s will be: $%.2f\n"),
              loan_amount, years, name_.c_str (), annual_payments));

  ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("Your monthly payments for a $%i mortgage over %i years with %s will be: $%.2f\n"),
              loan_amount, years, name_.c_str (), monthly_payments));
}
