Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.38 KB | None | 0 0
  1. private static readonly Dictionary<DeclarationDocflowState, RegistrationPipelineState> declarationDocflowStateResolver = new Dictionary<DeclarationDocflowState, RegistrationPipelineState>
  2.         {
  3.             { DeclarationDocflowState.Unknown, RegistrationPipelineState.CreatedDeclaration },
  4.             { DeclarationDocflowState.Sent, RegistrationPipelineState.SentDeclaration },
  5.             { DeclarationDocflowState.HasFailedTransaction, RegistrationPipelineState.SentDeclaration },
  6.             { DeclarationDocflowState.HasSuccessfulTransaction, RegistrationPipelineState.SentDeclaration },
  7.             { DeclarationDocflowState.Successful, RegistrationPipelineState.AcceptedDeclaration },
  8.             { DeclarationDocflowState.Failed, RegistrationPipelineState.RejectedDeclaration }
  9.         };
  10.  
  11.         private static readonly Dictionary<DeclarationDemandDocflowState, RegistrationPipelineState> declarationDemandDocflowStateResolver = new Dictionary<DeclarationDemandDocflowState, RegistrationPipelineState>
  12.         {
  13.             { DeclarationDemandDocflowState.Unknown, RegistrationPipelineState.SentDeclaration },
  14.             { DeclarationDemandDocflowState.AcceptedDeclaration, RegistrationPipelineState.AcceptedDeclarationDemand },
  15.             { DeclarationDemandDocflowState.RejectedDeclaration, RegistrationPipelineState.RejectedDeclarationDemand }
  16.         };
  17.  
  18.         private static readonly Dictionary<ReportDocflowState, RegistrationPipelineState> reportDocflowStateResolver = new Dictionary<ReportDocflowState, RegistrationPipelineState>
  19.         {
  20.             { ReportDocflowState.Unknown, RegistrationPipelineState.ReportCreated },
  21.             { ReportDocflowState.Sent, RegistrationPipelineState.ReportSent },
  22.             { ReportDocflowState.HasFailedTransaction, RegistrationPipelineState.SentDeclaration },
  23.             { ReportDocflowState.HasSuccessfulTransaction, RegistrationPipelineState.SentDeclaration },
  24.             { ReportDocflowState.Successful, RegistrationPipelineState.ReportAccepted },
  25.             { ReportDocflowState.Failed, RegistrationPipelineState.ReportRejected }
  26.         };
  27.  
  28.         private static TValue SafeGet<TKey,TValue>(TKey key, Dictionary<TKey, TValue> source)
  29.             => source.ContainsKey(key)? source[key] : throw new ArgumentOutOfRangeException();
  30.  
  31.         private static RegistrationPipelineState GetFirstStageState(DeclarationDocflowState declarationDocflowState)
  32.             => SafeGet(declarationDocflowState, declarationDocflowStateResolver);
  33.  
  34.         private static RegistrationPipelineState GetSecondStageState(DeclarationDemandDocflowState declarationDemandDocflowState)
  35.             => SafeGet(declarationDemandDocflowState, declarationDemandDocflowStateResolver);
  36.  
  37.         private static RegistrationPipelineState GetThirdStageState(ReportDocflowState reportDocflowState)
  38.             => SafeGet(reportDocflowState, reportDocflowStateResolver);
  39.  
  40.  
  41.         private static RegistrationPipelineState GetState(
  42.             DeclarationDocflowState declarationDocflowState,
  43.             DeclarationDemandDocflowState declarationDemandDocflowState,
  44.             ReportDocflowState reportDocflowState)
  45.         {
  46.             try
  47.             {
  48.                 var lastStage = GetFirstStageState(declarationDocflowState);
  49.                 if (lastStage != RegistrationPipelineState.AcceptedDeclaration)
  50.                 {
  51.                     lastStage = GetSecondStageState(declarationDemandDocflowState);
  52.                     if (lastStage != RegistrationPipelineState.AcceptedDeclarationDemand)
  53.                     {
  54.                         lastStage = GetThirdStageState(reportDocflowState);
  55.                         if (lastStage != RegistrationPipelineState.ReportAccepted)
  56.                         {
  57.                             //lastStage = GetForthState(reportDemandDocflowState);
  58.                         }
  59.                     }
  60.                 }
  61.                 return lastStage;
  62.             }
  63.             catch (ArgumentOutOfRangeException e)
  64.             {
  65.                 throw new IllegalProgramException("Unknown RegistrationPipelineState")
  66.                     .AddData("DeclarationDocflowState", declarationDocflowState)
  67.                     .AddData("DeclarationDemandDocflowState", declarationDemandDocflowState)
  68.                     .AddData("ReportDocflowState", reportDocflowState)
  69.                     .AddData("Exception", e);
  70.             }
  71.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement