Example #1
0
        public async Task HandleAsync(RemarkAssignmentRemoved @event)
        => await _handler
        .Run(async() =>
        {
            var remark = await _remarkRepository.GetByIdAsync(@event.RemarkId);
            if (remark.HasNoValue)
            {
                return;
            }

            var remarkDto          = await _remarkServiceClient.GetAsync <Remark>(@event.RemarkId);
            remark.Value.Group     = remarkDto.Value.Group;
            remark.Value.State     = remarkDto.Value.State;
            remark.Value.States    = remarkDto.Value.States;
            remark.Value.Assignee  = remarkDto.Value.Assignee;
            remark.Value.UpdatedAt = remarkDto.Value.UpdatedAt;
            await _remarkRepository.UpdateAsync(remark.Value);
            await _groupRemarkRepository.AddRemarksAsync(@event.RemarkId, remarkDto.Value.AvailableGroups);
            await _cache.AddAsync(remark.Value);
        })
        .OnError((ex, logger) =>
        {
            logger.Error(ex, $"Error occured while handling {@event.GetType().Name} event");
        })
        .ExecuteAsync();
        public async Task HandleAsync(RemarkRenewed @event)
        {
            await _handler
            .Run(async() =>
            {
                var remark = await _remarkRepository.GetByIdAsync(@event.RemarkId);
                if (remark.HasNoValue)
                {
                    return;
                }

                var remarkDto          = await _remarkServiceClient.GetAsync <Remark>(@event.RemarkId);
                remark.Value.UpdatedAt = remarkDto.Value.UpdatedAt;
                remark.Value.State     = remarkDto.Value.State;
                remark.Value.States    = remarkDto.Value.States;
                remark.Value.Photos    = remarkDto.Value.Photos;
                remark.Value.Resolved  = false;
                await _remarkRepository.UpdateAsync(remark.Value);
                if (remark.Value.AvailableGroups?.Any() == true)
                {
                    await _groupRemarkRepository.AddRemarksAsync(remark.Value.Id, remark.Value.AvailableGroups);
                }
                await _cache.AddAsync(remark.Value, addGeo: true);
            })
            .OnError((ex, logger) =>
            {
                logger.Error(ex, $"Error occured while handling {@event.GetType().Name} event");
            })
            .ExecuteAsync();
        }
 public async Task HandleAsync(RemarkCreated @event)
 => await _handler
 .Run(async() =>
 {
     var remark          = await _remarkServiceClient.GetAsync <Remark>(@event.RemarkId);
     remark.Value.Status = null;
     if (remark.Value.AvailableGroups?.Any() == true)
     {
         await _groupRemarkRepository.AddRemarksAsync(remark.Value.Id, remark.Value.AvailableGroups);
     }
     await _remarkRepository.AddAsync(remark.Value);
     await _remarkCache.AddAsync(remark.Value, addGeo: true, addLatest: true);
     await _userCache.AddRemarkAsync(remark.Value.Author.UserId, @event.RemarkId);
 })
 .OnError((ex, logger) =>
 {
     logger.Error(ex, $"Error occured while handling {@event.GetType().Name} event");
 })
 .ExecuteAsync();