ALTER PROCEDURE [User].GetUserByEmail
@Email VARCHAR(200),
@GetActiveOnly BIT
AS
BEGIN
IF (@GetActiveOnly = 1)
BEGIN
SELECT portalUser.PortalUserId AS 'UserId',
organisation.OrganisationId AS 'OrganisationId',
organisation.LookUpOrganisationTypeId AS 'OrganisationTypeId'
FROM Admin.PortalUser portalUser
INNER JOIN Admin.LookUpPortalUserRole userRole ON userRole.LookUpPortalUserRoleId = portalUser.LookUp`enter code here`PortalUserRoleId
INNER JOIN Admin.Organisation organisation ON organisation.OrganisationId = portalUser.OrganisationId
WHERE portalUser.Email = @Email
AND portalUser.IsActive = 1
END
ELSE
BEGIN
SELECT portalUser.PortalUserId AS 'UserId',
organisation.OrganisationId AS 'OrganisationId',
organisation.LookUpOrganisationTypeId AS 'OrganisationTypeId'
FROM Admin.PortalUser portalUser
INNER JOIN Admin.LookUpPortalUserRole userRole ON userRole.LookUpPortalUserRoleId = portalUser.LookUpPortalUserRoleId
INNER JOIN Admin.Organisation organisation ON organisation.OrganisationId = portalUser.OrganisationId
WHERE portalUser.Email = @Email
END
END
@Getactiveonly
IF (@GetactiveOnly = 1)
Isactive
IsActive
You can apply some more boolean logic, leading to this unified query:
SELECT ...
WHERE portalUser.Email = @Email
AND (@GetActiveOnly = 0 OR portalUser.IsActive = 1)
In words: