コード例 #1
0
        public static void Register(ICrocoApplication application)
        {
            //Подписка обработчиками сообщений на сообщения
            application.AddMessageHandler <ChatCreatedEvent, ChatCreatedEventHandler>();
            application.AddMessageHandler <ChatRelationUpdatedEvent, ChatRelationUpdatedEventHandler>();
            application.AddMessageHandler <WebAppRequestContextLog, CrocoWebAppRequestContextLogHandler>();

            ChatOptimizations.AddRelationsFromDatabase().GetAwaiter().GetResult();
            LogApplicationInit();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }