public void Configure(StateMachine <ECompetitionState, ECompetitionEvent> stateMachine, Competition competition)
        {
            ICompetitionWorkflowGuard competitionGuard = new CompetitionWorkflowGuard(_userPrincipalProvider,
                                                                                      competition);

            stateMachine.Configure(ECompetitionState.OnModeration)
            .PermitIf(ECompetitionEvent.Open, ECompetitionState.Opened, () => _actorProvider.CurrentActorIs(EActor.User))
            .PermitIf(ECompetitionEvent.ReturnToEdit, ECompetitionState.OnEdit, () => _actorProvider.CurrentActorIs(EActor.User) && _userPrincipalProvider.CurrentUserHasPermission(EPermission.CompetitionModerate) && competitionGuard.HasReasonToFix);
        }
 public void Configure(StateMachine <ECompetitionState, ECompetitionEvent> stateMachine, Competition @object)
 {
     stateMachine.Configure(ECompetitionState.Opened)
     .PermitIf(ECompetitionEvent.Close, ECompetitionState.Closed, () => _actorProvider.CurrentActorIs(EActor.User));
 }
        public void Configure(StateMachine <ECompetitionState, ECompetitionEvent> stateMachine, Competition competition)
        {
            ICompetitionWorkflowGuard competitionGuard = new CompetitionWorkflowGuard(_userPrincipalProvider,
                                                                                      competition);

            stateMachine.Configure(ECompetitionState.OnEdit)
            .PermitIf(ECompetitionEvent.SendToModeration, ECompetitionState.OnModeration, () => _actorProvider.CurrentActorIs(EActor.User) && competitionGuard.ActorIsCreator);
        }