CREATE PROCEDURE dbo.SearchClients
(
@ClientFirstName varchar(20) = null,
@ClientLastName varchar(20) = null,
@ClientHasTattoo bit = null,
@JobFinished bit = null,
@JobTypeID smallint = null,
@ArtistID Smallint = null,
@JobTotalHoursMinimum float = null,
@JobTotalHoursMaximum float = null,
@AdvertisingID smallint = null,
@ClientDOBMinimum datetime = null,
@ClientDOBMaximum datetime = null,
@ClientStreetAddress varchar(75) = null,
@ClientCity varchar(20) = null,
@ClientState varchar(2) = null,
@ClientZip varchar(10) = null,
@ClientHomePhone varchar(14) = null,
@ClientWorkPhone varchar(14) = null,
@ClientEmail varchar(50) = null,
@ClientSex bit = null,
@JobDateMinimum datetime = null,
@JobDateMaximum datetime = null,
@JobTitle varchar(50) = null
)
AS
IF @JobFinished IS NULL AND
@JobTypeID IS NULL AND
@ArtistID IS NULL AND
@JobTotalHoursMaximum IS NULL AND
@JobTotalHoursMinimum IS NULL AND
@JobDateMinimum IS NULL AND
@JobDateMaximum IS NULL AND
@JobTitle IS NULL
BEGIN
SELECT DISTINCT
ClientID, ClientFirstName, ClientLastName, ClientStreetAddress,
ClientCity, ClientState, ClientZip, ClientHomePhone,
ClientWorkPhone, ClientEmail, ClientDOB, ClientSex, ClientHasTattoo, AdvertisingID
FROM Clients
WHERE
(ClientFirstName LIKE ISNULL(@ClientFirstName, ClientFirstName) + '%') AND
(ClientLastName LIKE ISNULL(@ClientLastName, ClientLastName) + '%') AND
(ClientHasTattoo = ISNULL(@ClientHasTattoo, ClientHasTattoo)) AND
(AdvertisingID = ISNULL(@AdvertisingID, AdvertisingID)) AND
(ClientDOB >= ISNULL(@ClientDOBMinimum, ClientDOB)) AND
(ClientDOB <= ISNULL(@ClientDOBMaximum, ClientDOB)) AND
(ClientStreetAddress LIKE ISNULL(@ClientStreetAddress, ClientStreetAddress) + '%') AND
(ClientCity LIKE ISNULL(@ClientCity, ClientCity) + '%') AND
(ClientState LIKE ISNULL(@ClientState, ClientState) + '%') AND
(ClientZip LIKE ISNULL(@ClientZip, ClientZip) + '%') AND
(ClientHomePhone LIKE ISNULL(@ClientHomePhone, ClientHomePhone) + '%') AND
(ClientWorkPhone LIKE ISNULL(@ClientWorkPhone, ClientWorkPhone) + '%') AND
(ClientEmail LIKE ISNULL(@ClientEmail, ClientEmail) + '%') AND
(ClientSex = ISNULL(@ClientSex, ClientSex))
ORDER BY ClientID, ClientLastName, ClientFirstName
END
ELSE
BEGIN
SELECT DISTINCT
Clients.ClientID, Clients.ClientFirstName, Clients.ClientLastName,
Clients.ClientStreetAddress, Clients.ClientCity,
Clients.ClientState, Clients.ClientZip, Clients.ClientHomePhone,
Clients.ClientWorkPhone, Clients.ClientEmail,
Clients.ClientDOB, Clients.ClientSex,
Clients.ClientHasTattoo, Clients.AdvertisingID
FROM Job RIGHT OUTER JOIN
Clients ON Job.ClientID = Clients.ClientID
WHERE
(Clients.ClientFirstName LIKE ISNULL(@ClientFirstName, Clients.ClientFirstName) + '%') AND
(Clients.ClientLastName LIKE ISNULL(@ClientLastName, Clients.ClientLastName) + '%') AND
(Clients.ClientHasTattoo = ISNULL(@ClientHasTattoo, Clients.ClientHasTattoo)) AND
(Job.JobFinished = ISNULL(@JobFinished, Job.JobFinished)) AND
(Job.ArtistID = ISNULL(@ArtistID, Job.ArtistID)) AND
(Job.JobTotalHours >= ISNULL(@JobTotalHoursMinimum, Job.JobTotalHours)) AND
(Job.JobTotalHours <= ISNULL(@JobTotalHoursMaximum, Job.JobTotalHours)) AND
(Job.JobTypeID = ISNULL(@JobTypeID, Job.JobTypeID)) AND
(Clients.AdvertisingID = ISNULL(@AdvertisingID, Clients.AdvertisingID)) AND
(Clients.ClientDOB >= ISNULL(@ClientDOBMinimum, Clients.ClientDOB)) AND
(Clients.ClientDOB <= ISNULL(@ClientDOBMaximum, Clients.ClientDOB)) AND
(Clients.ClientStreetAddress LIKE ISNULL(@ClientStreetAddress,
Clients.ClientStreetAddress) + '%') AND
(Clients.ClientCity LIKE ISNULL(@ClientCity, Clients.ClientCity) + '%') AND
(Clients.ClientState LIKE ISNULL(@ClientState, Clients.ClientState) + '%') AND
(Clients.ClientZip LIKE ISNULL(@ClientZip, Clients.ClientZip) + '%') AND
(Clients.ClientHomePhone LIKE ISNULL(@ClientHomePhone, Clients.ClientHomePhone) + '%') AND
(Clients.ClientWorkPhone LIKE ISNULL(@ClientWorkPhone, Clients.ClientWorkPhone) + '%') AND
(Clients.ClientEmail LIKE ISNULL(@ClientEmail, Clients.ClientEmail) + '%') AND
(Clients.ClientSex = ISNULL(@ClientSex, Clients.ClientSex)) AND
(Job.JobDate >= ISNULL(@JobDateMinimum, Job.JobDate)) AND
(Job.JobDate <= ISNULL(@JobDateMaximum, Job.JobDate)) AND
(Job.JobTitle LIKE ISNULL(@JobTitle, Job.JobTitle) + '%')
ORDER BY Clients.ClientID, Clients.ClientLastName, Clients.ClientFirstName
END
Comments
Post a Comment