package org.taobao88.taobao.controllers;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.taobao88.taobao.controllers.validators.PageRedactorValidator;
import org.taobao88.taobao.enterprise.entity.Images;
import org.taobao88.taobao.enterprise.entity.Recomendation;
import org.taobao88.taobao.enterprise.entity.RecomendationType;
import org.taobao88.taobao.enterprise.service.ColorsService;
import org.taobao88.taobao.enterprise.service.ImagesService;
import org.taobao88.taobao.enterprise.service.RecomendationService;
import org.taobao88.taobao.enterprise.service.RecomendationTypeService;
import org.taobao88.taobao.enterprise.service.SizesService;
@Controller
@RequestMapping(value = "/admin/pageRedactor/freeShip")
public class FreeShippingController extends MainController {
@Autowired private RecomendationTypeService recomendationTypeService;
@Autowired private RecomendationService recomendationService;
@Autowired private ImagesService imagesService;
@Autowired private ColorsService colorsService;
@Autowired private SizesService sizesService;
private PageRedactorValidator validator;
@RequestMapping(method = RequestMethod.GET)
public String index(Model model) {
Map<Integer, RecomendationType> types = recomendationTypeService.getRecomendationTypes();
model.addAttribute("free_ship", recomendationService.getAllRecomendations(types.get(3)));
model.addAttribute("free_ship_index", true);
return "pageRedactor";
}
@RequestMapping(value = "/view", method = RequestMethod.GET)
public String view(@RequestParam ("id") int id, Model model) {
model.addAttribute("fs", recomendationService.getRecomendationById(id));
model.addAttribute("free_ship_view", true);
return "pageRedactor";
}
@RequestMapping(value = "/createRecomendation", method = RequestMethod.GET)
public String createRecomendation(Model model) {
model.addAttribute("recomendation_type", 3);
model.addAttribute("free_ship_create", true);
return "pageRedactor";
}
@RequestMapping(value = "/createRecomendation/doCreate", method = RequestMethod.POST)
public String doCreate(@RequestParam("rPhoto") MultipartFile[] files,
HttpServletRequest request,
Model model) {
validator = new PageRedactorValidator();
List<String> errors = validator.validateCreateRecomendation(request);
if (errors.size() != 0) {
model.addAttribute("errors", toJSArray(errors.toArray()));
model.addAttribute("free_ship_create", true);
return "pageRedactor";
}
try {
Recomendation rec = new Recomendation();
rec.setDescription(validator.getString("rDesc"));
rec.setLongDescription(validator.getString("rDescLong"));
rec.setPrice(validator.getDouble("rPrice"));
rec.setHref(validator.getString("rHref"));
rec.setPhoto(files[0].getOriginalFilename());
rec.setType(recomendationTypeService.getTypeById(validator.getInt("rType")));
rec.setColors(colorsService.prepareColorsFromString(validator.getString("rColor")));
rec.setSizes(sizesService.prepareSizesFromString(validator.getString("rSize")));
rec.setWeight(validator.getDouble("rWeight"));
rec.setCount(validator.getInt("rCount"));
createRecomendation(files, rec);
recomendationService.addRecomendation(rec);
return "redirect:/admin/pageRedactor/freeShip";
} catch (Exception e) {
model.addAttribute("unknown_error", true);
model.addAttribute("free_ship_create", true);
return "pageRedactor";
}
}
@RequestMapping(value = "/deleteRecomendation", method = RequestMethod.GET)
public String deleteRecomendation(@RequestParam("id") int id) {
Recomendation rec = recomendationService.getRecomendationById(id);
Set<Images> images = rec.getImages();
if (images != null || !images.isEmpty()) {
for (Images img : images) {
deleteImage(img);
}
}
recomendationService.deleteRecomendation(rec);
return "redirect:/admin/pageRedactor/freeShip";
}
@RequestMapping(value = "/updateRecomendation", method = RequestMethod.GET)
public String updateRecomendation(@RequestParam("id") int id, Model model) {
Recomendation rec = recomendationService.getRecomendationById(id);
model.addAttribute("rec", rec);
model.addAttribute("free_ship_update", true);
return "pageRedactor";
}
@RequestMapping(value = "/updateRecomendation/doUpdate", method = RequestMethod.POST)
public String doUpdate(@RequestParam("rPhoto") MultipartFile[] files,
@RequestParam("id") int id,
HttpServletRequest request,
Model model) {
validator = new PageRedactorValidator();
List<String> errors = validator.validateUpdateRecomendation(request);
if (errors.size() != 0) {
model.addAttribute("errors", toJSArray(errors.toArray()));
Recomendation rec = recomendationService.getRecomendationById(id);
model.addAttribute("rec", rec);
model.addAttribute("free_ship_update", true);
return "pageRedactor";
}
try {
Recomendation rec = recomendationService.getRecomendationById(id);
rec.setDescription(validator.getString("rDesc"));
rec.setLongDescription(validator.getString("rDescLong"));
rec.setPrice(validator.getDouble("rPrice"));
rec.setHref(validator.getString("rHref"));
rec.setColors(colorsService.prepareColorsFromString(validator.getString("rColor")));
rec.setSizes(sizesService.prepareSizesFromString(validator.getString("rSize")));
rec.setCount(validator.getInt("rCount"));
rec.setWeight(validator.getDouble("rWeight"));
if (files.length > 0) {
createRecomendation(files, rec);
}
recomendationService.updateRecomendation(rec);
return "redirect:/admin/pageRedactor/freeShip";
} catch (Exception e) {
model.addAttribute("unknown_error", true);
model.addAttribute("freeShip_update", true);
return "pageRedactor";
}
}
}