package com.mossle.pim.web; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.annotation.Resource; import com.mossle.api.tenant.TenantHolder; import com.mossle.core.auth.CurrentUserHolder; import com.mossle.core.mapper.BeanMapper; import com.mossle.pim.persistence.domain.PimTask; import com.mossle.pim.persistence.manager.PimTaskManager; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("pim") public class PimTaskController { private PimTaskManager pimTaskManager; private TenantHolder tenantHolder; private CurrentUserHolder currentUserHolder; private BeanMapper beanMapper = new BeanMapper(); @RequestMapping("pim-task-index") public String index(Model model) { String userId = currentUserHolder.getUserId(); model.addAttribute("todayTasks", this.findTodayTasks(userId)); model.addAttribute("tomorrowTasks", this.findTomorrowTasks(userId)); model.addAttribute("fiveDayTasks", this.findFiveDayTasks(userId)); return "pim/pim-task-index"; } @RequestMapping("pim-task-create") public String create(@RequestParam("name") String name) { String userId = currentUserHolder.getUserId(); Date now = new Date(); PimTask pimTask = new PimTask(); pimTask.setName(name); pimTask.setStartTime(now); pimTask.setCreateTime(now); pimTask.setUserId(userId); pimTask.setPriority(5); pimTask.setStatus("active"); pimTaskManager.save(pimTask); return "redirect:/pim/pim-task-index.do"; } @RequestMapping("pim-task-complete") public String complete(@RequestParam("id") Long id) { PimTask pimTask = pimTaskManager.get(id); pimTask.setStatus("completed"); pimTask.setPriority(pimTask.getPriority() + 10); pimTaskManager.save(pimTask); return "redirect:/pim/pim-task-index.do"; } @RequestMapping("pim-task-reopen") public String reopen(@RequestParam("id") Long id) { PimTask pimTask = pimTaskManager.get(id); pimTask.setStatus("active"); pimTask.setPriority(pimTask.getPriority() - 10); pimTaskManager.save(pimTask); return "redirect:/pim/pim-task-index.do"; } @RequestMapping("pim-task-remove") public String remove(@RequestParam("id") Long id) { pimTaskManager.removeById(id); return "redirect:/pim/pim-task-index.do"; } @RequestMapping("pim-task-input") public String input(@RequestParam("id") Long id, Model model) { PimTask pimTask = pimTaskManager.get(id); model.addAttribute("model", pimTask); return "pim/pim-task-input"; } @RequestMapping("pim-task-save") public String save(@ModelAttribute PimTask pimTask) { Long id = pimTask.getId(); PimTask dest = pimTaskManager.get(id); beanMapper.copy(pimTask, dest); pimTaskManager.save(dest); return "redirect:/pim/pim-task-index.do"; } public List<PimTask> findTodayTasks(String userId) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startTime = calendar.getTime(); calendar.add(Calendar.DATE, 1); Date endTime = calendar.getTime(); String hql = "from PimTask where userId=? and startTime between ? and ? order by priority"; return pimTaskManager.find(hql, userId, startTime, endTime); } public List<PimTask> findTomorrowTasks(String userId) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, 1); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startTime = calendar.getTime(); calendar.add(Calendar.DATE, 1); Date endTime = calendar.getTime(); String hql = "from PimTask where userId=? and startTime between ? and ? order by priority"; return pimTaskManager.find(hql, userId, startTime, endTime); } public List<PimTask> findFiveDayTasks(String userId) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, 2); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startTime = calendar.getTime(); calendar.add(Calendar.DATE, 5); Date endTime = calendar.getTime(); String hql = "from PimTask where userId=? and startTime between ? and ? order by priority"; return pimTaskManager.find(hql, userId, startTime, endTime); } // ~ ====================================================================== @Resource public void setPimTaskManager(PimTaskManager pimTaskManager) { this.pimTaskManager = pimTaskManager; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } @Resource public void setCurrentUserHolder(CurrentUserHolder currentUserHolder) { this.currentUserHolder = currentUserHolder; } }