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.model.Center; import edu.ualberta.med.biobank.model.Dispatch; import edu.ualberta.med.biobank.model.PermissionEnum; public class DispatchReadPermission implements Permission { private static final long serialVersionUID = 1L; private Integer dispatchId; private Integer centerId; public DispatchReadPermission(Integer oiId) { this.dispatchId = oiId; } public DispatchReadPermission(Center center) { this.centerId = center.getId(); } @Override public boolean isAllowed(ActionContext context) { if (dispatchId != null) { Dispatch dispatch = context.get(Dispatch.class, dispatchId, new Dispatch()); return PermissionEnum.DISPATCH_READ.isAllowed(context.getUser(), dispatch.getReceiverCenter()) || PermissionEnum.DISPATCH_READ.isAllowed(context.getUser(), dispatch.getSenderCenter()); } else if (centerId != null) return PermissionEnum.DISPATCH_READ.isAllowed(context.getUser(), context.load(Center.class, centerId)); return PermissionEnum.DISPATCH_READ.isAllowed(context.getUser()); } }