33import lombok .extern .slf4j .Slf4j ;
44import org .springframework .stereotype .Controller ;
55import org .springframework .ui .Model ;
6+ import org .springframework .validation .BindingResult ;
7+ import org .springframework .validation .ObjectError ;
68import org .springframework .web .bind .annotation .*;
9+ import org .woehlke .simpleworklist .breadcrumb .Breadcrumb ;
710import org .woehlke .simpleworklist .common .AbstractController ;
811import org .woehlke .simpleworklist .context .Context ;
912import org .woehlke .simpleworklist .project .Project ;
1013import org .woehlke .simpleworklist .task .Task ;
1114import org .woehlke .simpleworklist .task .TaskControllerService ;
15+ import org .woehlke .simpleworklist .task .TaskEnergy ;
16+ import org .woehlke .simpleworklist .task .TaskTime ;
1217import org .woehlke .simpleworklist .user .UserSessionBean ;
1318
1419import org .springframework .beans .factory .annotation .Autowired ;
20+ import org .woehlke .simpleworklist .user .account .UserAccount ;
21+
22+ import javax .validation .Valid ;
23+ import java .util .Locale ;
1524
1625/**
1726 * Created by tw on 21.02.16.
@@ -33,6 +42,73 @@ public TaskStateMoveController(
3342 this .taskControllerService = taskControllerService ;
3443 }
3544
45+ @ RequestMapping (path = "/add" , method = RequestMethod .GET )
46+ public final String addNewTaskToInboxGet (
47+ @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
48+ Locale locale , Model model
49+ ) {
50+ log .info ("addNewTaskToInboxGet" );
51+ UserAccount userAccount = userAccountLoginSuccessService .retrieveCurrentUser ();
52+ Task task = new Task ();
53+ task .setTaskState (TaskState .INBOX );
54+ task .setTaskEnergy (TaskEnergy .NONE );
55+ task .setTaskTime (TaskTime .NONE );
56+ Boolean mustChooseContext = false ;
57+ if (userSession .getContextId () == 0L ){
58+ mustChooseContext = true ;
59+ task .setContext (userAccount .getDefaultContext ());
60+ } else {
61+ Context context = contextService .findByIdAndUserAccount (userSession .getContextId (), userAccount );
62+ task .setContext (context );
63+ }
64+ Breadcrumb breadcrumb = breadcrumbService .getBreadcrumbForTaskstate (TaskState .INBOX ,locale );
65+ model .addAttribute ("breadcrumb" , breadcrumb );
66+ model .addAttribute ("mustChooseArea" , mustChooseContext );
67+ model .addAttribute ("breadcrumb" , breadcrumb );
68+ model .addAttribute ("task" , task );
69+ return "taskstate/task/add" ;
70+ }
71+
72+ @ RequestMapping (path = "/add" , method = RequestMethod .POST )
73+ public final String addNewTaskToInboxPost (
74+ @ ModelAttribute ("userSession" ) UserSessionBean userSession ,
75+ @ Valid Task task ,
76+ BindingResult result ,
77+ Locale locale ,
78+ Model model
79+ ) {
80+ log .info ("addNewTaskToInboxPost" );
81+ Context context = super .getContext (userSession );
82+ if (result .hasErrors ()) {
83+ for (ObjectError e : result .getAllErrors ()) {
84+ log .info (e .toString ());
85+ }
86+ Boolean mustChooseArea = false ;
87+ task .setContext (context );
88+ Breadcrumb breadcrumb = breadcrumbService .getBreadcrumbForTaskstate (TaskState .INBOX ,locale );
89+ model .addAttribute ("mustChooseArea" , mustChooseArea );
90+ model .addAttribute ("breadcrumb" , breadcrumb );
91+ model .addAttribute ("task" , task );
92+ return "taskstate/task/add" ;
93+ } else {
94+ task .setProject (null );
95+ if (task .getDueDate ()==null ){
96+ task .setTaskState (TaskState .INBOX );
97+ } else {
98+ task .setTaskState (TaskState .SCHEDULED );
99+ }
100+ task .setFocus (false );
101+ task .setContext (context );
102+ long maxOrderIdProject = taskMoveService .getMaxOrderIdProject (task .getProject (),context );
103+ task .setOrderIdProject (++maxOrderIdProject );
104+ long maxOrderIdTaskState = taskMoveService .getMaxOrderIdTaskState (task .getTaskState (),task .getContext ());
105+ task .setOrderIdTaskState (++maxOrderIdTaskState );
106+ task = taskService .saveAndFlush (task );
107+ log .info (task .toString ());
108+ return "redirect:/taskstate/" + task .getTaskState ().name ().toLowerCase ();
109+ }
110+ }
111+
36112 @ RequestMapping (path = "/{sourceTaskId}/changeorderto/{destinationTaskId}" , method = RequestMethod .GET )
37113 public String changeTaskOrderId (
38114 @ PathVariable ("sourceTaskId" ) Task sourceTask ,
@@ -52,8 +128,10 @@ public String changeTaskOrderId(
52128 }
53129
54130 @ RequestMapping (path = "/{taskId}/move/to/project/{projectId}" , method = RequestMethod .GET )
55- public final String moveTaskToAnotherProject (@ PathVariable ("taskId" ) Task task ,
56- @ PathVariable long projectId ) {
131+ public final String moveTaskToAnotherProject (
132+ @ PathVariable ("taskId" ) Task task ,
133+ @ PathVariable long projectId
134+ ) {
57135 if (projectId == 0 ) {
58136 task = taskMoveService .moveTaskToRootProject (task );
59137 } else {
@@ -91,7 +169,7 @@ public final String moveTaskToWaiting(@PathVariable("taskId") Task task) {
91169 return "redirect:/taskstate/waiting" ;
92170 }
93171
94- @ RequestMapping (path = "/{taskId}/move/to/taskstate// someday" , method = RequestMethod .GET )
172+ @ RequestMapping (path = "/{taskId}/move/to/taskstate/someday" , method = RequestMethod .GET )
95173 public final String moveTaskToSomeday (@ PathVariable ("taskId" ) Task task ) {
96174 log .info ("dragged and dropped " +task .getId ()+" to someday" );
97175 task = taskMoveService .moveTaskToSomeday (task );
@@ -112,14 +190,14 @@ public final String moveTaskToCompleted(@PathVariable("taskId") Task task) {
112190 return "redirect:/taskstate/completed" ;
113191 }
114192
115- @ RequestMapping (path = "/{taskId}/move/to/taskstate/ trash" , method = RequestMethod .GET )
193+ @ RequestMapping (path = "/{taskId}/move/to/trash" , method = RequestMethod .GET )
116194 public final String moveTaskToTrash (@ PathVariable ("taskId" ) Task task ) {
117195 log .info ("dragged and dropped " +task .getId ()+" to trash" );
118196 task = taskMoveService .moveTaskToTrash (task );
119197 return "redirect:/taskstate/trash" ;
120198 }
121199
122- @ RequestMapping (path = "/completed/move/to/taskstate/ trash" , method = RequestMethod .GET )
200+ @ RequestMapping (path = "/completed/move/to/trash" , method = RequestMethod .GET )
123201 public final String deleteallCompleted (
124202 @ ModelAttribute ("userSession" ) UserSessionBean userSession
125203 ) {
0 commit comments