public static void Register(ICrocoApplication application) { //Подписка обработчиками сообщений на сообщения application.AddMessageHandler <ChatCreatedEvent, ChatCreatedEventHandler>(); application.AddMessageHandler <ChatRelationUpdatedEvent, ChatRelationUpdatedEventHandler>(); application.AddMessageHandler <WebAppRequestContextLog, CrocoWebAppRequestContextLogHandler>(); ChatOptimizations.AddRelationsFromDatabase().GetAwaiter().GetResult(); LogApplicationInit(); }
public override Task HandleMessage(ChatCreatedEvent model) { ChatOptimizations.AddRelations(model.UserIds.Select(x => new ChatUserRelation { ChatId = model.ChatId, UserId = x, LastVisitUtcTicks = 0, //Чат только что был создан поэтому нормально }).ToList()); return(Task.CompletedTask); }
public override async Task HandleMessage(ChatRelationUpdatedEvent model) { var relationSafe = await new CrocoTransactionHandler(() => new SystemCrocoAmbientContext()).ExecuteAndCloseTransactionSafe(amb => { return(amb.RepositoryFactory.Query <ApplicationChatUserRelation>().Select(x => new ChatUserRelation { ChatId = x.ChatId, UserId = x.UserId, LastVisitUtcTicks = x.LastVisitUtcTicks }).FirstOrDefaultAsync(x => x.UserId == model.UserId && x.ChatId == model.ChatId)); }); if (relationSafe.IsSucceeded && relationSafe.Value != null) { ChatOptimizations.OnChatRelationUpdated(relationSafe.Value); } }