Package org.internna.ossmoney.mvc

Source Code of org.internna.ossmoney.mvc.BillsController

package org.internna.ossmoney.mvc;

import java.util.Date;
import java.util.Locale;
import java.util.TreeSet;
import java.util.Currency;
import java.text.SimpleDateFormat;
import javax.servlet.http.HttpServletRequest;
import org.internna.ossmoney.model.Bill;
import org.internna.ossmoney.model.Payee;
import org.internna.ossmoney.model.Subcategory;
import org.internna.ossmoney.services.AccountService;
import org.internna.ossmoney.model.security.UserDetails;
import org.internna.ossmoney.model.Bill.RECURRING_INTERVAL;
import org.springframework.ui.ModelMap;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.propertyeditors.CustomDateEditor;

@Controller
@RequestMapping("/financial/bills")
public final class BillsController {

  @Autowired private AccountService accountService;
  @Autowired private DashboardController dashboard;

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
    }

    @RequestMapping
    public String index(ModelMap modelMap) {
      UserDetails user = UserDetails.findCurrentUser();
      modelMap.addAttribute("bills", Bill.findByOwner(user));
        return "bills/index";
    }

    @RequestMapping("/create")
    public String createForm(HttpServletRequest request, ModelMap modelMap) {
      UserDetails user = UserDetails.findCurrentUser();
      modelMap.addAttribute("payees", Payee.findByOwner(user));
      modelMap.addAttribute("categories", new TreeSet<Subcategory>(Subcategory.findExpenseCategories(user)));
      return "bills/create";
    }

    @RequestMapping(value = "/create", method = RequestMethod.POST)
    public String createBill(RECURRING_INTERVAL period, String description, Double amount, Date due, Long payee, String locale, Long subcategory, ModelMap modelMap) {
      createBill(period, description, amount, due, payee, locale.split("_"), subcategory);
      return dashboard.index(modelMap);
    }

    protected void createBill(RECURRING_INTERVAL period, String description, Double amount, Date due, Long payee, String[] locale, Long subcategory) {
      Bill bill = new Bill();
      bill.setPeriod(period);
      bill.setAmount(amount);
      bill.setLastTrigger(due);
      bill.setDescription(description);
      bill.setPayee(Payee.findPayee(payee));
      bill.setOwner(UserDetails.findCurrentUser());
      bill.setCurrency(new Locale(locale[0], locale[1], ""));
      bill.setCategory(Subcategory.findSubcategory(subcategory));
      bill.persist();
    }

    @RequestMapping("/pay/{id}")
    public String pay(@PathVariable Long id, ModelMap modelMap) {
      UserDetails user = UserDetails.findCurrentUser();
      Bill bill = Bill.findBill(id);
      if (bill.belongsTo(user)) {
        modelMap.addAttribute("bill", bill);
        modelMap.addAttribute("origin", user.getBankAccounts(bill.getCurrency()));
        modelMap.addAttribute("currency", Currency.getInstance(bill.getCurrency()).getCurrencyCode());
      }
      return "bills/pay";
    }

    @RequestMapping(value = "/pay", method = RequestMethod.POST)
    public String pay(Long id, Long origin, Double amount, Date operationDate, ModelMap modelMap) {
      UserDetails user = UserDetails.findCurrentUser();
      Bill bill = Bill.findBill(id);
      if (bill.belongsTo(user)) {
        accountService.payBill(user, bill, origin, amount, operationDate);
      }
      return dashboard.index(modelMap);
    }

}
TOP

Related Classes of org.internna.ossmoney.mvc.BillsController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.