Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Xgen.Common.Extensions;
- using Xgen.Domain.Common;
- using Xgen.Domain.Common.Events;
- using Xgen.Domain.Model.Forms;
- using Xgen.Domain.Model.Forms.Events;
- using Xgen.Domain.Model.LMS;
- using Xgen.Domain.Model.LMS.Contents;
- namespace Xgen.Domain.Events.Forms
- {
- public class FormCreatedHandler :
- IEventHandler<FormCreatedEvent>,
- IEventHandler<FormChangeTitleEvent>,
- IEventHandler<FormStatusChangedEvent>,
- IEventHandler<FormChangeDescriptionEvent>,
- IEventHandler<FormChangePublicationDateEvent>
- {
- private readonly IUnitOfWork _unitOfWork;
- private readonly IFormRepository _formRepository;
- private readonly IContentRepository _contentRepository;
- private readonly IContentTagRepository _contentTagRepository;
- public FormCreatedHandler(IUnitOfWork unitOfWork, IFormRepository formRepository,
- IContentRepository contentRepository, IContentTagRepository contentTagRepository)
- {
- _unitOfWork = unitOfWork;
- _formRepository = formRepository;
- _contentRepository = contentRepository;
- _contentTagRepository = contentTagRepository;
- }
- public void Process(FormCreatedEvent @event)
- {
- if (@event.RequireAnonymity)
- return;
- var form = _formRepository.GetAll().NotTracking().ByTrackingId(@event.Id);
- var formContent = new FormContent(
- tenantId: form.TenantId,
- formId: form.Id,
- title: form.Title,
- friendlyId: form.FriendlyId,
- description: form.Description,
- status: form.Status);
- formContent.ChangePublicationDate(form.PublicationDate);
- formContent.CategorizeIt(CategorizeIt(form));
- _contentRepository.Save(formContent);
- _unitOfWork.SaveChanges();
- }
- public void Process(FormChangeTitleEvent @event)
- {
- var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
- if (form.RequireAnonymity)
- return;
- var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
- formContent.ChangeTitle(@event.Title, @event.FriendlyId);
- formContent.CategorizeIt(CategorizeIt(form));
- _unitOfWork.SaveChanges();
- }
- public void Process(FormStatusChangedEvent @event)
- {
- var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
- if (form.RequireAnonymity)
- return;
- var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
- formContent.ChangeStatus(@event.Status, stopPropagation: true);
- formContent.CategorizeIt(CategorizeIt(form));
- _unitOfWork.SaveChanges();
- }
- public void Process(FormChangeDescriptionEvent @event)
- {
- var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
- if (form.RequireAnonymity)
- return;
- var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
- formContent.ChangeDescription(@event.Description);
- formContent.CategorizeIt(CategorizeIt(form));
- _unitOfWork.SaveChanges();
- }
- public void Process(FormChangePublicationDateEvent @event)
- {
- var form = _formRepository.GetAll().NotTracking().Eager(_ => _.Category).GetById(@event.Id);
- if (form.RequireAnonymity)
- return;
- var formContent = _contentRepository.GetFormContents().Eager(_ => _.Content).ByFormId(@event.Id);
- formContent.ChangePublicationDate(@event.Period);
- formContent.CategorizeIt(CategorizeIt(form));
- _unitOfWork.SaveChanges();
- }
- public ContentTag CategorizeIt(Form form)
- {
- var category = default(ContentTag);
- if (form.Category.IsNotNullOrEmpty())
- {
- category = _contentTagRepository.GetAll().ByName(form.Category.Label);
- }
- return category;
- }
- }
- }
Add Comment
Please, Sign In to add comment