5252import de .symeda .sormas .api .task .TaskContext ;
5353import de .symeda .sormas .api .task .TaskDto ;
5454import de .symeda .sormas .api .task .TaskType ;
55+ import de .symeda .sormas .api .user .JurisdictionLevel ;
5556import de .symeda .sormas .api .user .UserDto ;
5657import de .symeda .sormas .api .user .UserReferenceDto ;
5758import de .symeda .sormas .api .user .UserRight ;
@@ -166,6 +167,7 @@ protected void addFields() {
166167 }
167168 }
168169
170+ UserDto userDto = UserProvider .getCurrent ().getUser ();
169171 DistrictReferenceDto district = null ;
170172 RegionReferenceDto region = null ;
171173 if (taskDto .getCaze () != null ) {
@@ -187,19 +189,27 @@ protected void addFields() {
187189 district = eventDto .getEventLocation ().getDistrict ();
188190 region = eventDto .getEventLocation ().getRegion ();
189191 } else {
190- UserDto userDto = UserProvider .getCurrent ().getUser ();
191192 district = userDto .getDistrict ();
192193 region = userDto .getRegion ();
193194 }
194195
195- List <UserReferenceDto > users = new ArrayList <>();
196+ final List <UserReferenceDto > users = new ArrayList <>();
196197 if (district != null ) {
197- users = FacadeProvider .getUserFacade ().getUserRefsByDistrict (district , true );
198+ users . addAll ( FacadeProvider .getUserFacade ().getUserRefsByDistrict (district , true ) );
198199 } else if (region != null ) {
199- users = FacadeProvider .getUserFacade ().getUsersByRegionAndRoles (region );
200+ users . addAll ( FacadeProvider .getUserFacade ().getUsersByRegionAndRoles (region ) );
200201 } else {
201202 // fallback - just show all users
202- users = FacadeProvider .getUserFacade ().getAllUserRefs (false );
203+ users .addAll (FacadeProvider .getUserFacade ().getAllUserRefs (false ));
204+ }
205+
206+ // Allow regional users to assign the task to national ones
207+ if (FacadeProvider .getFeatureConfigurationFacade ().isFeatureEnabled (FeatureType .ASSIGN_TASKS_TO_HIGHER_LEVEL )
208+ && userDto .getDistrict () == null
209+ && userDto .getRegion () != null ) {
210+ users .addAll (
211+ FacadeProvider .getUserFacade ()
212+ .getUsersByRegionAndRoles (null , UserRole .getWithJurisdictionLevels (JurisdictionLevel .NATION ).toArray (new UserRole [0 ])));
203213 }
204214
205215 // Validation
0 commit comments