PsQueueItem.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using qdr.fnd.core.pqueue.Enums;
  2. using Quadarax.Foundation.Core.Data;
  3. namespace qdr.fnd.core.pqueue
  4. {
  5. public class PsQueueItem : IPsQueueItem
  6. {
  7. #region *** Properties ***
  8. /// <inheritdoc />
  9. public string Id { get; protected set; }
  10. /// <inheritdoc />
  11. public string Owner { get; protected set; }
  12. /// <inheritdoc />
  13. public string OwnerRef { get; protected set; }
  14. /// <inheritdoc />
  15. public int Priority { get; internal set; }
  16. /// <inheritdoc />
  17. public DateTime ValidFrom { get; internal set; }
  18. /// <inheritdoc />
  19. public DateTime? ValidTo { get; internal set; }
  20. /// <inheritdoc />
  21. public DateTime Created { get; protected set; }
  22. /// <inheritdoc />
  23. public DateTime? Started { get; internal set; }
  24. /// <inheritdoc />
  25. public DateTime? Finished { get; internal set; }
  26. /// <inheritdoc />
  27. public PsStatusEnum Status { get; internal set; }
  28. /// <inheritdoc />
  29. public bool IsStatusTransient { get; internal set; }
  30. /// <inheritdoc />
  31. public int AttemptsLeft { get; internal set; }
  32. /// <inheritdoc />
  33. public int AtteptsInitial { get; internal set; }
  34. /// <inheritdoc />
  35. public string ProcessProviderClass { get; protected set; }
  36. /// <inheritdoc />
  37. public IEnumerable<ITypedArgument> Arguments { get; protected set; }
  38. /// <inheritdoc />
  39. public IEnumerable<IError> Log { get; protected set;}
  40. /// <inheritdoc />
  41. public IEnumerable<PsStatusHistory> StatusJournal { get; protected set; }
  42. #endregion
  43. #region *** Constructors ***
  44. public PsQueueItem(string id) : this(id, string.Empty, string.Empty, string.Empty, DateTime.Now)
  45. {
  46. }
  47. public PsQueueItem(string id, string owner, string ownerRef, string providerClass, DateTime created)
  48. {
  49. Id = id;
  50. Status = PsStatusEnum.New;
  51. IsStatusTransient = false;
  52. Owner = owner;
  53. OwnerRef = ownerRef;
  54. ProcessProviderClass = providerClass;
  55. Created = created;
  56. Arguments = new List<ITypedArgument>();
  57. Log = new List<IError>();
  58. StatusJournal = new List<PsStatusHistory>();
  59. }
  60. #endregion
  61. #region *** Public operations ***
  62. public void SetStatus(PsStatusEnum? status, bool isTransient, string message)
  63. {
  64. Status = status ?? Status;
  65. IsStatusTransient = isTransient;
  66. ((List<PsStatusHistory>)StatusJournal).Add(
  67. new PsStatusHistory(Status, IsStatusTransient, message)
  68. );
  69. }
  70. #endregion
  71. }
  72. }