You are on page 1of 13

--New

DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE

@CompanyId int= 111;


@KeywordId int= 289;
@Status varchar(45)='Approved';
@FromDate datetime= '2/1/2015 12:00:00 AM';
@ToDate datetime= '4/1/2015 11:59:59 PM';
@KeywordListId int = -1;
@Telco int = -1;
@SearchQuery varchar(100) = 'Zehra'
@PageNum int = 1;
@PageSize int = 50;
@AuthLists varchar(3000) = '-1' ;
@QuietStart datetime = null ;
@QuietEnd datetime = null;

-- SET NOCOUNT ON added to prevent extra result sets from


-- interfering with SELECT statements.
SET NOCOUNT ON;
--PREVENTING PARAMETER SNIFFING
DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME;
SET @StartDate = @FromDate;
SET @EndDate = @ToDate;
DECLARE @SubscribersByTelco TABLE (
SubscriberID bigint
)
DECLARE @SelectedSubscribers TABLE (
SubscriberID bigint,
SubscriptionID bigint,
CellNumber varchar(20),
--ImageUrl varchar(512),
--ProfileUrl varchar(512),
--DataCardUrl varchar(512),
UpdatedOn DateTime,
--FriendlyDate varchar(100),
Row_Num int
)
DECLARE @FinalRows TABLE (
SubscriberID bigint,
SubscriptionID bigint,
Name nvarchar(200),
CellNumber varchar(20),
ImageUrl varchar(512),
ProfileUrl varchar(512),
DataCardUrl varchar(512),
UpdatedOn DateTime,
FriendlyDate varchar(100),
Row_Num int
)
DECLARE @ListSubscribers TABLE (
SubscriberID bigint
)

DECLARE @TextSearchSubscribers TABLE (


SubscriberID bigint
)
DECLARE @AuthorisedListSubscribers TABLE (
SubscriberId bigint
)
DECLARE @QuietSubscribers TABLE (
SubscriberId bigint
)
--FETCH THE RELEVANT NAMES
SELECT @CompanyId = companyId from dbo.keywords with(nolock) WHERE Keyword
Id = @KeywordId
--SELECT SubscriberId,Name into @SubscriberNames from dbo.subscriber_names
(@CompanyID)
IF @Telco = 0
BEGIN
INSERT INTO @SubscribersByTelco
SELECT rc.SubscriberID from reports.conversations as rc with(nolock)
WHERE rc.KeywordID = @KeywordId AND rc.TelcoID IS NULL
--Select @Telco = 'UnKnown'
END
ELSE IF @Telco <> -1
BEGIN
INSERT INTO @SubscribersByTelco
SELECT rc.SubscriberID from reports.conversations as rc with(nolock)
WHERE rc.KeywordID = @KeywordId AND rc.TelcoID = @Telco
END
IF @KeywordListId = 0
BEGIN
insert into @ListSubscribers (SubscriberID)
SELECT SubscriberID FROM SUBSCRIBERS_NOT_LISTED(@KeywordId)
END
ELSE IF @KeywordListId > 0
BEGIN
insert into @ListSubscribers (SubscriberID)
SELECT Subscriberid FROM [dbo].[subscription_lists] as sl with(noloc
k)
INNER JOIN dbo.subscriptions as s with(nolock) ON sl.subscriptionid
= s.subscriptionid
where keywordlistid in (@KeywordListId) AND s.IsRevoked = 0
END
IF @AuthLists <> '-1' AND @AuthLists <> '-2'
BEGIN
IF (select count(*) from Splitter(@AuthLists) where Value = '0') > 0
BEGIN
INSERT INTO @AuthorisedListSubscribers
select nl.Subscriberid FROM SUBSCRIBERS_NOT_LISTED(@KeywordId) a

s nl
INNER JOIN dbo.subscriptions as su with(nolock) ON nl.Subscriber
id = su.Subscriberid AND su.KeywordId = @KeywordId
AND su.Status = 'Approved' AND su.IsRevoked = 0
END
--SELECT * from @AuthorisedListSubscribers
INSERT INTO @AuthorisedListSubscribers
SELECT distinct su.SubscriberId FROM dbo.subscriptions as su with(no
lock)
INNER JOIN dbo.subscription_lists as sl with(nolock) ON su.Subscript
ionID = sl.SubscriptionID
AND sl.KeywordListID IN
(
select * from Splitter(@AuthLists)
)
AND su.Status = 'Approved' AND su.IsRevoked = 0
--SELECT * from @AuthorisedListSubscribers
END

