|
12 | 12 | import org.woehlke.simpleworklist.common.AbstractController; |
13 | 13 | import org.woehlke.simpleworklist.context.Context; |
14 | 14 | import org.woehlke.simpleworklist.task.Task; |
| 15 | +import org.woehlke.simpleworklist.task.TaskEnergy; |
| 16 | +import org.woehlke.simpleworklist.task.TaskTime; |
| 17 | +import org.woehlke.simpleworklist.taskstate.TaskMoveService; |
| 18 | +import org.woehlke.simpleworklist.taskstate.TaskState; |
15 | 19 | import org.woehlke.simpleworklist.user.account.UserAccount; |
16 | 20 | import org.woehlke.simpleworklist.breadcrumb.Breadcrumb; |
17 | 21 | import org.woehlke.simpleworklist.user.UserSessionBean; |
|
30 | 34 | public class ProjectController extends AbstractController { |
31 | 35 |
|
32 | 36 | private final ProjectControllerService projectControllerService; |
| 37 | + private final TaskMoveService taskMoveService; |
33 | 38 |
|
34 | 39 | @Autowired |
35 | | - public ProjectController(ProjectControllerService projectControllerService) { |
| 40 | + public ProjectController(ProjectControllerService projectControllerService, TaskMoveService taskMoveService) { |
36 | 41 | this.projectControllerService = projectControllerService; |
| 42 | + this.taskMoveService = taskMoveService; |
37 | 43 | } |
38 | 44 |
|
39 | 45 | @RequestMapping(path = "/{projectId}", method = RequestMethod.GET) |
@@ -230,4 +236,108 @@ public final String deleteProject( |
230 | 236 | } |
231 | 237 | } |
232 | 238 |
|
| 239 | + @RequestMapping(path = "/{projectId}/task/{sourceTaskId}/changeorderto/{destinationTaskId}", method = RequestMethod.GET) |
| 240 | + public String changeTaskOrderIdWithinAProject( |
| 241 | + @PathVariable("projectId") Project thisProject, |
| 242 | + @PathVariable("sourceTaskId") Task sourceTask, |
| 243 | + @PathVariable("destinationTaskId") Task destinationTask, |
| 244 | + @ModelAttribute("userSession") UserSessionBean userSession, |
| 245 | + Model model |
| 246 | + ){ |
| 247 | + if(!sourceTask.isInRootProject()){ |
| 248 | + userSession.setLastProjectId(sourceTask.getProject().getId()); |
| 249 | + } |
| 250 | + model.addAttribute("userSession",userSession); |
| 251 | + log.info("-------------------------------------------------"); |
| 252 | + log.info(" changeTaskOrderIdWithinAProject"); |
| 253 | + log.info("-------------------------------------------------"); |
| 254 | + log.info(" source Task: "+sourceTask.toString()); |
| 255 | + log.info("-------------------------------------------------"); |
| 256 | + log.info(" destination Task: "+destinationTask.toString()); |
| 257 | + log.info("-------------------------------------------------"); |
| 258 | + String returnUrl = "redirect:/taskstate/inbox"; |
| 259 | + boolean rootProject = sourceTask.isInRootProject(); |
| 260 | + returnUrl = "redirect:/project/0"; |
| 261 | + if(rootProject){ |
| 262 | + taskMoveService.moveOrderIdRootProject(sourceTask, destinationTask); |
| 263 | + } else { |
| 264 | + taskMoveService.moveOrderIdProject(sourceTask, destinationTask); |
| 265 | + log.info(" DONE: taskMoveService.moveOrderIdProject (2)"); |
| 266 | + returnUrl = "redirect:/project/" + sourceTask.getProject().getId(); |
| 267 | + } |
| 268 | + log.info("-------------------------------------------------"); |
| 269 | + return returnUrl; |
| 270 | + } |
| 271 | + |
| 272 | + @RequestMapping(path = "/{projectId}/task/add/", method = RequestMethod.GET) |
| 273 | + public final String addNewTaskToProjectGet( |
| 274 | + @ModelAttribute("userSession") UserSessionBean userSession, |
| 275 | + Locale locale, Model model |
| 276 | + ) { |
| 277 | + UserAccount userAccount = userAccountLoginSuccessService.retrieveCurrentUser(); |
| 278 | + Task task = new Task(); |
| 279 | + task.setTaskState(TaskState.INBOX); |
| 280 | + task.setTaskEnergy(TaskEnergy.NONE); |
| 281 | + task.setTaskTime(TaskTime.NONE); |
| 282 | + Boolean mustChooseArea = false; |
| 283 | + if(userSession.getContextId() == 0L){ |
| 284 | + mustChooseArea = true; |
| 285 | + task.setContext(userAccount.getDefaultContext()); |
| 286 | + } else { |
| 287 | + Context context = contextService.findByIdAndUserAccount(userSession.getContextId(), userAccount); |
| 288 | + task.setContext(context); |
| 289 | + } |
| 290 | + Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowRootProject(locale); |
| 291 | + model.addAttribute("breadcrumb", breadcrumb); |
| 292 | + model.addAttribute("mustChooseArea", mustChooseArea); |
| 293 | + model.addAttribute("thisProjectId", 0L); |
| 294 | + model.addAttribute("breadcrumb", breadcrumb); |
| 295 | + model.addAttribute("task", task); |
| 296 | + return "id/task/add"; |
| 297 | + } |
| 298 | + |
| 299 | + @RequestMapping(path = "/{projectId}/task/add/", method = RequestMethod.POST) |
| 300 | + public final String addNewTaskToProjectPost( |
| 301 | + @PathVariable long projectId, |
| 302 | + @ModelAttribute("userSession") UserSessionBean userSession, |
| 303 | + @Valid Task task, |
| 304 | + BindingResult result, Locale locale, Model model) { |
| 305 | + Context context = super.getContext(userSession); |
| 306 | + UserAccount userAccount = context.getUserAccount(); |
| 307 | + if (result.hasErrors()) { |
| 308 | + for (ObjectError e : result.getAllErrors()) { |
| 309 | + log.info(e.toString()); |
| 310 | + } |
| 311 | + Project thisProject = projectControllerService.getProject(projectId, userAccount, userSession); |
| 312 | + Boolean mustChooseArea = false; |
| 313 | + task.setProject(thisProject); |
| 314 | + task.setContext(thisProject.getContext()); |
| 315 | + Breadcrumb breadcrumb = breadcrumbService.getBreadcrumbForShowOneProject(thisProject,locale); |
| 316 | + model.addAttribute("mustChooseArea", mustChooseArea); |
| 317 | + model.addAttribute("thisProject", thisProject); |
| 318 | + model.addAttribute("breadcrumb", breadcrumb); |
| 319 | + model.addAttribute("task", task); |
| 320 | + //return "task/addToProject"; |
| 321 | + return "id/task/add"; |
| 322 | + } else { |
| 323 | + Project thisProject = projectService.findByProjectId(projectId); |
| 324 | + task.setProject(thisProject); |
| 325 | + task.setContext(thisProject.getContext()); |
| 326 | + if(task.getDueDate()==null){ |
| 327 | + task.setTaskState(TaskState.INBOX); |
| 328 | + } else { |
| 329 | + task.setTaskState(TaskState.SCHEDULED); |
| 330 | + } |
| 331 | + task.setFocus(false); |
| 332 | + task.setContext(context); |
| 333 | + long maxOrderIdProject = taskMoveService.getMaxOrderIdProject(task.getProject(),context); |
| 334 | + task.setOrderIdProject(++maxOrderIdProject); |
| 335 | + long maxOrderIdTaskState = taskMoveService.getMaxOrderIdTaskState(task.getTaskState(),task.getContext()); |
| 336 | + task.setOrderIdTaskState(++maxOrderIdTaskState); |
| 337 | + task = taskService.saveAndFlush(task); |
| 338 | + log.info(task.toString()); |
| 339 | + return "redirect:/project/" + projectId + "/"; |
| 340 | + } |
| 341 | + } |
| 342 | + |
233 | 343 | } |
0 commit comments