@@ -315,11 +315,9 @@ public void moveTaskToTaskAndChangeTaskOrderInTaskstate(@NotNull Task sourceTask
315315 boolean notEquals = ! sourceTask .equalsByUniqueConstraint (destinationTask );
316316 boolean sameContext = sourceTask .hasSameContextAs (destinationTask );
317317 boolean sameTaskType = sourceTask .hasSameTaskTypetAs (destinationTask );
318- boolean srcIsBelowDestinationTask = sourceTask .isBelowByTaskState (destinationTask );
319- if (
320- notEqualsId && notEquals &&
321- sameContext && sameTaskType
322- ) {
318+ boolean go = notEqualsId && notEquals && sameContext && sameTaskType ;
319+ if ( go ) {
320+ boolean srcIsBelowDestinationTask = sourceTask .isBelowByTaskState (destinationTask );
323321 if (srcIsBelowDestinationTask ) {
324322 this .moveTasksDownByTaskState ( sourceTask , destinationTask );
325323 } else {
@@ -335,12 +333,13 @@ public void moveTaskToTaskAndChangeTaskOrderInProjectRoot(@NotNull Task sourceTa
335333 boolean destinationTaskRoot = destinationTask .isInRootProject ();
336334 boolean sameContext = sourceTask .hasSameContextAs (destinationTask );
337335 boolean sameProject = sourceTask .hasSameProjectAs (destinationTask );
338- boolean srcIsBelowDestinationTask = sourceTask .isBelowByProject (destinationTask );
339- if (sameContext && sameProject && sourceTaskRoot && destinationTaskRoot ) {
336+ boolean go = sameContext && sameProject && sourceTaskRoot && destinationTaskRoot ;
337+ if ( go ) {
338+ boolean srcIsBelowDestinationTask = sourceTask .isBelowByProject (destinationTask );
340339 if (srcIsBelowDestinationTask ) {
341- this .moveTasksDownByProject (sourceTask , destinationTask );
340+ this .moveTasksDownByProjectRoot (sourceTask , destinationTask );
342341 } else {
343- this .moveTasksUpByProject (sourceTask , destinationTask );
342+ this .moveTasksUpByProjectRoot (sourceTask , destinationTask );
344343 }
345344 }
346345 }
@@ -437,6 +436,44 @@ private void moveTasksDownByTaskState(@NotNull Task sourceTask, @NotNull Task de
437436 taskRepository .saveAll (tasks );
438437 }
439438
439+ private void moveTasksUpByProjectRoot (@ NotNull Task sourceTask , @ NotNull Task destinationTask ) {
440+ Context context = sourceTask .getContext ();
441+ long lowerOrderIdProject = destinationTask .getOrderIdProject ();
442+ long higherOrderIdProject = sourceTask .getOrderIdProject ();
443+ List <Task > tasks = taskRepository .getTasksByOrderIdProjectRootBetweenLowerTaskAndHigherTask (
444+ lowerOrderIdProject ,
445+ higherOrderIdProject ,
446+ context
447+ );
448+ for (Task task :tasks ){
449+ task .moveUpByProject ();
450+ }
451+ sourceTask .setOrderIdProject (destinationTask .getOrderIdProject ());
452+ destinationTask .moveUpByProject ();
453+ tasks .add (sourceTask );
454+ tasks .add (destinationTask );
455+ taskRepository .saveAll (tasks );
456+ }
457+
458+ private void moveTasksDownByProjectRoot (@ NotNull Task sourceTask , @ NotNull Task destinationTask ) {
459+ Context context = sourceTask .getContext ();
460+ long lowerOrderIdProject = sourceTask .getOrderIdProject ();
461+ long higherOrderIdProject = destinationTask .getOrderIdProject ();
462+ List <Task > tasks = taskRepository .getTasksByOrderIdProjectRootBetweenLowerTaskAndHigherTask (
463+ lowerOrderIdProject ,
464+ higherOrderIdProject ,
465+ context
466+ );
467+ for (Task task :tasks ){
468+ task .moveDownByProject ();
469+ }
470+ sourceTask .setOrderIdProject (destinationTask .getOrderIdProject ());
471+ destinationTask .moveDownByProject ();
472+ tasks .add (sourceTask );
473+ tasks .add (destinationTask );
474+ taskRepository .saveAll (tasks );
475+ }
476+
440477 private void moveTasksUpByProject (@ NotNull Task sourceTask , @ NotNull Task destinationTask ) {
441478 Context context = sourceTask .getContext ();
442479 Project project = sourceTask .getProject ();
0 commit comments