CREATE OR ALTER PROCEDURE [dbo].[Device_ReadActiveWithPendingAuthRequestsByUserId]
    @UserId UNIQUEIDENTIFIER,
    @ExpirationMinutes INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        D.*,
        AR.Id as AuthRequestId,
        AR.CreationDate as AuthRequestCreationDate
    FROM dbo.DeviceView D
             LEFT JOIN (
        SELECT TOP 1 -- Take only the top record sorted by auth request creation date
                     Id,
                     CreationDate,
                     RequestDeviceIdentifier
        FROM dbo.AuthRequestView
        WHERE Type IN (0, 1) -- Include only AuthenticateAndUnlock and Unlock types, excluding Admin Approval (type 2)
          AND CreationDate >= DATEADD(MINUTE, -@ExpirationMinutes, GETUTCDATE()) -- Ensure the request hasn't expired
          AND Approved IS NULL -- Include only requests that haven't been acknowledged or approved
        ORDER BY CreationDate DESC
    ) AR ON D.Identifier = AR.RequestDeviceIdentifier
    WHERE
        D.UserId = @UserId
      AND D.Active = 1; -- Include only active devices
END;