IF (@QuietEnd IS NOT NULL AND @QuietStart IS NULL)


BEGIN
INSERT INTO @QuietSubscribers
SELECT distinct rc.SubscriberID FROM reports.conversations rc with(noloc
k)
INNER JOIN subscriptions ss with(nolock) ON rc.SubscriptionID = ss.Subsc
riptionID and ss.KeywordID=@KeywordId and ss.CreatedOn<=@QuietEnd
AND rc.KeywordID=@KeywordId
AND ss.Status='Approved'
AND not exists(select 1 from reports.conversations rc with(nolock) where
rc.SubscriberID=ss.SubscriberID and rc.LastActivityFromUser>=@QuietEnd and rc.
KeywordID=@KeywordId)
--SELECT p.SubscriberID FROM
--(
-SELECT distinct rc.SubscriberID FROM reports.conversations rc
-INNER JOIN subscriptions ss ON rc.SubscriptionID = ss.Subscription
ID and ss.KeywordID=@KeywordId and ss.CreatedOn<=@QuietEnd
-AND rc.KeywordID=@KeywordID
-AND (rc.LastActivityFromUser<=@QuietEnd OR rc.LastActivityFromUser
IS NULL)
--)AS p
----WHERE P.SubscriberID NOT IN
--(
-SELECT rc.SubscriberID FROM reports.conversations rc WHERE rc.Key
wordID= @KeywordID
-AND rc.LastActivityFromUser >= @QuietEnd
--)
END
ELSE IF(@QuietEnd IS NOT NULL AND @QuietStart IS NOT NULL)
BEGIN
INSERT INTO @QuietSubscribers
SELECT distinct rc.SubscriberID FROM reports.conversations rc with(noloc
k)

INNER JOIN subscriptions ss with(nolock) ON rc.SubscriptionID = ss.Subsc


riptionID and ss.KeywordID=@KeywordId AND rc.KeywordID=@KeywordId
AND ss.Status='Approved'
AND not exists(select 1 from reports.conversations rc with(nolock) where
rc.SubscriberID=ss.SubscriberID and rc.KeywordID=@KeywordId and rc.LastActivi
tyFromUser is not null)
END
/*
ELSE IF (@QuietEnd IS NOT NULL AND @QuietStart IS NOT NULL)
BEGIN
INSERT INTO @QuietSubscribers
SELECT DISTINCT p.SubscriberID FROM
(
SELECT rc.SubscriberID FROM reports.conversations rc
INNER JOIN subscribers s on s.SubscriberID=rc.SubscriberID
WHERE rc.KeywordID=@KeywordID
--AND s.CreatedOn<=@QuietStart
)AS p
WHERE p.SubscriberID NOT IN
(
SELECT distinct cm.SubscriberID FROM campaign_messages cm
INNER JOIN campaigns c on c.CampaignID=cm.CampaignID
WHERE c.KeywordID= @KeywordId
AND cm.MessageType='Response'
AND cm.CreatedOn BETWEEN @QuietStart AND @QuietEnd
)
END
*/
-- Insert statements for procedure here
IF @SearchQuery = '-1'
BEGIN
INSERT INTO @SelectedSubscribers(SubscriberID, SubscriptionID, CellNumbe
r, UpdatedOn, Row_Num)
SELECT distinct su.SubscriberID, su.SubscriptionID, s.CellNumber, su.Upd
atedOn, Row_NUMBER() OVER(ORDER BY su.UpdatedOn desc, su.SubscriptionID desc) as
Row_Num
FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID = s.Subs
criberID
--LEFT JOIN dbo.subscription_lists as sl with(nolock) ON su.Subscrip
tionID = sl.SubscriptionID
--LEFT JOIN @SubscriberNames as sn with(nolock) ON su.SubscriberId =
sn.SubscriberId
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDate AND
@EndDate
AND su.IsRevoked = 0
AND ((@Status = '-1') OR (su.Status = @Status))
AND ((@Telco = -1) OR (su.SubscriberID IN (Select SubscriberId from
@SubscribersByTelco)))
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscriber
ID FROM @ListSubscribers)))
AND ((@AuthLists = '-1') OR (su.SubscriberID in (SELECT SubscriberID
FROM @AuthorisedListSubscribers)))
AND ((@QuietEnd IS NULL)OR (su.SubscriberID in (SELECT SubscriberID
FROM @QuietSubscribers)))
OPTION(RECOMPILE)
--TODO?
END
ELSE IF @SearchQuery <> ''

