package com.youzan.pfcase.web.caselist;
import com.youzan.pfcase.domain.Account;
import com.youzan.pfcase.domain.Caselist;
import com.youzan.pfcase.domain.Taskcases;
import com.youzan.pfcase.domain.UserDetails;
import com.youzan.pfcase.service.CaselistService;
import com.youzan.pfcase.service.TaskService;
import com.youzan.pfcase.service.TaskcaseService;
import org.dozer.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.sql.Timestamp;
import java.util.Date;
/**
* Created by sunjun on 16/8/12.
*/
@Controller
@RequestMapping("caselist")
public class CaselistController {
@Autowired
protected Mapper beanMapper;
@Autowired
protected CaselistService caselistService;
@Autowired
protected TaskcaseService taskcaseService;
@Autowired
protected TaskService taskService;
@ModelAttribute
public CaselistForm setUpForm() { return new CaselistForm(); }
//
@RequestMapping(value = "all", method = RequestMethod.GET)
public String getAllCaselist(@ModelAttribute("taskcases") Taskcases taskcases, ModelMap model) {
model.addAttribute("unpreparedTasks", taskService.getUnpreparedTasks());
model.addAttribute("allCaselist", caselistService.getAllCaselist());
model.addAttribute("active_allCase", true);
return "caselist/AllCaselist";
}
@RequestMapping("newtaskcase")
public String newTaskcase(Taskcases taskcases)
{
taskcaseService.insertTaskcases(taskcases);
return "redirect:/my";
}
//
@RequestMapping("newCaselistForm")
public String newCaselistForm(ModelMap model) {
model.addAttribute("active_newCase", true);
model.addAttribute("belongmoduleas", caselistService.getBelongmoduleas());
model.addAttribute("belongmodulebs", caselistService.getBelongmodulebs());
model.addAttribute("belongmodulecs", caselistService.getBelongmodulecs());
return "caselist/NewCaselistForm";
}
@RequestMapping("newCaselist")
public String newCaselist(@Valid CaselistForm form, BindingResult result) {
if (result.hasErrors()) {
return "caselist/NewCaselistForm";
}
Caselist caselist = beanMapper.map(form, Caselist.class);
UserDetails userDetails = (UserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
Account account = userDetails.getAccount();
caselist.setCreator(account.getUsername());
caselist.setModifier(account.getUsername());
caselistService.insertCaselist(caselist);
return "redirect:/caselist/all";
}
//
@RequestMapping(value = "editCaselistForm", method = RequestMethod.GET)
public String getCaselist(@RequestParam("caseid") int caseid, @RequestParam("action") String action, ModelMap model) {
Caselist caselist = caselistService.getCaselist(caseid);
model.addAttribute("caselist", caselist);
model.addAttribute("action", action);
if (action.equals("edit")) {
model.addAttribute("belongmoduleas", caselistService.getBelongmoduleas());
model.addAttribute("belongmodulebs", caselistService.getBelongmodulebs());
model.addAttribute("belongmodulecs", caselistService.getBelongmodulecs());
}
return "caselist/EditCaselistForm";
}
@RequestMapping("editCaselist")
public String editCaselist(@Valid @ModelAttribute("caselist") Caselist caselist, BindingResult result, ModelMap model) {
if (result.hasErrors()) {
model.addAttribute("action", "edit");
return "caselist/EditCaselistForm";
}
UserDetails userDetails = (UserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
Account account = userDetails.getAccount();
caselist.setModifier(account.getUsername());
Timestamp timestamp = new Timestamp(new Date().getTime());
caselist.setUpdatetime(timestamp);
caselistService.updateCaselist(caselist);
return "redirect:all";
}
//
@RequestMapping("delCaselist")
@ResponseBody
public String delCaselist(@RequestParam("caseid") int caseid) {
UserDetails userDetails = (UserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
String modifier = userDetails.getAccount().getUsername();
Timestamp updatetime = new Timestamp(new Date().getTime());
caselistService.delCaselist(caseid, modifier, updatetime);
return Integer.toString(caseid);
}
}