using IM.Commons.IntegrationEvents; using MassTransit; using MessageService.Domain.IReposities; using MessageService.Infrastructure; namespace MessageService.WebApi.Application.EventHandlers { public class UserProfileUpdateHandler : IConsumer { private readonly MessageDbContext db; private readonly IConversationReposity reposity; public UserProfileUpdateHandler(MessageDbContext db, IConversationReposity reposity) { this.db = db; this.reposity = reposity; } public async Task Consume(ConsumeContext context) { var @event = context.Message; var conversations = await reposity.FindByTargetIdAsync(@event.UserId, context.CancellationToken); foreach (var conversation in conversations) { conversation.UpdateProfile(@event.NickName, @event.Avatar); } await db.SaveChangesAsync(context.CancellationToken); } } }