BEGIN
SELECT @SearchQuery = LTRIM(@SearchQuery)
SELECT @SearchQuery = RTRIM(@SearchQuery)
SELECT @SearchQuery = REPLACE(@SearchQuery,
SELECT @SearchQuery = REPLACE(@SearchQuery,
SELECT @SearchQuery = REPLACE(@SearchQuery,
SELECT @SearchQuery = REPLACE(@SearchQuery,
SELECT @SearchQuery = REPLACE(@SearchQuery,
SELECT @SearchQuery = REPLACE(@SearchQuery,
--REPLACE SPACE WITH AND

' AND ', ' ')


' AND', ' ')
'AND ', ' ')
' OR ', ' ')
' OR', ' ')
'OR ', ' ')

SELECT @SearchQuery = '"*'+REPLACE(@SearchQuery,' ','*" AND "*')+'*"'


--INSERT INTO @TextSearchSubscribers
--SELECT * FROM
--(
-SELECT su.SubscriberId FROM dbo.subscriptions as su with(nolock)
-INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID =
s.SubscriberID
-WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDat
e AND @EndDate
-AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscrib
erID FROM @ListSubscribers)))
-AND CONTAINS((s.Name, s.CellNumber), @SearchQuery)
-UNION
---INSERT INTO @TextSearchSubscribers
-SELECT su.SubscriberID FROM dbo.subscriptions as su with(nolock)
-INNER JOIN dbo.subscriber_attributes as sa with(nolock) ON su.Subs
criberID = sa.SubscriberID AND sa.CompanyId = @CompanyId
-WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDat
e AND @EndDate
-AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscrib
erID FROM @ListSubscribers)))
-AND CONTAINS((sa.Name, sa.Value), @SearchQuery)
-- ) as A
INSERT INTO @SelectedSubscribers(SubscriberID, SubscriptionID, CellNumbe
r, UpdatedOn, Row_Num)
SELECT t.SubscriberId, t.SubscriptionID, t.CellNumber, t.UpdatedOn, Row_
NUMBER() OVER(ORDER BY t.UpdatedOn desc, t.SubscriptionID desc) as Row_Num
FROM
(
SELECT distinct su.SubscriberId, su.SubscriptionID, s.cellnumber, su
.UpdatedOn
FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID = s.
SubscriberID
--LEFT JOIN dbo.subscriber_attributes as sa with(nolock) ON su.Subsc
riberID = sa.SubscriberID AND sa.CompanyId = @CompanyId
--LEFT JOIN @SubscriberNames as sn with(nolock) ON su.SubscriberId =
sn.SubscriberId
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDate
AND @EndDate
AND su.IsRevoked = 0
AND ((@Status = '-1') OR (su.Status = @Status))
AND ((@Telco = -1) OR (su.SubscriberID IN (Select SubscriberId from
@SubscribersByTelco)))
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscriber
ID FROM @ListSubscribers)))
AND ((@AuthLists = '-1') or (su.SubscriberID in (SELECT SubscriberID

FROM @AuthorisedListSubscribers)))
AND ((@QuietEnd IS NULL)OR (su.SubscriberID in (SELECT SubscriberID
FROM @QuietSubscribers)))
AND su.SubscriberID IN (
SELECT su.SubscriberId FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID
= s.SubscriberID
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartD
ate AND @EndDate
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscr
iberID FROM @ListSubscribers)))
AND CONTAINS((s.Name, s.CellNumber), @SearchQuery)
UNION
--INSERT INTO @TextSearchSubscribers
SELECT su.SubscriberID FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.subscriber_attributes as sa with(nolock) ON su.Su
bscriberID = sa.SubscriberID AND sa.CompanyId = @CompanyId
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartD
ate AND @EndDate
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscr
iberID FROM @ListSubscribers)))
AND CONTAINS((sa.Name, sa.Value), @SearchQuery)
)
) AS t
OPTION(RECOMPILE)
--TODO?
END
--SELECT SubscriberId, Name into @SubscriberNames FROM dbo.FETCH_SELECTED_SU
BSCRIBER_NAMES(@CompanyID, @CommaSeperatedSid)
-INSERT INTO @FinalRows (SubscriberID, SubscriptionID, NAME, CellNumber,
ImageUrl, ProfileUrl, DataCardUrl, UpdatedOn, FriendlyDate, Row_Num)
SELECT s.SubscriberID, SubscriptionID, ISNULL('', s.CellNumber) AS NAME,
CellNumber, '' as ImageUrl, '' as ProfileUrl, '' as DataCardUrl, UpdatedOn, ''
as FriendlyDate, Row_Num
FROM @SelectedSubscribers AS s
WHERE Row_Num BETWEEN (((@PageNum - 1) * @PageSize) + 1) AND (@PageNum *
@PageSize)
--DECLARE @SubscriberIDs AS dbo.UDT_LongIDs
--INSERT INTO @SubscriberIDs(ID)
--SELECT SubscriberID
--FROM @FinalRows
--SELECT SubscriberID, Name
--INTO #SubscriberNames
--FROM dbo.FETCH_SELECTED_SUBSCRIBER_NAMES_V2(@CompanyID, @SubscriberIDs
) --TODO
SELECT s.SubscriberID, SubscriptionID, ISNULL(sa.Name, s.CellNumber), CellNu
mber, ImageUrl, ProfileUrl, DataCardUrl, s.UpdatedOn, FriendlyDate, Row_Num
FROM @FinalRows as s
--INNER JOIN #SubscriberNames as sn ON s.SubscriberID = sn.SubscriberId
LEFT OUTER JOIN dbo.subscriber_attributes AS sa with(nolock) on sa.Subsc
riberID = s.SubscriberID AND sa.CompanyID = @CompanyId AND sa.Name = 'Name' AND
sa.Value <> ''
ORDER BY UpdatedOn DESC
--TODO Row_Num?
SELECT COUNT(*) FROM @SelectedSubscribers

