InvalidTaskStateException.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. public InvalidTaskStateException(ITaskItem task, params ProcessStatusEnum[] expectedStatuses) : base(
  25. GetMessage(task, expectedStatuses))
  26. {
  27. Data.Add(CS_EXCC_ENT_TYPE, task.GetType());
  28. Data.Add(CS_EXCC_ENT_ID, task.Id);
  29. Data.Add(CS_EXCC_ENT_CURRENT_STA, task.Status);
  30. Data.Add(CS_EXCC_ENT_NEW_STA, string.Empty);
  31. Data.Add(CS_EXCC_ENT_EXCEPTED_STA, expectedStatuses);
  32. }
  33. #endregion
  34. #region *** Private Operations ***
  35. private static string GetMessage(ITaskItem task, ProcessStatusEnum newStatus,
  36. params ProcessStatusEnum[] expectedStatuses)
  37. {
  38. 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)}";
  39. }
  40. private static string GetMessage(ITaskItem task, params ProcessStatusEnum[] expectedStatuses)
  41. {
  42. return $"Invalid task state exception. Task: {task.GetType()}[{task.Id}] is in state {task.Status}. Expected states: {string.Join(", ", expectedStatuses)}";
  43. }
  44. #endregion
  45. }
  46. }