Old sproc
CREATE PROCEDURE [dbo].[OLD]
@CompanyID int,
@MultiCompanyID int,
@Billable int,
@AssignedUserID int,
@QueueID int,
@TicketStatusID int,
@StartDate smalldatetime = null,
@EndDate smalldatetime = null,
@Keyword varchar(50) = '',
@ProjectID int = -1,
@TechID int = -1,
@OpenClosed int = 0,
@IssueID int =-1,
@CreatedByID int = -1,
@TicketName varchar(50) = '',
@FilteredKeyword varchar(50) = '',
@MinutesWorked int = null,
@SubscribedUserID int = -1,
@CPMStatus int = 0,
@TicketRecurOn BIT
AS
SET NOCOUNT ON
DECLARE
@iCompanyID int,
@iMultiCompanyID int,
@iBillable int,
@iAssignedUserID int,
@iQueueID int,
@iTicketStatusID int,
@iStartDate date,-- = null,
@iEndDate date,-- = null,
@iProjectID int,-- = -1,
@iTechID int,-- = -1,
@iKeyword varchar(52),
@iOpenClosed int = 3,
@iIssueID int,-- =-1,
@iCreatedByID int,-- = -1
@iTicketName varchar(50),
@iFilteredKeyword varchar(50),
@iMinutesWorked int,
@iSubscribedUserID int,
@iCPMStatus int
SET @iCompanyID = @CompanyID
SET @iMultiCompanyID = @MultiCompanyID
SET @iBillable = @Billable
SET @iAssignedUserID = @AssignedUserID
SET @iQueueID = @QueueID
SET @iTicketStatusID = @TicketStatusID
SET @iStartDate = Cast(@StartDate as Date)
SET @iEndDate = Cast(@EndDate as Date)
SET @iProjectID = @ProjectID
SET @iTechID = @TechID
SET @iIssueID = @IssueID
SET @iOpenClosed = @OpenClosed
SET @iCreatedByID = @CreatedByID
SET @iTicketName = @TicketName
SET @iFilteredKeyword = @FilteredKeyword
SET @iMinutesWorked = @MinutesWorked
SET @iSubscribedUserID = @SubscribedUserID
SET @iCPMStatus = @CPMStatus
DECLARE @TextKeyword varchar(54)
DECLARE @ResetSearch bit
If LTRIM(RTRIM(@Keyword)) <> ''
BEGIN
SET @iKeyword = '%' + LTRIM(RTRIM(@Keyword)) + '%'
SET @TextKeyword = '"' + LTRIM(RTRIM(@Keyword)) + '"'
Set @ResetSearch = 1
END
ELSE
BEGIN
SET @iKeyword = '%' + LTRIM(RTRIM(@iFilteredKeyword)) + '%'
SET @TextKeyword = '"' + LTRIM(RTRIM(@iFilteredKeyword)) + '"'
Set @ResetSearch = 0
END
SET @iTicketName = LTRIM(RTRIM(@iTicketName))
DECLARE @temp TABLE
(
ID INT PRIMARY KEY IDENTITY(1,1),
TID INT,
UNIQUE CLUSTERED (ID,TID)
)
DECLARE @Results TABLE
(
ID INT PRIMARY KEY IDENTITY(1,1),
TID INT,
UNIQUE CLUSTERED (ID,TID)
)
If @iTicketName <> ''
BEGIN
--Only Search TicketName
INSERT INTO @Results (TID)
SELECT TicketID
FROM Ticket
WHERE (Name = @iTicketName)
AND DateDeactivated is null
GROUP BY TicketID
END
ELSE If @ResetSearch = 1
BEGIN
--Only Search for the keywords
INSERT INTO @Results (TID)
SELECT TicketID
FROM Entry
WHERE Notes like @iKeyword
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO @Results (TID)
SELECT TicketID
FROM Note
WHERE Note like @iKeyword
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO @Results (TID)
SELECT TicketID
FROM Ticket
WHERE (Name like @iKeyword OR Title like @iKeyword OR CONTAINS(Description,@TextKeyword) )
AND DateDeactivated is null
GROUP BY TicketID
End
ELSE If @iSubscribedUserID <> -1
BEGIN
--Only Search for Subscribed tickets
INSERT INTO @Results (TID)
SELECT t.TicketID
FROM Ticket t
INNER JOIN TicketSubscriber ts on t.TicketID = ts.TicketID AND ts.UserID = @iSubscribedUserID
WHERE DateDeactivated is null AND t.TicketStatusID <> 8
GROUP BY t.TicketID
End
ELSE If @iCPMStatus <> 0
BEGIN
--Only Search for ticket that have CPM status "pending review" or "reviewed"
INSERT INTO @Results (TID)
SELECT t.TicketID
FROM Ticket t
WHERE DateDeactivated is null
AND t.CPMReviewStatus = @CPMStatus
GROUP BY t.TicketID
End
ELSE IF @TicketRecurOn = 1
BEGIN
INSERT INTO @ResultS(TID)
SELECT T.TicketID
FROM Ticket T
INNER JOIN TicketRecur TR ON T.TicketID = TR.SourceTicketID
WHERE T.DateDeactivated IS NULL AND T.TicketStatusID = @iTicketStatusID
GROUP BY T.TicketID
END
Else
Begin
--Filter the Tickets first
Insert into @temp (TID)
Select T.TicketID
From Ticket T
INNER JOIN Company C on C.CompanyID = T.CompanyID
Left Join @temp KeywordTicket on T.TicketID = KeywordTicket.TID
WHERE
((@iCompanyID=-1) OR (T.CompanyID = @iCompanyID))
AND ((@iMultiCompanyID=-1) OR (C.MultiCompanyID = @iMultiCompanyID))
AND ((@iBillable=-1) OR (T.Billable = @iBillable) OR ((@iBillable=2) AND (T.Billable=1) AND (T.Billed=0)))
AND ((@iAssignedUserID=-1)
OR ((@iAssignedUserID=0) AND (T.AssignedUserID is null))
OR ((@iAssignedUserID=-2) AND (T.AssignedUserID is not null))
OR (T.AssignedUserID = @iAssignedUserID))
AND ((@iQueueID=-1 AND T.QueueID <> 37) OR (T.QueueID = @iQueueID))
AND ((@iTechID=-1) OR (T.TechID = @iTechID))
AND ((@iProjectID=-1) OR (T.ProjectID = @iProjectID))
AND (((@iTicketStatusID=-1) AND (T.TicketStatusID <> 8)) OR (@iTicketStatusID=-2) OR (T.TicketStatusID = @iTicketStatusID))
AND T.DateDeactivated is null
AND ((@iStartDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated >= @iStartDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate >= @iStartDate)) OR ((@iOpenClosed=2) AND (T.DueDate >= @iStartDate)) )
AND ((@iEndDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated <= @iEndDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate <= @iEndDate)) OR ((@iOpenClosed=2) AND (T.DueDate <= @iEndDate)))
AND ((@iIssueID=-1) OR (T.IssueID=@iIssueID))
AND ((@iCreatedByID = -1) OR (T.CreatedByUserID = @iCreatedByID))
Group By T.TicketID
--Backup Users Assigned
Insert into @temp (TID)
Select T.TicketID
From Ticket T
INNER JOIN TicketBackupUser TBU on TBU.TicketID = T.TicketID and TBU.UserID = @iAssignedUserID
INNER JOIN Company C on C.CompanyID = T.CompanyID
WHERE
((@iCompanyID=-1) OR (T.CompanyID = @iCompanyID))
AND ((@iMultiCompanyID=-1) OR (C.MultiCompanyID = @iMultiCompanyID))
AND ((@iBillable=-1) OR (T.Billable = @iBillable) OR ((@iBillable=2) AND (T.Billable=1) AND (T.Billed=0)))
AND ((@iQueueID=-1 AND T.QueueID <> 37) OR (T.QueueID = @iQueueID))
AND ((@iTechID=-1) OR (T.TechID = @iTechID))
AND ((@iProjectID=-1) OR (T.ProjectID = @iProjectID))
-- ONLY SHOW NEW TICKETS
AND (T.TicketStatusID=1)
AND T.DateDeactivated is null
AND ((@iStartDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated >= @iStartDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate >= @iStartDate)) OR ((@iOpenClosed=2) AND (T.DueDate >= @iStartDate)) )
AND ((@iEndDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated <= @iEndDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate <= @iEndDate)) OR ((@iOpenClosed=2) AND (T.DueDate <= @iEndDate)))
AND ((@iIssueID=-1) OR (T.IssueID=@iIssueID))
AND ((@iCreatedByID = -1) OR (T.CreatedByUserID = @iCreatedByID))
Group By T.TicketID
IF @iKeyword <> '%%'
BEGIN
INSERT INTO @Results (TID)
SELECT TicketID
FROM [Entry]
INNER JOIN @temp T on T.TID = [Entry].TicketID
WHERE Notes like @iKeyword
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO @Results (TID)
SELECT TicketID
FROM Note
INNER JOIN @temp T on T.TID = Note.TicketID
WHERE Note like @iKeyword
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO @Results (TID)
SELECT TicketID
FROM Ticket
INNER JOIN @temp T on T.TID = Ticket.TicketID
WHERE (Name like @iKeyword OR Title like @iKeyword OR CONTAINS(Description,@TextKeyword) )
AND DateDeactivated is null
GROUP BY TicketID
END
Else
BEGIN
INSERT INTO @Results (TID)
SELECT TID
From @temp
END
END
DECLARE @ResultsUnique TABLE(TID INT PRIMARY KEY)
INSERT INTO @ResultsUnique
SELECT DISTINCT TID FROM @Results
SELECT T.*,
TS.Name as TicketStatusName, TS.SortOrder as TicketStatusSortOrder,
C.Name as CompanyName,
ISNULL(MC.Name, 'Ctuit') as MultiCompanyName,
ISNULL(U.DisplayName, '(Unassigned)') as AssignedUser,
Q.Name as QueueName,
CASE WHEN ISNULL(T.PublicTicket, 0) = 0 or t.Ranking is null THEN TP.Name ELSE ISNULL(CONVERT(VARCHAR, t.Ranking),'') + ' - ' + TP.Name END as PriorityName,
ISNULL(U_tech.DisplayName,'') as TechName,
"HoursWorked" = ISNULL((SELECT SUM(ISNULL(dbo.fnSafeDiv(((ceiling(DATEDIFF(n, StartTime, EndTime)/5.0))*5.0), 60.0), 0))
FROM Entry E
WHERE E.TicketID = T.TicketID and E.DateDeactivated is null), 0),
"IsBackup" = 0,
"OtherBillableTickets" = (SELECT COUNT(*)
FROM Ticket iT
WHERE iT.TicketStatusID <> 8
and iT.DateDeactivated is null
and iT.CompanyID = T.CompanyID
AND iT.Billable=1
and iT.TicketID <> T.TicketID)
,C.SupportType
,"MajorSort" = CASE WHEN T.IsClientDriven = 1 THEN 1 ELSE 2 END
FROM @ResultsUnique SelectedTickets
INNER JOIN Ticket T on T.TicketID = SelectedTickets.TID
INNER JOIN Company C on C.CompanyID = T.CompanyID
LEFT JOIN MultiCompany MC on C.MultiCompanyID = MC.MultiCompanyID
INNER JOIN TicketStatus TS on TS.TicketStatusID = T.TicketStatusID
INNER JOIN TicketPriority TP on TP.TicketPriorityID = T.TicketPriorityID
LEFT JOIN Users U on U.UserID = T.AssignedUserID
INNER JOIN Queue Q on Q.QueueID = T.QueueID
LEFT JOIN Users U_tech on U_tech.UserID = T.TechID
WHERE
((@iMinutesWorked is null) OR (ISNULL((SELECT SUM(ISNULL(DATEDIFF(n, StartTime, EndTime), 0))
FROM Entry E
WHERE E.TicketID = T.TicketID and E.DateDeactivated is null), 0) >= (@iMinutesWorked)))
ORDER BY T.IsClientDriven DESC, T.Name DESC
New version
ALTER PROCEDURE [dbo].[NEW]
@CompanyID int,
@MultiCompanyID int,
@Billable int,
@AssignedUserID int,
@QueueID int,
@TicketStatusID int,
@StartDate smalldatetime = null,
@EndDate smalldatetime = null,
@Keyword varchar(50) = '',
@ProjectID int = -1,
@TechID int = -1,
@OpenClosed int = 0,
@IssueID int =-1,
@CreatedByID int = -1,
@TicketName varchar(50) = '',
@FilteredKeyword varchar(50) = '',
@MinutesWorked int = null,
@SubscribedUserID int = -1,
@CPMStatus int = 0,
@TicketRecurOn BIT
AS
SET NOCOUNT ON
DECLARE
@iCompanyID int,
@iMultiCompanyID int,
@iBillable int,
@iAssignedUserID int,
@iQueueID int,
@iTicketStatusID int,
@iStartDate date,-- = null,
@iEndDate date,-- = null,
@iProjectID int,-- = -1,
@iTechID int,-- = -1,
@iKeyword varchar(52),
@iOpenClosed int = 3,
@iIssueID int,-- =-1,
@iCreatedByID int,-- = -1
@iTicketName varchar(50),
@iFilteredKeyword varchar(50),
@iMinutesWorked int,
@iSubscribedUserID int,
@iCPMStatus int
SET @iCompanyID = @CompanyID
SET @iMultiCompanyID = @MultiCompanyID
SET @iBillable = @Billable
SET @iAssignedUserID = @AssignedUserID
SET @iQueueID = @QueueID
SET @iTicketStatusID = @TicketStatusID
SET @iStartDate = Cast(@StartDate as Date)
SET @iEndDate = Cast(@EndDate as Date)
SET @iProjectID = @ProjectID
SET @iTechID = @TechID
SET @iIssueID = @IssueID
SET @iOpenClosed = @OpenClosed
SET @iCreatedByID = @CreatedByID
SET @iTicketName = @TicketName
SET @iFilteredKeyword = @FilteredKeyword
SET @iMinutesWorked = @MinutesWorked
SET @iSubscribedUserID = @SubscribedUserID
SET @iCPMStatus = @CPMStatus
DECLARE @TextKeyword varchar(54)
DECLARE @ResetSearch bit
If LTRIM(RTRIM(@Keyword)) <> ''
BEGIN
--SET @iKeyword = '%' + LTRIM(RTRIM(@Keyword)) + '%'
SET @iKeyword = '"%"' + LTRIM(RTRIM(@Keyword)) + '"%"'
SET @TextKeyword = '"' + LTRIM(RTRIM(@Keyword)) + '"'
Set @ResetSearch = 1
END
ELSE
BEGIN
SET @iKeyword = '"%"' + LTRIM(RTRIM(@iFilteredKeyword)) + '"%"'
SET @TextKeyword = '"' + LTRIM(RTRIM(@iFilteredKeyword)) + '"'
Set @ResetSearch = 0
END
SET @iTicketName = LTRIM(RTRIM(@iTicketName))
--CB: If the user included the quotes already then replace the doubled double quote with single double quote
SET @TextKeyword = Replace(@TextKeyword,'""','"')
--CB: The user will be including quotes in the string, so it will break iKeyword, replacing those out.
SET @iKeyword = Replace(@iKeyword,'"','')
CREATE TABLE #temp
(
ID INT PRIMARY KEY IDENTITY(1,1),
TID INT,
UNIQUE CLUSTERED (ID,TID)
)
--DECLARE @Results TABLE
-- (
-- ID INT PRIMARY KEY IDENTITY(1,1),
-- TID INT,
-- UNIQUE CLUSTERED (ID,TID)
-- )
IF object_id('tempdb.dbo.#Results', 'u') IS NOT NULL
DROP TABLE #Results
CREATE TABLE #Results
(
ID INT IDENTITY(1,1),
TID INT
)
If @iTicketName <> ''
BEGIN
--Only Search TicketName
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.Ticket
WHERE Name = @iTicketName
AND DateDeactivated is null
GROUP BY TicketID
END
ELSE If @ResetSearch = 1
BEGIN
--Only Search for the keywords
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.[Entry]
WHERE CONTAINS(Notes,@TextKeyword)
--WHERE Notes like @iKeyword
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.Note
--WHERE Note like @iKeyword
WHERE CONTAINS(Note, @TextKeyword)
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.Ticket
--Using the text keyword in all contains clauses. The likeness is handled there.
WHERE (Name like @iKeyword OR CONTAINS(Title,@TextKeyword) OR CONTAINS(Description,@TextKeyword) )
AND DateDeactivated is null
GROUP BY TicketID
End
ELSE If @iSubscribedUserID <> -1
BEGIN
--Only Search for Subscribed tickets
INSERT INTO #Results (TID)
SELECT t.TicketID
FROM dbo.Ticket t
INNER JOIN dbo.TicketSubscriber ts on t.TicketID = ts.TicketID AND ts.UserID = @iSubscribedUserID
WHERE DateDeactivated is null AND t.TicketStatusID <> 8
GROUP BY t.TicketID
End
ELSE If @iCPMStatus <> 0
BEGIN
--Only Search for ticket that have CPM status "pending review" or "reviewed"
INSERT INTO #Results (TID)
SELECT t.TicketID
FROM dbo.Ticket t
WHERE DateDeactivated is null
AND t.CPMReviewStatus = @CPMStatus
GROUP BY t.TicketID
End
ELSE IF @TicketRecurOn = 1
BEGIN
INSERT INTO #ResultS(TID)
SELECT T.TicketID
FROM Ticket T
INNER JOIN TicketRecur TR ON T.TicketID = TR.SourceTicketID
WHERE T.DateDeactivated IS NULL AND T.TicketStatusID = @iTicketStatusID
GROUP BY T.TicketID
END
Else
Begin
--Filter the Tickets first
Insert into #temp (TID)
Select T.TicketID
From dbo.Ticket T
INNER JOIN dbo.Company C on C.CompanyID = T.CompanyID
Left Join #temp KeywordTicket on T.TicketID = KeywordTicket.TID
WHERE
((@iCompanyID=-1) OR (T.CompanyID = @iCompanyID))
AND ((@iMultiCompanyID=-1) OR (C.MultiCompanyID = @iMultiCompanyID))
AND ((@iBillable=-1) OR (T.Billable = @iBillable) OR ((@iBillable=2) AND (T.Billable=1) AND (T.Billed=0)))
AND ((@iAssignedUserID=-1)
OR ((@iAssignedUserID=0) AND (T.AssignedUserID is null))
OR ((@iAssignedUserID=-2) AND (T.AssignedUserID is not null))
OR (T.AssignedUserID = @iAssignedUserID))
AND ((@iQueueID=-1 AND T.QueueID <> 37) OR (T.QueueID = @iQueueID))
AND ((@iTechID=-1) OR (T.TechID = @iTechID))
AND ((@iProjectID=-1) OR (T.ProjectID = @iProjectID))
AND (((@iTicketStatusID=-1) AND (T.TicketStatusID <> 8)) OR (@iTicketStatusID=-2) OR (T.TicketStatusID = @iTicketStatusID))
AND T.DateDeactivated is null
AND ((@iStartDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated >= @iStartDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate >= @iStartDate)) OR ((@iOpenClosed=2) AND (T.DueDate >= @iStartDate)) )
AND ((@iEndDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated <= @iEndDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate <= @iEndDate)) OR ((@iOpenClosed=2) AND (T.DueDate <= @iEndDate)))
AND ((@iIssueID=-1) OR (T.IssueID=@iIssueID))
AND ((@iCreatedByID = -1) OR (T.CreatedByUserID = @iCreatedByID))
Group By T.TicketID
--Backup Users Assigned
Insert into #temp (TID)
Select T.TicketID
From dbo.Ticket T
INNER JOIN dbo.TicketBackupUser TBU on TBU.TicketID = T.TicketID and TBU.UserID = @iAssignedUserID
INNER JOIN dbo.Company C on C.CompanyID = T.CompanyID
WHERE
((@iCompanyID=-1) OR (T.CompanyID = @iCompanyID))
AND ((@iMultiCompanyID=-1) OR (C.MultiCompanyID = @iMultiCompanyID))
AND ((@iBillable=-1) OR (T.Billable = @iBillable) OR ((@iBillable=2) AND (T.Billable=1) AND (T.Billed=0)))
AND ((@iQueueID=-1 AND T.QueueID <> 37) OR (T.QueueID = @iQueueID))
AND ((@iTechID=-1) OR (T.TechID = @iTechID))
AND ((@iProjectID=-1) OR (T.ProjectID = @iProjectID))
-- ONLY SHOW NEW TICKETS
AND (T.TicketStatusID=1)
AND T.DateDeactivated is null
AND ((@iStartDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated >= @iStartDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate >= @iStartDate)) OR ((@iOpenClosed=2) AND (T.DueDate >= @iStartDate)) )
AND ((@iEndDate is null) OR ((@iOpenClosed=0) AND (T.DateActivated <= @iEndDate)) OR ((@iOpenClosed=1) AND (T.CompletedDate <= @iEndDate)) OR ((@iOpenClosed=2) AND (T.DueDate <= @iEndDate)))
AND ((@iIssueID=-1) OR (T.IssueID=@iIssueID))
AND ((@iCreatedByID = -1) OR (T.CreatedByUserID = @iCreatedByID))
Group By T.TicketID
IF @iKeyword <> '%%'
BEGIN
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.[Entry]
INNER JOIN #temp T on T.TID = [Entry].TicketID
--WHERE Notes like @iKeyword
WHERE CONTAINS(Notes,@TextKeyword)
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.Note
INNER JOIN #temp T on T.TID = Note.TicketID
--WHERE Note like @iKeyword
WHERE CONTAINS(Note, @TextKeyword)
AND DateDeactivated is null
GROUP BY TicketID
INSERT INTO #Results (TID)
SELECT TicketID
FROM dbo.Ticket
INNER JOIN #temp T on T.TID = Ticket.TicketID
--WHERE (Name like @iKeyword OR Title like @iKeyword OR CONTAINS(Description,@TextKeyword) )
WHERE (Name like @iKeyword OR CONTAINS(Title, @TextKeyword) OR CONTAINS(Description,@TextKeyword) )
AND DateDeactivated is null
GROUP BY TicketID
END
Else
BEGIN
INSERT INTO #Results (TID)
SELECT TID
From #temp
END
END
--DECLARE @ResultsUnique TABLE(TID INT PRIMARY KEY)
IF object_id('tempdb.dbo.#ResultsUnique', 'u') IS NOT NULL
DROP TABLE #ResultsUnique
CREATE TABLE #ResultsUnique
(TID INT)
INSERT INTO #ResultsUnique
SELECT DISTINCT TID FROM #Results
SELECT T.TicketID, T.Name, T.CompanyID, T.ContactID, T.Title, T.[Description], T.QueueID, T.AssignedUserID, T.TicketPriorityID, T.TicketStatusID, T.DueDate, T.IssueID, T.SubIssueID, T.Billable, T.QuotedPrice,
T.QuotedHour, T.AuthorizedByContactID, T.Billed, T.DateActivated, T.DateDeactivated, T.TicketSourceID, T.CreatedByUserID, T.LastModifiedByUserID, T.CompletedDate, T.ProjectID, T.TechID, T.AmountBilled,
T.BilledCode, T.BilledNotes, T.Comped, T.CompReason, T.CompAmount, T.Ranking, T.PublicTicket, T.DateApproved, T.BillingCompanyID, T.InvoiceNumber, T.DeveloperID, T.IsClientDriven, T.CPMReviewStatus,
T.CPMReviewDate, T.CPMReviewUserID,
TS.Name as TicketStatusName, TS.SortOrder as TicketStatusSortOrder,
C.Name as CompanyName,
ISNULL(MC.Name, 'Ctuit') as MultiCompanyName,
ISNULL(U.DisplayName, '(Unassigned)') as AssignedUser,
Q.Name as QueueName,
CASE WHEN ISNULL(T.PublicTicket, 0) = 0 or t.Ranking is null THEN TP.Name ELSE ISNULL(CONVERT(VARCHAR, t.Ranking),'') + ' - ' + TP.Name END as PriorityName,
ISNULL(U_tech.DisplayName,'') as TechName,
"HoursWorked" = ISNULL(HoursWorked.HoursWorked, 0),
"IsBackup" = 0,
"OtherBillableTickets" = OtherBillableTickets.OtherBillableTickets
,C.SupportType
,"MajorSort" = CASE WHEN T.IsClientDriven = 1 THEN 1 ELSE 2 END
FROM #ResultsUnique SelectedTickets
INNER JOIN dbo.Ticket T on T.TicketID = SelectedTickets.TID
INNER JOIN dbo.Company C on C.CompanyID = T.CompanyID
LEFT JOIN dbo.MultiCompany MC on C.MultiCompanyID = MC.MultiCompanyID
INNER JOIN dbo.TicketStatus TS on TS.TicketStatusID = T.TicketStatusID
INNER JOIN dbo.TicketPriority TP on TP.TicketPriorityID = T.TicketPriorityID
LEFT JOIN dbo.Users U on U.UserID = T.AssignedUserID
CROSS APPLY (SELECT COUNT(*) OtherBillableTickets
FROM dbo.Ticket iT
WHERE iT.TicketStatusID <> 8
and iT.DateDeactivated is null
and iT.CompanyID = T.CompanyID
AND iT.Billable=1
and iT.TicketID <> T.TicketID) OtherBillableTickets
INNER JOIN dbo.[Queue] Q on Q.QueueID = T.QueueID
LEFT JOIN dbo.Users U_tech on U_tech.UserID = T.TechID
OUTER APPLY (SELECT SUM(ISNULL(CASE WHEN 60.0 = 0 THEN 0 ELSE ((ceiling(DATEDIFF(n, StartTime, EndTime)/5.0))*5.0) / 60.0 END, 0)) HoursWorked
FROM dbo.[Entry] E
WHERE E.TicketID = T.TicketID and E.DateDeactivated is null) HoursWorked
WHERE
((@iMinutesWorked is null) OR (ISNULL((SELECT SUM(ISNULL(DATEDIFF(n, StartTime, EndTime), 0))
FROM dbo.[Entry] E
WHERE E.TicketID = T.TicketID and E.DateDeactivated is null), 0) >= (@iMinutesWorked)))
ORDER BY T.IsClientDriven DESC, T.Name DESC
DROP TABLE #Results
DROP TABLE #ResultsUnique
DROP TABLE #temp