37 lines
1.6 KiB
C#
37 lines
1.6 KiB
C#
using LCU.API.Collections.CollectionsApiLib.Models;
|
|
using LCU.API.Collections.RepoApi.Exceptions;
|
|
using Serilog;
|
|
|
|
namespace LCU.API.Collections.RepoApi.Services
|
|
{
|
|
public class StatusService
|
|
{
|
|
/**
|
|
* Convert a Stage from a case to a RepoAccount status.
|
|
*/
|
|
public static string ConvertStatus(RepoStatus oldStage)
|
|
{
|
|
switch (oldStage)
|
|
{
|
|
case RepoStatus.PSKP: return "PSKP";
|
|
case RepoStatus.REHO: return "REHO";
|
|
case RepoStatus.RECA: return "RECA";
|
|
case RepoStatus.O4R: return "O4R";
|
|
case RepoStatus.REPO: return "REPO";
|
|
case RepoStatus.REDEEMED: return "REDEEMED";
|
|
case RepoStatus.SOLD: return "SOLD";
|
|
case RepoStatus.NOTACTIVE: return "SOLD";
|
|
case RepoStatus.INELIGIBLE: throw new IneligibleAccountException("CaseStage", "Not a Repo Case Stage.");
|
|
// case RepoStatus.UNKNOWN is meant to fall through to below.
|
|
}
|
|
|
|
Log.Fatal($"Attempt to convert status {oldStage}, but was not known.");
|
|
// The account is not necessarily ineligible, but is missing a requirement, the stage.
|
|
// This covers the problem of Temenos not providing a Case Stage Change event, and only
|
|
// a Case Creation event. The stage won't be available yet, so throw a MissingRequirement
|
|
// causing it to be retried on the hour - it should then run fine.
|
|
throw new MissingRequirementException("Case Stage", $"A valid case stage is required, {oldStage} is not valid.");
|
|
}
|
|
}
|
|
}
|