--drop
--drop
--drop
--drop
--drop
--drop
--drop
--drop
--OLD
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE

table
table
table
table
table
table
table
table

#SubscriberNames
#Final_Rows
#QuietSubscribers
#AuthorisedListSubscribers
#ListSubscribers
#SelectedSubscribers
#SubscribersByTelco
#TextSearchSubscribers

@CompanyId int= 111;


@KeywordId int= 289;
@Status varchar(45)='Approved';
@FromDate datetime= '2/1/2015 12:00:00 AM';
@ToDate datetime= '4/1/2015 11:59:59 PM';
@KeywordListId int = -1;
@Telco int = -1;
@SearchQuery varchar(100) = 'Zehra'
@PageNum int = 1;
@PageSize int = 50;
@AuthLists varchar(3000) = '-1' ;
@QuietStart datetime = null ;
@QuietEnd datetime = null;

-- SET NOCOUNT ON added to prevent extra result sets from


-- interfering with SELECT statements.
SET NOCOUNT ON;
--PREVENTING PARAMETER SNIFFING
DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME;
SET @StartDate = @FromDate;
SET @EndDate = @ToDate;
CREATE TABLE #SubscribersByTelco (
SubscriberID bigint
)
CREATE TABLE #SelectedSubscribers (
SubscriberID bigint,
SubscriptionID bigint,
CellNumber varchar(20),
ImageUrl varchar(512),
ProfileUrl varchar(512),
DataCardUrl varchar(512),
UpdatedOn DateTime,
FriendlyDate varchar(100),
Row_Num int
)
CREATE TABLE #ListSubscribers (
SubscriberID bigint
)
CREATE TABLE #TextSearchSubscribers (
SubscriberID bigint
)

CREATE TABLE #AuthorisedListSubscribers (


