Advertisement
Ruslan_Rayanov

Chat custom SP and functions

Oct 4th, 2022
1,429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.72 KB | None | 0 0
  1.     Create PROCEDURE [dbo].[msg_afterSendMessage]
  2.     @messageID int,
  3.     @username nvarchar(128)
  4.     as
  5.     begin
  6.         -- процедура, которая выполняется после отправки каждого сообщения
  7.  
  8.         -- SELECT 1 - Настройки для пуш уведомлений
  9.         select '' linkUrl,  'Перейти' linkTitle, 0 DisablePush
  10.         from as_msg_messages where id = @messageID
  11.        
  12.         -- SELECT 2 Вызов внешних действий
  13.         -- ... email, notifiocation, sms, clearcache,
  14.     end
  15. go
  16.  
  17.     create PROCEDURE [dbo].[msg_getAvailableUsersForRoom]
  18.     @roomID int,
  19.     @username nvarchar(128)
  20.     as
  21.     begin  
  22.         -- процедура для извлечения возможных пользователей для добавления
  23.  
  24.         -- SELECT 1 Result, Msg
  25.         select 1 Result, '' Msg
  26.    
  27.         -- SELECT 2  users
  28.         select
  29.             iif(isnull(u.fio, '')='', username, u.fio) name,
  30.             u.username username    
  31.         from as_users u
  32.         where  id not in (select userID from as_msg_roomUsers where roomID= @roomID)   
  33.     end
  34.     go    
  35.  
  36.     create PROCEDURE [dbo].[msg_getUsersForNewChat]
  37.         @username nvarchar(128)
  38.     as
  39.     begin  
  40.         select 1 Result, '' Msg
  41.         declare @isClient bit = dbo.sec_isUserInRole(@username, 'client')
  42.  
  43.         if(@isClient=1) begin
  44.             return
  45.         end
  46.  
  47.         select
  48.             iif(isnull(u.fio, '')='', username, u.fio) name,
  49.             u.username username    
  50.         from as_users u
  51.         where username <> @username
  52.     end
  53.     go
  54.  
  55.     Create  FUNCTION [dbo].[msg_getUsersForNewChat]
  56.     (
  57.         @type nvarchar(128),
  58.         @itemID int,
  59.         @username nvarchar(128)
  60.     )
  61.     RETURNS bit   -- функция определяет - может ли создать комнату данного типа для itemID этот пользователь.
  62.     AS
  63.     BEGIN
  64.       DECLARE @res bit = 1
  65.       declare @isClient bit = dbo.sec_isUserInRole(@username, 'client')
  66.  
  67.       if(@isClient=1) set @res = 0
  68.  
  69.       return @res
  70.  
  71.     END
  72.     go
  73.  
  74.     CREATE  FUNCTION [dbo].[msg_getRoomItemName]
  75.     (
  76.         @roomID int,
  77.         @type nvarchar(128),
  78.         @itemID int,
  79.         @userID int
  80.     )
  81.     RETURNS nvarchar(512)   -- функция определяет - может ли создать комнату данного типа для itemID этот пользователь.
  82.     AS
  83.     BEGIN
  84.       DECLARE @res nvarchar(512) = 'no name room'
  85.  
  86.       if(@type='userchat') begin
  87.             set @res = isnull((SELECT  STUFF(
  88.                       (
  89.                           SELECT  ', ' + iif(isnull(u.fio, '') ='', u.username, u.fio )
  90.                           FROM   as_msg_roomUsers ru inner join as_users u on u.id=ru.userID
  91.                           where ru.roomID = @roomID
  92.                               and  ru.userID!=@userID
  93.                           FOR XML PATH(''), TYPE
  94.                      ).value('.','varchar(max)')
  95.                      ,1,2, ''
  96.                 )), '--')      
  97.       end
  98.       -- ... custom types
  99.      
  100.       return @res
  101.     END
  102.     go
  103.  
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement