59 lines
2.9 KiB
C#
59 lines
2.9 KiB
C#
using LCU.Library.Internal.IncentiveApiModels.Entities;
|
|
using LCU.Library.Internal.IncentiveApiModels.Enums;
|
|
|
|
namespace LCU.API.Internal.Operations.IncentiveApiLib.Extensions;
|
|
|
|
public static class ActivityExtensions
|
|
{
|
|
public static StateChangeRequirement RequiredToChangeState(this Activity activity, ActivityState targetState)
|
|
{
|
|
return activity.State switch
|
|
{
|
|
ActivityState.Accepted => targetState switch
|
|
{
|
|
ActivityState.Accepted => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.ManualReview => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.PendingReferral when activity.Type == ActivityType.Referral => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.PendingTransfer => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.Rejected => StateChangeRequirement.AdminOrPermission,
|
|
_ => StateChangeRequirement.NotAllowed
|
|
},
|
|
ActivityState.Created => targetState switch
|
|
{
|
|
ActivityState.Accepted => StateChangeRequirement.SystemOnly,
|
|
ActivityState.ManualReview => StateChangeRequirement.SystemOnly,
|
|
ActivityState.PendingReferral => StateChangeRequirement.SystemOnly,
|
|
ActivityState.Rejected => StateChangeRequirement.SystemOnly,
|
|
_ => StateChangeRequirement.NotAllowed
|
|
},
|
|
ActivityState.ManualReview => targetState switch
|
|
{
|
|
ActivityState.Accepted => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.Rejected => StateChangeRequirement.Hierarchical,
|
|
_ => StateChangeRequirement.SystemOnly
|
|
},
|
|
ActivityState.PendingReferral => targetState switch
|
|
{
|
|
ActivityState.Accepted => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.Transferred => StateChangeRequirement.Hierarchical,
|
|
_ => StateChangeRequirement.NotAllowed
|
|
},
|
|
ActivityState.PendingTransfer => targetState switch
|
|
{
|
|
ActivityState.Accepted => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.Transferred => StateChangeRequirement.Hierarchical,
|
|
_ => StateChangeRequirement.NotAllowed
|
|
},
|
|
ActivityState.Rejected => targetState switch
|
|
{
|
|
ActivityState.Accepted => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.ManualReview => StateChangeRequirement.AdminOrPermission,
|
|
ActivityState.PendingReferral when activity.Type == ActivityType.Referral => StateChangeRequirement.AdminOrPermission,
|
|
_ => StateChangeRequirement.NotAllowed
|
|
},
|
|
ActivityState.Transferred => StateChangeRequirement.NotAllowed,
|
|
_ => StateChangeRequirement.NotAllowed
|
|
};
|
|
}
|
|
}
|