Package org.internna.ossmoney.services.impl

Source Code of org.internna.ossmoney.services.impl.UserService

package org.internna.ossmoney.services.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.internna.ossmoney.model.Widget;
import org.internna.ossmoney.model.Category;
import org.internna.ossmoney.model.Dashboard;
import org.internna.ossmoney.model.Subcategory;
import org.internna.ossmoney.model.budget.Budget;
import org.internna.ossmoney.services.AdminService;
import org.internna.ossmoney.model.security.Authority;
import org.internna.ossmoney.model.security.UserDetails;
import org.internna.ossmoney.model.budget.MonthlyBudget;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public final class UserService implements org.internna.ossmoney.services.UserService {

  private static final Log logger = LogFactory.getLog(UserService.class);

  @Autowired private AdminService adminService;

  private String salt;
  private boolean createBasicSpanishFinancialInstitutions = true;

  public void setSalt(String salt) {
    this.salt = salt;
  }

  public void setCreateBasicSpanishFinancialInstitutions(boolean createBasicSpanishFinancialInstitutions) {
    this.createBasicSpanishFinancialInstitutions = createBasicSpanishFinancialInstitutions;
  }

  @Override public void register(String username, String password, String name, String email) {
    createUser(username, password, name, email, createDashBoDashboard());
    logger.info("Registered new user[" + username + "]");
  }

  protected UserDetails createUser(String username, String password, String name, String email, Dashboard dashboard) {
    Authority authority = Authority.findByName(Authority.ROLE_USER);
    UserDetails user = new UserDetails();
    user.setSalt(salt);
    user.setName(name);
    user.setEmail(email);
    user.setUsername(username);
    user.setPassword(password);
    user.setDashboard(dashboard);
    user.setEnabled(Boolean.TRUE);
    user.getRoles().add(authority);
    authority.getUsers().add(user);
    user.persist();
    adminService.createPayee(user, user.getName());
    createSubcategories(user);
    user.setBudget(createBudget(user));
    if (createBasicSpanishFinancialInstitutions) {
      createBasicSpanishInstitutions(user);
    }
    authority.merge();
    user.merge();
    return user;
  }

  protected void createSubcategories(UserDetails user) {
    Category transferIn = Category.findCategory(2L);
    Category transferOut = Category.findCategory(1L);
    Category investmentIn = Category.findCategory(4L);
    Category investmentOut = Category.findCategory(3L);
    Category financial = Category.findByCategory("category.financial");
    Category household = Category.findByCategory("category.household");
    Category leisure = Category.findByCategory("category.leisure");
    Category salary = Category.findByCategory("category.salary");
    Category automobile = Category.findByCategory("category.automobile");
    Category bills = Category.findByCategory("category.bills");
    Category healthcare = Category.findByCategory("category.healthcare");
    Category taxesIn = Category.findCategory(13L);
    Category taxesOut = Category.findCategory(12L);
    Category travel = Category.findByCategory("category.travel");
    Category sporadic = Category.findByCategory("category.sporadic");
    Category personal = Category.findByCategory("category.personal");
    Category children = Category.findByCategory("category.children");
    Category pet = Category.findByCategory("category.pet");

    Subcategory.createInstance("category.transfer.out", transferOut, user);
    Subcategory.createInstance("category.transfer.in", transferIn, user);
    Subcategory.createInstance("category.cc.payment.out", transferOut, user);
    Subcategory.createInstance("category.cc.payment.in", transferIn, user);
    Subcategory.createInstance("category.investment.buy", investmentOut, user);
    Subcategory.createInstance("category.investment.sell", investmentIn, user);
    Subcategory.createInstance("category.investment.interest", investmentIn, user);
    Subcategory.createInstance("category.bankcharges", financial, user);
    Subcategory.createInstance("category.interestpaid", financial, user);
    Subcategory.createInstance("category.mortgage", financial, user);
    Subcategory.createInstance("category.furnishing", household, user);
    Subcategory.createInstance("category.improvement", household, user);
    Subcategory.createInstance("category.dues", household, user);
    Subcategory.createInstance("category.cleaning", household, user);
    Subcategory.createInstance("category.rent", household, user);
    Subcategory.createInstance("category.yard", household, user);
    Subcategory.createInstance("category.homeinsurance", household, user);
    Subcategory.createInstance("category.restaurant", leisure, user);
    Subcategory.createInstance("category.cinema", leisure, user);
    Subcategory.createInstance("category.videogames", leisure, user);
    Subcategory.createInstance("category.books", leisure, user);
    Subcategory.createInstance("category.movies", leisure, user);
    Subcategory.createInstance("category.sports", leisure, user);
    Subcategory.createInstance("category.music", leisure, user);
    Subcategory.createInstance("category.casino", leisure, user);
    Subcategory.createInstance("category.wages", salary, user);
    Subcategory.createInstance("category.gross", salary, user);
    Subcategory.createInstance("category.bonus", salary, user);
    Subcategory.createInstance("category.overtime", salary, user);
    Subcategory.createInstance("category.allowance", salary, user);
    Subcategory.createInstance("category.allowance", automobile, user);
    Subcategory.createInstance("category.carpayment", automobile, user);
    Subcategory.createInstance("category.gasoline", automobile, user);
    Subcategory.createInstance("category.insurance", automobile, user);
    Subcategory.createInstance("category.maintenance", automobile, user);
    Subcategory.createInstance("category.tv", bills, user);
    Subcategory.createInstance("category.phone", bills, user);
    Subcategory.createInstance("category.cellphone", bills, user);
    Subcategory.createInstance("category.electricity", bills, user);
    Subcategory.createInstance("category.garbage", bills, user);
    Subcategory.createInstance("category.gym", bills, user);
    Subcategory.createInstance("category.membership", bills, user);
    Subcategory.createInstance("category.gas", bills, user);
    Subcategory.createInstance("category.newspaper", bills, user);
    Subcategory.createInstance("category.internet", bills, user);
    Subcategory.createInstance("category.water", bills, user);
    Subcategory.createInstance("category.hospital", healthcare, user);
    Subcategory.createInstance("category.dental", healthcare, user);
    Subcategory.createInstance("category.eyes", healthcare, user);
    Subcategory.createInstance("category.medical", healthcare, user);
    Subcategory.createInstance("category.drugs", healthcare, user);
    Subcategory.createInstance("category.insurance", healthcare, user);
    Subcategory.createInstance("category.personalcare", healthcare, user);
    Subcategory.createInstance("category.federal", taxesOut, user);
    Subcategory.createInstance("category.realestate", taxesOut, user);
    Subcategory.createInstance("category.taxesautomobile", taxesOut, user);
    Subcategory.createInstance("category.ss", taxesOut, user);
    Subcategory.createInstance("category.renttaxes", taxesOut, user);
    Subcategory.createInstance("category.deduction", taxesIn, user);
    Subcategory.createInstance("category.vacation", travel, user);
    Subcategory.createInstance("category.tickets", travel, user);
    Subcategory.createInstance("category.hotel", travel, user);
    Subcategory.createInstance("category.gifts", sporadic, user);
    Subcategory.createInstance("category.donations", sporadic, user);
    Subcategory.createInstance("category.clothing", personal, user);
    Subcategory.createInstance("category.food", personal, user);
    Subcategory.createInstance("category.supplies", personal, user);
    Subcategory.createInstance("category.daycare", children, user);
    Subcategory.createInstance("category.toys", children, user);
    Subcategory.createInstance("category.food", pet, user);
    Subcategory.createInstance("category.supplies", pet, user);
    Subcategory.createInstance("category.veterinarian", pet, user);
  }

  protected Dashboard createDashBoDashboard() {
    Dashboard dashboard = new Dashboard();
    dashboard.setColumns(3);
    dashboard.persist();
    Widget widget = Widget.createInstance("accounts.favorites.title", 1, 1, "/financial/accounts/favorites", null);
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("widgets.remainder.title", 1, 2, "/financial/widgets/remainder/", "30");
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("widgets.networth.title", 1, 3, "/financial/widgets/networth/", "5");
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("budget.widget.title", 2, 1, "/financial/budget/graph/", "expanded");
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("accounts.expensesbycategory.dashtitle", 2, 2, "/financial/widgets/expenses_by_category/", "last_quarter");
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("accounts.expensesovertime.title", 2, 3, "/financial/widgets/expenses_over_time/", "5");
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("accounts.incomevsexpenses.title", 3, 1, "/financial/widgets/income_vs_expenses/", "previous_month");
    dashboard.addWidget(widget);
    widget.persist();
    widget = Widget.createInstance("widgets.incomevsexpensesovertime.title", 3, 2, "/financial/widgets/income_vs_expenses_over_time/", "11");
    dashboard.addWidget(widget);
    widget.persist();
    dashboard.merge();
    return dashboard;
  }

  protected Budget createBudget(UserDetails user) {
    Budget budget = new Budget();
    budget.setOwner(user);
    budget.persist();
    for (int i = 0; i < 12; i++) {
      MonthlyBudget monthlyBudget = new MonthlyBudget();
      monthlyBudget.setBudget(budget);
      monthlyBudget.setBudgetedMonth(i);
      monthlyBudget.persist();
      budget.getMonthlyBudgets().add(monthlyBudget);
    }
    budget.merge();
    return budget;
  }

  protected void createBasicSpanishInstitutions(UserDetails user) {
    adminService.createInstitution(user, "Banco Popular", "http://www.bancopopular.es", "http://depositos.com.es/imagenes/2008/11/bancopopular.jpg");
    adminService.createInstitution(user, "Banco Popular-e", "http://www.bancopopular-e.com", "http://www.bancopopular-e.com/esp/ecom/pc/pweb/bin/img/ecom_logo.gif");
    adminService.createInstitution(user, "Bankinter", "https://www.ebankinter.com", "https://www.bankinter.com/www/cacheables/img/bankinter.v1.cache.gif");
    adminService.createInstitution(user, "iBanesto", "http://www.ibanesto.com", "http://ibanesto.mobi/images/logo_banesto.jpg");
    adminService.createInstitution(user, "ING Direct", "http://www.ingdirect.es/", "http://www.ingdirect.es/home/images/logo.gif");
  }

}
TOP

Related Classes of org.internna.ossmoney.services.impl.UserService

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.