/*
* Copyright (c) 2005-2011 Grameen Foundation USA
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* See also http://www.apache.org/licenses/LICENSE-2.0.html for an
* explanation of the license and how it is applied.
*/
package org.mifos.clientportfolio.newloan.applicationservice;
import java.util.List;
import org.joda.time.DateTime;
import org.mifos.accounts.productdefinition.business.LoanOfferingBO;
import org.mifos.accounts.productdefinition.persistence.LoanProductDao;
import org.mifos.clientportfolio.newloan.domain.IndividualLoan;
import org.mifos.clientportfolio.newloan.domain.IndividualLoanImpl;
import org.mifos.clientportfolio.newloan.domain.LoanScheduleFactory;
import org.mifos.clientportfolio.newloan.domain.RecurringScheduledEventFactory;
import org.mifos.config.AccountingRules;
import org.mifos.customers.client.business.ClientBO;
import org.mifos.customers.persistence.CustomerDao;
import org.mifos.framework.util.helpers.Money;
import org.mifos.schedule.ScheduledDateGeneration;
import org.mifos.schedule.ScheduledEvent;
/**
* @deprecated work in progress Release G - do not use
*/
@Deprecated
public class IndividualLoanAssembler implements LoanAssembler {
private final LoanProductDao loanProductDao;
private final CustomerDao customerDao;
private final LoanScheduleFactory loanScheduleFactory;
private final ScheduledDateGeneration scheduledDateGeneration;
private final RecurringScheduledEventFactory scheduledEventFactory;
public IndividualLoanAssembler(LoanProductDao loanProductDao, CustomerDao customerDao, LoanScheduleFactory loanScheduleFactory,
ScheduledDateGeneration scheduledDateGeneration, RecurringScheduledEventFactory scheduledEventFactory) {
this.loanProductDao = loanProductDao;
this.customerDao = customerDao;
this.loanScheduleFactory = loanScheduleFactory;
this.scheduledDateGeneration = scheduledDateGeneration;
this.scheduledEventFactory = scheduledEventFactory;
}
@Override
public IndividualLoan assembleFrom(IndividualLoanRequest individualLoan) {
LoanOfferingBO loanProduct = this.loanProductDao.findBySystemId(individualLoan.getLoanProductId().globalIdentity());
ClientBO client = this.customerDao.findClientBySystemId(individualLoan.getClientId().globalIdentity());
int occurences = 12;
DateTime lastScheduledDate = new DateTime();
ScheduledEvent scheduledEvent = scheduledEventFactory.createScheduledEventFrom(loanProduct.getLoanOfferingMeetingValue());
List<DateTime> loanScheduleDates = scheduledDateGeneration.generateScheduledDates(occurences, lastScheduledDate, scheduledEvent, false);
// FIXME - assemble loanAmount from dto
Money loanAmount = null;
Double interestRate = Double.valueOf("10.0");
Integer interestDays = Integer.valueOf(AccountingRules.getNumberOfInterestDays());
// IndividualLoanSchedule loanSchedule = loanScheduleFactory.create(loanScheduleDates, loanProduct, loanAmount, interestRate, interestDays);
return new IndividualLoanImpl();
}
}