package edu.ualberta.med.biobank.common.permission.shipment;
import edu.ualberta.med.biobank.common.action.ActionContext;
import edu.ualberta.med.biobank.common.action.exception.ModelNotFoundException;
import edu.ualberta.med.biobank.common.permission.Permission;
import edu.ualberta.med.biobank.model.Center;
import edu.ualberta.med.biobank.model.OriginInfo;
import edu.ualberta.med.biobank.model.PermissionEnum;
public class ShipmentDeletePermission implements Permission {
private static final long serialVersionUID = 1L;
private Integer shipmentId;
private Integer workingCenter;
public ShipmentDeletePermission(Integer shipId, Integer workingCenter) {
this.shipmentId = shipId;
this.workingCenter = workingCenter;
}
@Override
public boolean isAllowed(ActionContext context) {
if (shipmentId != null) {
OriginInfo ship = null;
try {
ship = context.load(OriginInfo.class, shipmentId);
return PermissionEnum.ORIGIN_INFO_DELETE.isAllowed(
context.getUser(),
ship.getReceiverSite())
&& PermissionEnum.ORIGIN_INFO_CREATE.isAllowed(
context.getUser(),
context.load(Center.class, workingCenter));
} catch (ModelNotFoundException e) {
return false;
}
}
return false;
}
}