/*
* 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.platform.accounting.ui.controller;
import java.util.ArrayList;
import java.util.List;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.mifos.platform.accounting.AccountingDto;
import org.mifos.platform.accounting.service.ExportFileInfo;
import org.mifos.platform.accounting.service.AccountingService;
import org.mifos.ui.core.controller.AdminBreadcrumbBuilder;
import org.mifos.ui.core.controller.BreadCrumbsLinks;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class AccountingDataController {
private static final Logger LOGGER = LoggerFactory.getLogger(AccountingDataController.class);
private final AccountingService accountingService;
private static final String FROM_DATE = "fromDate";
private static final String TO_DATE = "toDate";
private static final String LIST_START_DAY = "listStartDay";
@Autowired
public AccountingDataController(AccountingService accountingService) {
this.accountingService = accountingService;
}
@RequestMapping("renderAccountingData.ftl")
public final ModelAndView showAccountingDataFor(@RequestParam(value = FROM_DATE) String paramFromDate,
@RequestParam(value = TO_DATE) String paramToDate) {
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
LocalDate fromDate = fmt.parseDateTime(paramFromDate).toLocalDate();
LocalDate toDate = fmt.parseDateTime(paramToDate).toLocalDate();
Boolean hasAlreadyRanQuery = Boolean.FALSE;
String fileName = null;
List<AccountingDto> accountingData = new ArrayList<AccountingDto>();
try {
fileName = accountingService.getExportOutputFileName(fromDate, toDate).replace(".xml", "");
hasAlreadyRanQuery = accountingService.hasAlreadyRanQuery(fromDate, toDate);
accountingData = accountingService.getExportDetails(fromDate, toDate);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
ModelAndView mav = new ModelAndView("renderAccountingData");
List<BreadCrumbsLinks> breadcrumbs = new AdminBreadcrumbBuilder()
.withLink("accounting.viewaccountingexports", "renderAccountingDataCacheInfo.ftl")
.withLink(fileName, "").build();
mav.addObject("breadcrumbs", breadcrumbs);
mav.addObject("accountingData", accountingData);
mav.addObject("hasAlreadyRanQuery", hasAlreadyRanQuery);
mav.addObject("fileName", fileName);
mav.addObject("fromDate", fromDate);
mav.addObject("toDate", toDate);
return mav;
}
@RequestMapping("confirmExportsDelete.ftl")
public final ModelAndView confirmExportsDelete() {
ModelAndView mav = new ModelAndView("confirmExportsDelete");
List<BreadCrumbsLinks> breadcrumbs = new AdminBreadcrumbBuilder().withLink("accounting.viewaccountingexports",
"confirmExportsDelete.ftl").build();
mav.addObject("breadcrumbs", breadcrumbs);
return mav;
}
@RequestMapping("deleteCacheDir.ftl")
public final ModelAndView deleteCacheDir() {
ModelAndView mav = new ModelAndView("deleteCacheDir");
mav.addObject("result", accountingService.deleteCacheDir());
return mav;
}
@RequestMapping("generateExportsList.ftl")
public final ModelAndView generateList(@RequestParam(value = LIST_START_DAY) Integer listStartDay, @RequestParam(value = "type") String type) {
ModelAndView mav = new ModelAndView("generateExportsList");
List<ExportFileInfo> exports = accountingService.getLastTenExports(listStartDay);
mav.addObject("exports", exports);
mav.addObject("size", listStartDay);
return mav;
}
@RequestMapping("renderAccountingDataCacheInfo.ftl")
public final ModelAndView listAllExports() {
List<BreadCrumbsLinks> breadcrumbs = new AdminBreadcrumbBuilder().withLink("accounting.viewaccountingexports",
"renderAccountingDataCacheInfo.ftl").build();
ModelAndView mav = new ModelAndView("renderAccountingDataCacheInfo");
mav.addObject("breadcrumbs", breadcrumbs);
mav.addObject("numberDaysFromStartOfFinancialTransactions",accountingService.getNumberDaysFromStartOfFinancialTransactions());
return mav;
}
}