package com.salesmanager.admin.controller.tax;
import com.salesmanager.admin.common.utils.LabelUtils;
import com.salesmanager.admin.constants.Constants;
import com.salesmanager.admin.controller.ControllerConstants;
import com.salesmanager.admin.controller.pages.AbstractAdminController;
import com.salesmanager.admin.data.Menu;
import com.salesmanager.core.business.services.reference.country.CountryService;
import com.salesmanager.core.business.services.reference.zone.ZoneService;
import com.salesmanager.core.business.services.tax.TaxClassService;
import com.salesmanager.core.business.services.tax.TaxRateService;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.model.reference.country.Country;
import com.salesmanager.core.model.reference.language.Language;
import com.salesmanager.core.model.tax.taxclass.TaxClass;
import com.salesmanager.core.model.tax.taxrate.TaxRate;
import com.salesmanager.core.model.tax.taxrate.TaxRateDescription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by umesh on 3/26/17.
*/
@Controller
public class TaxRatesController extends AbstractAdminController {
private static final Logger LOGGER = LoggerFactory.getLogger(TaxRatesController.class);
private final static char DECIMALCOUNT = '3';
@Inject
LabelUtils messages;
@Inject
private CountryService countryService;
@Inject
private TaxRateService taxRateService;
@Inject
private TaxClassService taxClassService;
@Inject
private ZoneService zoneService;
@PreAuthorize("hasRole('TAX')")
@RequestMapping(value={"/admin/tax/taxrates/list.html"}, method= RequestMethod.GET)
public String displayTaxRates(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, String> activeMenus = new HashMap<String, String>();
activeMenus.put("tax", "tax");
activeMenus.put("taxrates", "taxrates");
setMenu(model, (Map<String, Menu>) request.getAttribute("MENUMAP"), "tax", activeMenus);
MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
Language language = (Language)request.getAttribute("LANGUAGE");
List<Country> countries = countryService.getCountries(language);
TaxRate taxRate = new TaxRate();
List<Language> languages = store.getLanguages();
for(Language l : languages) {
TaxRateDescription taxRateDescription = new TaxRateDescription();
taxRateDescription.setLanguage(l);
taxRate.getDescriptions().add(taxRateDescription);
}
taxRate.setMerchantStore(store);
taxRate.setCountry(store.getCountry());
List<TaxRate> taxRates = taxRateService.listByStore(store);
List<TaxClass> taxClasses = taxClassService.listByStore(store);
model.addAttribute("taxRate", taxRate);
model.addAttribute("countries", countries);
model.addAttribute("taxRates", taxRates);
model.addAttribute("taxClasses", taxClasses);
return ControllerConstants.Tiles.Tax.taxRates;
}
}