Guest User

Untitled

a guest
Jan 19th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. using Xgen.Common.Extensions;
  2. using Xgen.Domain.Common;
  3. using Xgen.Domain.Common.Events;
  4. using Xgen.Domain.Model.Forms;
  5. using Xgen.Domain.Model.Forms.Events;
  6. using Xgen.Domain.Model.LMS;
  7. using Xgen.Domain.Model.LMS.Contents;
  8.  
  9. namespace Xgen.Domain.Events.Forms
  10. {
  11. public class FormCreatedHandler :
  12. IEventHandler<FormCreatedEvent>,
  13. IEventHandler<FormChangeTitleEvent>,
  14. IEventHandler<FormStatusChangedEvent>,
  15. IEventHandler<FormChangeDescriptionEvent>,
  16. IEventHandler<FormChangePublicationDateEvent>
  17. {
  18. private readonly IUnitOfWork _unitOfWork;
  19. private readonly IFormRepository _formRepository;
  20. private readonly IContentRepository _contentRepository;
  21. private readonly IContentTagRepository _contentTagRepository;
  22.  
  23. public FormCreatedHandler(IUnitOfWork unitOfWork, IFormRepository formRepository,
  24. IContentRepository contentRepository, IContentTagRepository contentTagRepository)
  25. {
  26. _unitOfWork = unitOfWork;
  27. _formRepository = formRepository;
  28. _contentRepository = contentRepository;
  29. _contentTagRepository = contentTagRepository;
  30. }
  31.  
  32. public void Process(FormCreatedEvent @event)
  33. {
  34. if (@event.RequireAnonymity)
  35. return;
  36.  
  37. var form = _formRepository.GetAll().NotTracking().ByTrackingId(@event.Id);
  38.  
  39. var formContent = new FormContent(
  40. tenantId: form.TenantId,
  41. formId: form.Id,
  42. title: form.Title,
  43. friendlyId: form.FriendlyId,
  44. description: form.Description,
  45. status: form.Status);
  46.  
  47. formContent.ChangePublicationDate(form.PublicationDate);
  48. formContent.CategorizeIt(CategorizeIt(form));
  49.  
  50. _contentRepository.Save(formContent);
  51.  
  52. _unitOfWork.SaveChanges();
  53. }
  54.  
  55. public void Process(FormChangeTitleEvent @event)
  56. {
  57. var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
  58. if (form.RequireAnonymity)
  59. return;
  60.  
  61. var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
  62.  
  63. formContent.ChangeTitle(@event.Title, @event.FriendlyId);
  64. formContent.CategorizeIt(CategorizeIt(form));
  65.  
  66. _unitOfWork.SaveChanges();
  67. }
  68.  
  69. public void Process(FormStatusChangedEvent @event)
  70. {
  71. var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
  72. if (form.RequireAnonymity)
  73. return;
  74.  
  75. var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
  76.  
  77. formContent.ChangeStatus(@event.Status, stopPropagation: true);
  78. formContent.CategorizeIt(CategorizeIt(form));
  79.  
  80. _unitOfWork.SaveChanges();
  81. }
  82.  
  83. public void Process(FormChangeDescriptionEvent @event)
  84. {
  85. var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
  86. if (form.RequireAnonymity)
  87. return;
  88.  
  89. var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
  90.  
  91. formContent.ChangeDescription(@event.Description);
  92. formContent.CategorizeIt(CategorizeIt(form));
  93.  
  94. _unitOfWork.SaveChanges();
  95. }
  96.  
  97. public void Process(FormChangePublicationDateEvent @event)
  98. {
  99. var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
  100. if (form.RequireAnonymity)
  101. return;
  102.  
  103. var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
  104.  
  105. formContent.ChangePublicationDate(@event.Period);
  106. formContent.CategorizeIt(CategorizeIt(form));
  107.  
  108. _unitOfWork.SaveChanges();
  109. }
  110.  
  111. public ContentTag CategorizeIt(Form form)
  112. {
  113. var category = default(ContentTag);
  114. if (form.Category.IsNotNullOrEmpty())
  115. {
  116. category = _contentTagRepository.GetAll().ByName(form.Category.Label);
  117. }
  118.  
  119. return category;
  120. }
  121. }
  122. }
Add Comment
Please, Sign In to add comment