SubscriberId bigint
)
CREATE TABLE #QuietSubscribers(
SubscriberId bigint
)
--FETCH THE RELEVANT NAMES
SELECT @CompanyId = companyId from dbo.keywords with(nolock) WHERE Keyword
Id = @KeywordId
--SELECT SubscriberId,Name into #SubscriberNames from dbo.subscriber_names
(@CompanyID)
IF @Telco = 0
BEGIN
INSERT INTO #SubscribersByTelco
SELECT rc.SubscriberID from reports.conversations as rc with(nolock)
WHERE rc.KeywordID = @KeywordId AND rc.TelcoID IS NULL
--Select @Telco = 'UnKnown'
END
ELSE IF @Telco <> -1
BEGIN
INSERT INTO #SubscribersByTelco
SELECT rc.SubscriberID from reports.conversations as rc with(nolock)
WHERE rc.KeywordID = @KeywordId AND rc.TelcoID = @Telco
END
IF @KeywordListId = 0
BEGIN
insert into #ListSubscribers (SubscriberID)
SELECT SubscriberID FROM SUBSCRIBERS_NOT_LISTED(@KeywordId)
END
ELSE IF @KeywordListId > 0
BEGIN
insert into #ListSubscribers (SubscriberID)
SELECT Subscriberid FROM [dbo].[subscription_lists] as sl with(noloc
k)
INNER JOIN dbo.subscriptions as s with(nolock) ON sl.subscriptionid
= s.subscriptionid
where keywordlistid in (@KeywordListId) AND s.IsRevoked = 0
END
IF @AuthLists <> '-1' AND @AuthLists <> '-2'
BEGIN
IF (select count(*) from Splitter(@AuthLists) where Value = '0') > 0
BEGIN
INSERT INTO #AuthorisedListSubscribers
select nl.Subscriberid FROM SUBSCRIBERS_NOT_LISTED(@KeywordId) a
s nl
INNER JOIN dbo.subscriptions as su ON nl.Subscriberid = su.Subsc
riberid AND su.KeywordId = @KeywordId
AND su.Status = 'Approved' AND su.IsRevoked = 0

END
--SELECT * from @AuthorisedListSubscribers
INSERT INTO #AuthorisedListSubscribers
SELECT distinct su.SubscriberId FROM dbo.subscriptions as su
INNER JOIN dbo.subscription_lists as sl ON su.SubscriptionID = sl.Su
bscriptionID
AND sl.KeywordListID IN
(
select * from Splitter(@AuthLists)
)
AND su.Status = 'Approved' AND su.IsRevoked = 0
--SELECT * from @AuthorisedListSubscribers
END

IF (@QuietEnd IS NOT NULL AND @QuietStart IS NULL)


BEGIN
INSERT INTO #QuietSubscribers
SELECT distinct rc.SubscriberID FROM reports.conversations rc
INNER JOIN subscriptions ss ON rc.SubscriptionID = ss.SubscriptionID and
ss.KeywordID=@KeywordId and ss.CreatedOn<=@QuietEnd
AND rc.KeywordID=@KeywordId
AND ss.Status='Approved'
AND not exists(select 1 from reports.conversations rc where rc.Subscrib
erID=ss.SubscriberID and rc.LastActivityFromUser>=@QuietEnd and rc.KeywordID=@Ke
ywordId)
--SELECT p.SubscriberID FROM
--(
-SELECT distinct rc.SubscriberID FROM reports.conversations rc
-INNER JOIN subscriptions ss ON rc.SubscriptionID = ss.Subscription
ID and ss.KeywordID=@KeywordId and ss.CreatedOn<=@QuietEnd
-AND rc.KeywordID=@KeywordID
-AND (rc.LastActivityFromUser<=@QuietEnd OR rc.LastActivityFromUser
IS NULL)
--)AS p
----WHERE P.SubscriberID NOT IN
--(
-SELECT rc.SubscriberID FROM reports.conversations rc WHERE rc.Key
wordID= @KeywordID
-AND rc.LastActivityFromUser >= @QuietEnd
--)
END
ELSE IF(@QuietEnd IS NOT NULL AND @QuietStart IS NOT NULL)
BEGIN
INSERT INTO #QuietSubscribers
SELECT distinct rc.SubscriberID FROM reports.conversations rc
INNER JOIN subscriptions ss ON rc.SubscriptionID = ss.SubscriptionID and
ss.KeywordID=@KeywordId AND rc.KeywordID=@KeywordId
AND ss.Status='Approved'
AND not exists(select 1 from reports.conversations rc where rc.Subscrib
erID=ss.SubscriberID and rc.KeywordID=@KeywordId and rc.LastActivityFromUser is
not null)
END

