Files
2026-03-17 09:53:09 -05:00

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
};
}
}