Beispiel #1
0
 public static void EnsureCanChangeStatus(this Claim claim, Claim.Status targetStatus)
 {
     if (!claim.ClaimStatus.CanChangeTo(targetStatus))
     {
         throw new ClaimWrongStatusException(claim);
     }
 }
Beispiel #2
0
        public static bool CanChangeTo(this Claim.Status fromStatus, Claim.Status targetStatus)
        {
            switch (targetStatus)
            {
            case Claim.Status.Approved:
                return(new[] { Claim.Status.AddedByUser, Claim.Status.Discussed }.Contains(fromStatus));

            case Claim.Status.OnHold:
                return
                    (new[] { Claim.Status.AddedByUser, Claim.Status.Discussed, Claim.Status.AddedByMaster }.Contains(fromStatus));
            }
            throw new ArgumentException("Not implemented for target status", nameof(targetStatus));
        }
        public static bool CanChangeTo(this Claim.Status fromStatus, Claim.Status targetStatus)
        {
            switch (targetStatus)
            {
            case Claim.Status.Approved:
                return(new[] { Claim.Status.AddedByUser, Claim.Status.Discussed, Claim.Status.CheckedIn }.Contains(fromStatus));

            case Claim.Status.OnHold:
                return
                    (new[] { Claim.Status.AddedByUser, Claim.Status.Discussed, Claim.Status.AddedByMaster }
                     .Contains(fromStatus));

            case Claim.Status.AddedByUser:
                return(new[]
                       { Claim.Status.DeclinedByUser, Claim.Status.DeclinedByMaster, Claim.Status.OnHold }
                       .Contains(fromStatus));

            case Claim.Status.AddedByMaster:
                return(false);

            case Claim.Status.DeclinedByUser:
            case Claim.Status.DeclinedByMaster:
                return
                    (new[]
                {
                    Claim.Status.AddedByUser, Claim.Status.Discussed, Claim.Status.AddedByMaster,
                    Claim.Status.Approved, Claim.Status.OnHold,
                }.Contains(fromStatus));

            case Claim.Status.Discussed:
                return
                    (new[] { Claim.Status.AddedByUser, Claim.Status.Discussed, Claim.Status.AddedByMaster }
                     .Contains(fromStatus));

            case Claim.Status.CheckedIn:
                return(fromStatus == Claim.Status.Approved);

            default:
                throw new ArgumentOutOfRangeException(nameof(targetStatus), targetStatus, null);
            }
        }
Beispiel #4
0
 public static void ChangeStatusWithCheck(this Claim claim, Claim.Status targetStatus)
 {
     claim.EnsureCanChangeStatus(targetStatus);
     claim.ClaimStatus = targetStatus;
 }
Beispiel #5
0
 public static bool IsActive(this Claim.Status claimStatus) => claimStatus != Claim.Status.DeclinedByMaster &&
 claimStatus != Claim.Status.DeclinedByUser &&
 claimStatus != Claim.Status.OnHold;