InvalidTaskStateException.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Quadarax.Foundation.Core.Business.Processor.Enums;
  2. using Quadarax.Foundation.Core.Business.Processor.Task;
  3. // ReSharper disable InconsistentNaming
  4. namespace Quadarax.Foundation.Core.Business.Processor.Exceptons
  5. {
  6. public sealed class InvalidTaskStateException : Exception
  7. {
  8. #region *** Constants ***
  9. private const string CS_EXCC_ENT_TYPE = "EntityType";
  10. private const string CS_EXCC_ENT_ID = "EntityIdentifier";
  11. private const string CS_EXCC_ENT_CURRENT_STA = "CurrentStatus";
  12. private const string CS_EXCC_ENT_NEW_STA = "NewStatus";
  13. private const string CS_EXCC_ENT_EXCEPTED_STA = "ExpectedStatus";
  14. #endregion
  15. #region *** Constructors ***
  16. public InvalidTaskStateException(ITaskItem task, ProcessStatusEnum newStatus, params ProcessStatusEnum[] expectedStatuses) : base(GetMessage(task, newStatus, expectedStatuses))
  17. {
  18. Data.Add(CS_EXCC_ENT_TYPE, task.GetType());
  19. Data.Add(CS_EXCC_ENT_ID, task.Id);
  20. Data.Add(CS_EXCC_ENT_CURRENT_STA, task.Status);
  21. Data.Add(CS_EXCC_ENT_NEW_STA, newStatus);
  22. Data.Add(CS_EXCC_ENT_EXCEPTED_STA, expectedStatuses);
  23. }
  24. #endregion
  25. #region *** Private Operations ***
  26. private static string GetMessage(ITaskItem task, ProcessStatusEnum newStatus,
  27. params ProcessStatusEnum[] expectedStatuses)
  28. {
  29. return $"Invalid task state exception. Task: {task.GetType()}[{task.Id}] is in state {task.Status} and cannot be changed to {newStatus}. Expected states: {string.Join(", ", expectedStatuses)}";
  30. }
  31. #endregion
  32. }
  33. }