コード例 #1
0
        public async Task Handle(TicketPriorityEvent message)
        {
            var ticketTask      = _ticketRepository.Find(message.AggregateRootId.ToString());
            var oldPriorityTask = _priorityRepository.Find(message.FromPriorityId);
            var newPriorityTask = _priorityRepository.Find(message.ToPriorityId);

            await Task.WhenAll(ticketTask, oldPriorityTask, newPriorityTask);

            var ticket      = ticketTask.Result;
            var oldPriority = oldPriorityTask.Result;
            var newPriority = newPriorityTask.Result;

            // Update ticket in ReadModel
            ticket.Priority = newPriority;

            // Add ticket event in ReadModel
            var ticketEvent = new PriorityEventDto(oldPriority, newPriority)
            {
                Id       = Guid.NewGuid().ToString(),
                TicketId = message.AggregateRootId.ToString(),
                Created  = message.Created,
                UserId   = message.UserId.ToString(),
            };

            await Task.WhenAll(
                _websocketEmittor.Emit(new ReduxUpdatePriorityAction(_mapper.Map <TicketPriorityEventViewModel>(ticketEvent))),
                _ticketRepository.Update(ticket),
                _eventRepository.Add(ticketEvent));
        }
コード例 #2
0
        protected override async Task HandleCore(TicketStatusDomainEvent message)
        {
            var ticketTask    = _ticketRepository.Find(message.AggregateRootId.ToString());
            var oldStatusTask = _statusRepository.Find(message.FromStatusId);
            var newStatusTask = _statusRepository.Find(message.ToStatusId);

            await Task.WhenAll(ticketTask, oldStatusTask, newStatusTask);

            var ticket    = ticketTask.Result;
            var oldStatus = oldStatusTask.Result;
            var newStatus = newStatusTask.Result;

            // Update ticket in ReadModel
            ticket.Status = newStatus;

            // Add ticket event in ReadModel
            var ticketEvent = new StatusEventDto(oldStatus, newStatus)
            {
                Id       = Guid.NewGuid().ToString(),
                TicketId = message.AggregateRootId.ToString(),
                Created  = message.Created,
                UserId   = message.UserId.ToString(),
            };

            await Task.WhenAll(
                _ticketRepository.Update(ticket),
                _eventRepository.Add(ticketEvent));

            await _websocketEmittor.Emit(
                new ReduxUpdateStatusAction(_mapper.Map <TicketStatusEventViewModel>(ticketEvent)));
        }
コード例 #3
0
        public Task Handle(TicketCommentEvent message)
        {
            var ticketEvent = new CommentEventDto
            {
                Id       = Guid.NewGuid().ToString(),
                TicketId = message.AggregateRootId.ToString(),
                Created  = message.Created,
                UserId   = message.UserId.ToString(),
                Comment  = message.Comment
            };

            return(Task.WhenAll(
                       _websocketEmittor.Emit(new ReduxCommentAddedAction(_mapper.Map <TicketCommentEventViewModel>(ticketEvent))),
                       _repository.Add(ticketEvent)));
        }
コード例 #4
0
        protected override async Task HandleCore(TicketCommentDomainEvent message)
        {
            var ticketEvent = new CommentEventDto
            {
                Id       = Guid.NewGuid().ToString(),
                TicketId = message.AggregateRootId.ToString(),
                Created  = message.Created,
                UserId   = message.UserId.ToString(),
                Comment  = message.Comment
            };

            await _repository.Add(ticketEvent);

            await _websocketEmittor.Emit(
                new ReduxCommentAddedAction(_mapper.Map <TicketCommentEventViewModel>(ticketEvent)));
        }
コード例 #5
0
 private Task AddInDb(TicketDto ticketDto, TicketEventDto eventDto)
 {
     return(Task.WhenAll(
                _ticketRepository.Insert(ticketDto),
                _eventRepository.Add(eventDto)));
 }
コード例 #6
0
 private Task UpdateDb(TicketDto ticketDto, PriorityEventDto eventDto)
 {
     return(Task.WhenAll(_ticketRepository.Update(ticketDto), _eventRepository.Add(eventDto)));
 }