Ejemplo n.º 1
0
		private bool CanExecuteOperation(Operations.ReportingOperation op, ReportingWorklistItemKey itemKey, bool disableIfSubmitForReview)
		{
			// if there is no proc step ref, operation is not available
			if (itemKey.ProcedureStepRef == null)
				return false;

			var procedureStep = this.PersistenceContext.Load<ProcedureStep>(itemKey.ProcedureStepRef);

			// for now, all of these operations assume they are operating on a ReportingProcedureStep
			// this may need to change in future
			if (!procedureStep.Is<ReportingProcedureStep>())
				return false;

			// Special Case:
			// If the user has the SubmitForReview token and the step is unassigned, disable the operation
			if (disableIfSubmitForReview
				&& procedureStep.AssignedStaff == null
				&& Thread.CurrentPrincipal.IsInRole(AuthorityTokens.Workflow.Report.SubmitForReview))
			{
				return false;
			}

			return op.CanExecute(procedureStep.As<ReportingProcedureStep>(), this.CurrentUserStaff);
		}