/*
ELSE IF (@QuietEnd IS NOT NULL AND @QuietStart IS NOT NULL)
BEGIN
INSERT INTO #QuietSubscribers
SELECT DISTINCT p.SubscriberID FROM
(
SELECT rc.SubscriberID FROM reports.conversations rc
INNER JOIN subscribers s on s.SubscriberID=rc.SubscriberID
WHERE rc.KeywordID=@KeywordID
--AND s.CreatedOn<=@QuietStart
)AS p
WHERE p.SubscriberID NOT IN
(
SELECT distinct cm.SubscriberID FROM campaign_messages cm
INNER JOIN campaigns c on c.CampaignID=cm.CampaignID
WHERE c.KeywordID= @KeywordId
AND cm.MessageType='Response'
AND cm.CreatedOn BETWEEN @QuietStart AND @QuietEnd
)
END
*/
-- Insert statements for procedure here
IF @SearchQuery = '-1'
BEGIN
INSERT INTO #SelectedSubscribers(SubscriberID, SubscriptionID, CellNumbe
r, ImageUrl, ProfileUrl, DataCardUrl, UpdatedOn, FriendlyDate, Row_Num)
SELECT distinct su.SubscriberID, su.SubscriptionID, s.CellNumber, '' as
ImageUrl, '' as ProfileUrl, '' as DataCardUrl, su.UpdatedOn, '' as FriendlyDate,
Row_NUMBER() OVER(ORDER BY su.UpdatedOn desc, su.SubscriptionID desc) as Row_Nu
m
FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID = s.Subs
criberID
--LEFT JOIN dbo.subscription_lists as sl with(nolock) ON su.Subscrip
tionID = sl.SubscriptionID
--LEFT JOIN #SubscriberNames as sn with(nolock) ON su.SubscriberId =
sn.SubscriberId
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDate AND
@EndDate
AND su.IsRevoked = 0
AND ((@Status = '-1') OR (su.Status = @Status))
AND ((@Telco = -1) OR (su.SubscriberID IN (Select SubscriberId from
#SubscribersByTelco)))
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscriber
ID FROM #ListSubscribers)))
AND ((@AuthLists = '-1') OR (su.SubscriberID in (SELECT SubscriberID
FROM #AuthorisedListSubscribers)))
AND ((@QuietEnd IS NULL)OR (su.SubscriberID in (SELECT SubscriberID
FROM #QuietSubscribers)))
END
ELSE IF @SearchQuery <>
BEGIN
SELECT @SearchQuery
SELECT @SearchQuery
SELECT @SearchQuery
SELECT @SearchQuery
SELECT @SearchQuery
SELECT @SearchQuery

''
=
=
=
=
=
=

LTRIM(@SearchQuery)
RTRIM(@SearchQuery)
REPLACE(@SearchQuery,
REPLACE(@SearchQuery,
REPLACE(@SearchQuery,
REPLACE(@SearchQuery,

' AND ', ' ')


' AND', ' ')
'AND ', ' ')
' OR ', ' ')

SELECT @SearchQuery = REPLACE(@SearchQuery, ' OR', ' ')


SELECT @SearchQuery = REPLACE(@SearchQuery, 'OR ', ' ')
--REPLACE SPACE WITH AND
SELECT @SearchQuery = '"*'+REPLACE(@SearchQuery,' ','*" AND "*')+'*"'
--INSERT INTO #TextSearchSubscribers
--SELECT * FROM
--(
-SELECT su.SubscriberId FROM dbo.subscriptions as su with(nolock)
-INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID =
s.SubscriberID
-WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDat
e AND @EndDate
-AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscrib
erID FROM #ListSubscribers)))
-AND CONTAINS((s.Name, s.CellNumber), @SearchQuery)
-UNION
---INSERT INTO #TextSearchSubscribers
-SELECT su.SubscriberID FROM dbo.subscriptions as su with(nolock)
-INNER JOIN dbo.subscriber_attributes as sa with(nolock) ON su.Subs
criberID = sa.SubscriberID AND sa.CompanyId = @CompanyId
-WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDat
e AND @EndDate
-AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscrib
erID FROM #ListSubscribers)))
-AND CONTAINS((sa.Name, sa.Value), @SearchQuery)
-- ) as A
INSERT INTO #SelectedSubscribers(SubscriberID, SubscriptionID, CellNumbe
r, ImageUrl, ProfileUrl, DataCardUrl, UpdatedOn, FriendlyDate, Row_Num)
SELECT t.SubscriberId, t.SubscriptionID, t.CellNumber, t.ImageUrl, t.Pro
fileUrl, t.DataCardUrl, t.UpdatedOn, t.FriendlyDate, Row_NUMBER() OVER(ORDER BY
t.UpdatedOn desc, t.SubscriptionID desc) as Row_Num FROM
(
SELECT distinct su.SubscriberId, su.SubscriptionID, s.cellnumber, ''
as ImageUrl, '' as ProfileUrl, '' as DataCardUrl, su.UpdatedOn, '' as FriendlyD
ate
FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID = s.
SubscriberID
--LEFT JOIN dbo.subscriber_attributes as sa with(nolock) ON su.Subsc
riberID = sa.SubscriberID AND sa.CompanyId = @CompanyId
--LEFT JOIN #SubscriberNames as sn with(nolock) ON su.SubscriberId =
sn.SubscriberId
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartDate
AND @EndDate
AND su.IsRevoked = 0
AND ((@Status = '-1') OR (su.Status = @Status))
AND ((@Telco = -1) OR (su.SubscriberID IN (Select SubscriberId from
#SubscribersByTelco)))
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscriber
ID FROM #ListSubscribers)))
AND ((@AuthLists = '-1') or (su.SubscriberID in (SELECT SubscriberID
FROM #AuthorisedListSubscribers)))
AND ((@QuietEnd IS NULL)OR (su.SubscriberID in (SELECT SubscriberID
FROM #QuietSubscribers)))
AND su.SubscriberID IN (
SELECT su.SubscriberId FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.Subscribers as s with(nolock) ON su.SubscriberID

= s.SubscriberID
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartD
ate AND @EndDate
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscr
iberID FROM #ListSubscribers)))
AND CONTAINS((s.Name, s.CellNumber), @SearchQuery)
UNION
--INSERT INTO #TextSearchSubscribers
SELECT su.SubscriberID FROM dbo.subscriptions as su with(nolock)
INNER JOIN dbo.subscriber_attributes as sa with(nolock) ON su.Su
bscriberID = sa.SubscriberID AND sa.CompanyId = @CompanyId
WHERE su.Keywordid = @KeywordId AND su.UpdatedOn BETWEEN @StartD
ate AND @EndDate
AND ((@KeywordListId = -1) OR (su.SubscriberID in (SELECT Subscr
iberID FROM #ListSubscribers)))
AND CONTAINS((sa.Name, sa.Value), @SearchQuery)
)
) as t
END
--SELECT SubscriberId, Name into #SubscriberNames FROM dbo.FETCH_SELECTED_SU
BSCRIBER_NAMES(@CompanyID, @CommaSeperatedSid)
-SELECT s.SubscriberID, SubscriptionID, ISNULL('', s.CellNumber) as Name, Cel
lNumber, ImageUrl, ProfileUrl, DataCardUrl, UpdatedOn, FriendlyDate, Row_Num
into #Final_Rows
FROM #SelectedSubscribers as s
WHERE Row_Num BETWEEN (((@PageNum - 1) * @PageSize) + 1) and (@PageNum * @P
ageSize)
--DECLARE @CommaSeperatedSid VARCHAR(MAX)
--select @CommaSeperatedSid = LEFT(Result,LEN(Result) - 1)
-FROM
-(
-SELECT CONVERT(varchar(max),
-(
-select SubscriberID as [text()], ',' as [text()]
-from #Final_Rows
-for xml path('')
-)
-)as result
-) s
DECLARE @SubscriberIDs AS dbo.UDT_LongIDs
INSERT INTO @SubscriberIDs(ID)
SELECT SubscriberID from #Final_Rows
SELECT SubscriberID, Name into #SubscriberNames FROM dbo.FETCH_SELECTED_SUBS
CRIBER_NAMES_V2(@CompanyID, @SubscriberIDs) --TODO
SELECT s.SubscriberID, SubscriptionID, ISNULL(sn.Name, s.CellNumber), CellNu
mber, ImageUrl, ProfileUrl, DataCardUrl, UpdatedOn, FriendlyDate, Row_Num
FROM #Final_Rows as s
INNER JOIN #SubscriberNames as sn ON s.SubscriberID = sn.SubscriberId
order by UpdatedOn desc
--TODO Row_Num?
SELECT COUNT(*) FROM #SelectedSubscribers
drop table #SubscriberNames
drop table #Final_Rows

drop table #QuietSubscribers


drop table #AuthorisedListSubscribers
drop table #ListSubscribers
drop table #SelectedSubscribers
drop table #SubscribersByTelco
drop table #TextSearchSubscribers

You might also like