Пример #1
0
        public ChatMessage(
            UserIdentifier user,
            UserIdentifier targetUser,
            EChatSide side,
            string message,
            EChatMessageReadState readState,
            Guid sharedMessageId,
            EChatMessageReadState receiverReadState)
        {
            UserId            = user.UserId;
            TenantId          = user.TenantId;
            TargetUserId      = targetUser.UserId;
            TargetTenantId    = targetUser.TenantId;
            Message           = message;
            Side              = side;
            ReadState         = readState;
            SharedMessageId   = sharedMessageId;
            ReceiverReadState = receiverReadState;

            CreationTime = Clock.Now;
        }
Пример #2
0
        private void CheckChatFeaturesInternal(int?sourceTenantId, int?targetTenantId, EChatSide side)
        {
            var localizationPosfix = side == EChatSide.Sender ? "ForSender" : "ForReceiver";

            if (sourceTenantId.HasValue)
            {
                if (!_featureChecker.IsEnabled(sourceTenantId.Value, AppFeatures.ChatFeature))
                {
                    throw new UserFriendlyException(L("ChatFeatureIsNotEnabled" + localizationPosfix));
                }

                if (targetTenantId.HasValue)
                {
                    if (sourceTenantId == targetTenantId)
                    {
                        return;
                    }

                    if (!_featureChecker.IsEnabled(sourceTenantId.Value, AppFeatures.TenantToTenantChatFeature))
                    {
                        throw new UserFriendlyException(L("TenantToTenantChatFeatureIsNotEnabled" + localizationPosfix));
                    }
                }
                else
                {
                    if (!_featureChecker.IsEnabled(sourceTenantId.Value, AppFeatures.TenantToHostChatFeature))
                    {
                        throw new UserFriendlyException(L("TenantToHostChatFeatureIsNotEnabled" + localizationPosfix));
                    }
                }
            }
            else
            {
                if (targetTenantId.HasValue)
                {
                    if (!_featureChecker.IsEnabled(targetTenantId.Value, AppFeatures.TenantToHostChatFeature))
                    {
                        throw new UserFriendlyException(L("TenantToHostChatFeatureIsNotEnabled" + (side == EChatSide.Sender ? "ForReceiver" : "ForSender")));
                    }
                }
            }
        }