StoreLandingController.java
Home
/
sm-shop /
src /
main /
java /
com /
salesmanager /
shop /
admin /
controller /
merchant /
StoreLandingController.java
package com.salesmanager.shop.admin.controller.merchant;
import com.salesmanager.core.business.services.content.ContentService;
import com.salesmanager.core.business.services.merchant.MerchantStoreService;
import com.salesmanager.core.business.services.reference.language.LanguageService;
import com.salesmanager.core.model.content.Content;
import com.salesmanager.core.model.content.ContentDescription;
import com.salesmanager.core.model.content.ContentType;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.model.reference.language.Language;
import com.salesmanager.shop.admin.model.merchant.StoreLanding;
import com.salesmanager.shop.admin.model.merchant.StoreLandingDescription;
import com.salesmanager.shop.admin.model.web.Menu;
import com.salesmanager.shop.constants.Constants;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class StoreLandingController {
@Inject
MerchantStoreService merchantStoreService;
@Inject
LanguageService languageService;
@Inject
ContentService contentService;
@PreAuthorize("hasRole('STORE')")
@RequestMapping(value="/admin/store/storeLanding.html", method=RequestMethod.GET)
public String displayStoreLanding(Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
setMenu(model,request);
MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
List<Language> languages = store.getLanguages();
Content content = contentService.getByCode("LANDING_PAGE", store);
StoreLanding landing = new StoreLanding();
List<StoreLandingDescription> descriptions = new ArrayList<StoreLandingDescription>();
for(Language l : languages) {
StoreLandingDescription landingDescription = null;
if(content!=null) {
for(ContentDescription desc : content.getDescriptions()) {
if(desc.getLanguage().getCode().equals(l.getCode())) {
landingDescription = new StoreLandingDescription();
landingDescription.setDescription(desc.getMetatagDescription());
landingDescription.setHomePageContent(desc.getDescription());
landingDescription.setKeywords(desc.getMetatagKeywords());
landingDescription.setTitle(desc.getName());//name is a not empty
landingDescription.setLanguage(desc.getLanguage());
break;
}
}
}
if(landingDescription==null) {
landingDescription = new StoreLandingDescription();
landingDescription.setLanguage(l);
}
descriptions.add(landingDescription);
}
landing.setDescriptions(descriptions);
model.addAttribute("store", store);
model.addAttribute("storeLanding", landing);
return "admin-store-landing";
}
@PreAuthorize("hasRole('STORE')")
@RequestMapping(value="/admin/store/saveLanding.html", method=RequestMethod.POST)
public String saveStoreLanding(@Valid @ModelAttribute("storeLanding") StoreLanding storeLanding, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
setMenu(model,request);
MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
if (result.hasErrors()) {
return "admin-store-landing";
}
//get original store
Content content = contentService.getByCode("LANDING_PAGE", store);
if(content==null) {
content = new Content();
content.setVisible(true);
content.setContentType(ContentType.SECTION);
content.setCode("LANDING_PAGE");
content.setMerchantStore(store);
}
//List<Language> languages = store.getLanguages();
Map<String,Language> langs = languageService.getLanguagesMap();
/* for(Language l : languages) {
StoreLandingDescription landingDescription = null;
for(ContentDescription desc : content.getDescriptions()) {
if(desc.getLanguage().getCode().equals(l.getCode())) {
landingDescription = new StoreLandingDescription();
landingDescription.setDescription(desc.getMetatagDescription());
landingDescription.setHomePageContent(desc.getDescription());
landingDescription.setKeywords(desc.getMetatagKeywords());
landingDescription.setTitle(desc.getName());//name is a not empty
landingDescription.setLanguage(desc.getLanguage());
}
}
if(landingDescription==null) {
landingDescription = new StoreLandingDescription();
landingDescription.setLanguage(l);
}
descriptions.add(landingDescription);
}
landing.setDescriptions(descriptions);*/
List<StoreLandingDescription> descriptions = storeLanding.getDescriptions();
List<ContentDescription> contentDescriptions = new ArrayList<ContentDescription>();
if(descriptions!=null) {
for(StoreLandingDescription description : descriptions) {
String code = description.getLanguage().getCode();
Language l = langs.get(code);
ContentDescription contentDescription = null;
if(content.getDescriptions()!=null && content.getDescriptions().size()>0) {
for(ContentDescription desc : content.getDescriptions()) {
if(desc.getLanguage().getCode().equals(l.getCode())) {
contentDescription = desc;
desc.setMetatagDescription(description.getDescription());
desc.setName(description.getTitle());
desc.setDescription(description.getHomePageContent());
desc.setMetatagKeywords(description.getKeywords());
}
}
}
if(contentDescription==null) {
contentDescription = new ContentDescription();
contentDescription.setContent(content);
contentDescription.setLanguage(l);
contentDescription.setMetatagDescription(description.getDescription());
contentDescription.setName(description.getTitle());
contentDescription.setDescription(description.getHomePageContent());
contentDescription.setMetatagKeywords(description.getKeywords());
}
contentDescriptions.add(contentDescription);
}
content.setDescriptions(contentDescriptions);
}
contentService.saveOrUpdate(content);
model.addAttribute("success","success");
return "admin-store-landing";
}
private void setMenu(Model model, HttpServletRequest request) throws Exception {
//display menu
Map<String,String> activeMenus = new HashMap<String,String>();
activeMenus.put("store", "store");
activeMenus.put("storeLanding", "storeLanding");
@SuppressWarnings("unchecked")
Map<String, Menu> menus = (Map<String, Menu>)request.getAttribute("MENUMAP");
Menu currentMenu = (Menu)menus.get("store");
model.addAttribute("currentMenu",currentMenu);
model.addAttribute("activeMenus",activeMenus);
//
}
}