package org.beesden.shop.admin;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.beesden.shop.model.Config;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
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;
@Controller
@RequestMapping("/admin")
public class ConfigAdmin extends Admin {
@RequestMapping(value = "/configList", method = RequestMethod.GET)
public String configList(ModelMap model, HttpServletRequest request) {
logger.info("Received request to show list of configs");
// Check if list requires sorting and archived
String sort = request.getParameter("sort");
String dbQuery = " ORDER BY p." + (sort == null ? "name" : sort);
// Get category list from database
List<Config> itemList = new ArrayList<Config>();
itemList = configService.findAll(dbQuery);
// Update model
model = adminTemplate(model, request, "admin", "config");
model.addAttribute("itemList", itemList);
return "admin.configList";
}
@RequestMapping(value = "/config", method = RequestMethod.GET)
public String configSingle(ModelMap model, HttpServletRequest request) {
logger.info("Received request to show config form");
// Get new or existing config if requested
Config config = new Config();
if (request.getParameter("id") != null) {
config = configService.findOne("WHERE id = " + request.getParameter("id"));
}
// Update model
model = adminTemplate(model, request, "admin", "config");
model.addAttribute("config", config);
return "admin.formConfig";
}
@RequestMapping(value = "/config", method = RequestMethod.POST)
public String configSingleUpdate(HttpServletRequest request, ModelMap model, @Valid @ModelAttribute("config") Config config, BindingResult result) {
logger.info("Submitting requested config");
String message = "An error has occured whislt updating that config";
// Return form if not valid
if (result.hasErrors()) {
logger.warn("Form submission contains " + result.getErrorCount() + " errors");
model = adminTemplate(model, request, "admin", "config");
return "admin.formConfig";
} else {
// Add / Update config
if (config.getId() == null) {
config.setCreatedBy(fetchAdminUser().getName());
config.setDateCreated(new Date());
configService.objectCreate(config);
message = config.getName() + " created";
} else {
config.setLastEditedBy(fetchAdminUser().getName());
config.setLastEdited(new Date());
configService.objectUpdate(config);
message = config.getName() + " updated";
}
logger.info(message);
request.getSession().setAttribute("message", message);
// Redirect to config list page
String redirect = request.getParameter("return");
if (redirect == null) {
redirect = "/admin/configList";
}
return "redirect:" + redirect;
}
}
}