@@ -1,6 +1,7 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.stock;
|
||||
|
||||
import static de.srsoftware.tools.Optionals.is0;
|
||||
import static de.srsoftware.tools.Optionals.nullIfEmpty;
|
||||
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
|
||||
import static de.srsoftware.umbrella.core.Constants.*;
|
||||
@@ -252,6 +253,11 @@ public class StockModule extends BaseHandler implements StockService {
|
||||
if (parentId.longValue() != 0L) {
|
||||
var target = stockDb.loadLocation(parentId.longValue());
|
||||
if (target.id() == location.id()) throw forbidden("Location must not be it`s own parent!");
|
||||
var current = target;
|
||||
while (current != null){
|
||||
if (current.id() == locationId) throw forbidden("Location cannot be contained in itself!");
|
||||
current = is0(current.parent()) ? null : stockDb.loadLocation(current.parent());
|
||||
}
|
||||
var targetOwner = target.owner().resolve();
|
||||
if (!assigned(targetOwner, user)) throw forbidden("You are not allowed to edit \"{0}\"!", target.name());
|
||||
if (!targetOwner.equals(owner)) throw unprocessable("You may not move locations from one owner ({0}) to another ({1})", owner, targetOwner);
|
||||
|
||||
Reference in New Issue
Block a user