fnGetEmailJobRecipientsInList
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EmailJobID | int | IN | |
@ListID | int | IN |
Definition
Copy
CREATE FUNCTION [dbo].[fnGetEmailJobRecipientsInList]
(
@EmailJobID int,
@ListID int
)
RETURNS @Recipient TABLE (
[EmailJob_RecipientID] int
)
AS
BEGIN
Declare @ListOrigin INT
Declare @UserImportID INT
SELECT @ListOrigin = Origin, @UserImportID = UserImportID From dbo.EmailList WHERE ID = @ListID
IF @ListOrigin = 0 BEGIN
IF @UserImportID > 0 Begin
INSERT INTO @Recipient
SELECT ejr.ID
FROM (SELECT ID, UserID, EmailAddress FROM EmailJob_Recipient WHERE EmailJobID = @EmailJobID) ejr
JOIN (SELECT cu.ID, cu.Email FROM
(SELECT ClientUsersID
FROM [dbo].[UserImportMasterList] uiml WHERE UserImportID = @UserImportID) uiml
JOIN [dbo].[clientusers] cu
ON cu.ID = uiml.ClientUsersID
WHERE cu.[Deleted] = 0 AND cu.[active]=1) [user]
ON ejr.UserID = [user].ID OR (ejr.UserID = 0 AND ejr.EmailAddress = [user].Email)
END
ELSE BEGIN
-- This is a NetCom list that isnt tied to an import, so it represents all Client Users
INSERT INTO @Recipient
SELECT ejr.ID
FROM (SELECT ID, UserID, EmailAddress FROM EmailJob_Recipient WHERE EmailJobID = @EmailJobID) ejr
JOIN (SELECT Email, ID FROM [dbo].[clientusers] WHERE [Deleted] = 0 AND [active]=1) [user]
ON ejr.UserID = [user].ID OR (ejr.UserID = 0 AND ejr.EmailAddress = [user].Email)
END
END
Else IF @ListOrigin = 1 BEGIN
INSERT INTO @Recipient
SELECT ejr.ID
FROM (SELECT ID, EmailAddress FROM EmailJob_Recipient WHERE EmailJobID = @EmailJobID) ejr
JOIN (SELECT EmailAddress FROM EmailListUploadMasterList WHERE EmailListID = @ListID)eluml
On ejr.EmailAddress = eluml.EmailAddress
End
Else IF @ListOrigin = 2 BEGIN
--If a recipients BOS People ID is in the list, then its a match.
--Also, if the email addresses match, and the BOS ID is different, it is a match
--This is used to match recipients from a UDF/Imported target list to a Query basd list
INSERT INTO @Recipient
SELECT ejr.ID
FROM (SELECT ID, BackOfficeSystemPeopleID FROM EmailJob_Recipient WHERE EmailJobID = @EmailJobID) ejr
JOIN (SELECT PeopleID FROM EmailList_People WHERE EmailListID = @ListID)elp
On ejr.BackOfficeSystemPeopleID = elp.PeopleID
UNION
Select recipients.RecipientID
FROM ( SELECT ejr.ID as RecipientID, ejr.EmailAddress, bosp.BackOfficeSystemID AS BOSID
FROM (SELECT ID, BackOfficeSystemPeopleID, EmailAddress FROM EmailJob_Recipient WHERE EmailJobID = @EmailJobID) ejr
JOIN BackOfficeSystemPeople bosp
ON ejr.BackOfficeSystemPeopleID = bosp.ID) recipients
JOIN ( SELECT elp.EmailAddress, bosp.BackOfficeSystemID AS BOSID
FROM (SELECT PeopleID, EmailAddress FROM EmailList_People WHERE EmailListID = @ListID)elp
JOIN BackOfficeSystemPeople bosp
ON elp.PeopleID = bosp.ID) list
ON recipients.EmailAddress = list.EmailAddress AND recipients.BOSID <> list.BOSID
End
Else IF @ListOrigin = 3 BEGIN
INSERT INTO @Recipient
SELECT ejr.ID
FROM (SELECT ID, EmailAddress FROM EmailJob_Recipient WHERE EmailJobID = @EmailJobID) ejr
JOIN (SELECT EmailAddress FROM EmailList_UserDefined WHERE EmailListID = @ListID)elud
On ejr.EmailAddress = elud.EmailAddress
End
RETURN
END