package edu.ualberta.med.biobank.common.permission.dispatch; import edu.ualberta.med.biobank.common.action.ActionContext; import edu.ualberta.med.biobank.common.permission.Permission; import edu.ualberta.med.biobank.common.util.DispatchState; import edu.ualberta.med.biobank.model.Dispatch; import edu.ualberta.med.biobank.model.PermissionEnum; import edu.ualberta.med.biobank.model.User; public class DispatchChangeStatePermission implements Permission { private static final long serialVersionUID = 1L; private Integer dispatchId; public DispatchChangeStatePermission(Integer oiId) { this.dispatchId = oiId; } @Override public boolean isAllowed(ActionContext context) { Dispatch dispatch = context.load(Dispatch.class, dispatchId); User user = context.getUser(); return (!DispatchState.getState(dispatch.getState()).equals( DispatchState.CREATION) && PermissionEnum.DISPATCH_CHANGE_STATE.isAllowed(user, dispatch.getReceiverCenter())) || (DispatchState.getState(dispatch.getState()).equals( DispatchState.CREATION) && PermissionEnum.DISPATCH_CHANGE_STATE.isAllowed(user, dispatch.getSenderCenter())); } }