// Stored Procedures
builder.HasAnnotation("SqlServer:IncludeProcedures", new
{
UpdateUserDeletionSettings = @"
CREATE PROCEDURE UpdateUserDeletionSettings
@DeletionTimeValue INT,
@DeletionTimeUnit NVARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @DeletionThreshold DATETIME;
SET @DeletionThreshold = CASE
WHEN @DeletionTimeUnit = 'Minutes' THEN DATEADD(MINUTE, -@DeletionTimeValue, GETUTCDATE())
WHEN @DeletionTimeUnit = 'Hours' THEN DATEADD(HOUR, -@DeletionTimeValue, GETUTCDATE())
WHEN @DeletionTimeUnit = 'Days' THEN DATEADD(DAY, -@DeletionTimeValue, GETUTCDATE())
WHEN @DeletionTimeUnit = 'Weeks' THEN DATEADD(WEEK, -@DeletionTimeValue, GETUTCDATE())
WHEN @DeletionTimeUnit = 'Months' THEN DATEADD(MONTH, -@DeletionTimeValue, GETUTCDATE())
WHEN @DeletionTimeUnit = 'Years' THEN DATEADD(YEAR, -@DeletionTimeValue, GETUTCDATE())
ELSE GETUTCDATE()
END;
DELETE FROM dbo.AspNetUsers
WHERE User_Status_ID = 2 AND DeactivatedAt < @DeletionThreshold;
END",
UpdateOrderStatuses = @"
CREATE PROCEDURE UpdateOrderStatuses
@OverdueTimeValue INT,
@OverdueTimeUnit NVARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @OverdueThreshold DATETIME;
SET @OverdueThreshold = CASE
WHEN @OverdueTimeUnit = 'Minutes' THEN DATEADD(MINUTE, -@OverdueTimeValue, GETUTCDATE())
WHEN @OverdueTimeUnit = 'Hours' THEN DATEADD(HOUR, -@OverdueTimeValue, GETUTCDATE())
WHEN @OverdueTimeUnit = 'Days' THEN DATEADD(DAY, -@OverdueTimeValue, GETUTCDATE())
WHEN @OverdueTimeUnit = 'Weeks' THEN DATEADD(WEEK, -@OverdueTimeValue, GETUTCDATE())
WHEN @OverdueTimeUnit = 'Months' THEN DATEADD(MONTH, -@OverdueTimeValue, GETUTCDATE())
WHEN @OverdueTimeUnit = 'Years' THEN DATEADD(YEAR, -@OverdueTimeValue, GETUTCDATE())
ELSE GETUTCDATE()
END;
UPDATE dbo.Orders
SET Order_Status_ID = CASE
WHEN Order_Date <= @OverdueThreshold THEN 2
ELSE Order_Status_ID
END
WHERE IsCollected = 0;
END",
GetQualifyingMembers = @"
CREATE PROCEDURE GetQualifyingMembers
@RewardCriteria NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
IF @RewardCriteria = 'Placed a Booking'
BEGIN
SELECT DISTINCT m.Member_ID
FROM Members m
INNER JOIN Bookings b ON b.Member_ID = m.Member_ID;
END
ELSE IF @RewardCriteria = 'Completed 10 Bookings in a Month'
BEGIN
SELECT m.Member_ID
FROM Members m
INNER JOIN Bookings b ON b.Member_ID = m.Member_ID
INNER JOIN Booking_Time_Slots bts ON b.Booking_ID = bts.Booking_ID
INNER JOIN Time_Slots ts ON bts.Time_Slot_ID = ts.Time_Slot_ID
WHERE ts.Slot_Date >= DATEADD(MONTH, -1, GETDATE())
GROUP BY m.Member_ID
HAVING COUNT(DISTINCT b.Booking_ID) >= 10;
END
ELSE IF @RewardCriteria = 'Made 20 Bookings in Last 3 Months'
BEGIN
SELECT m.Member_ID
FROM Members m
INNER JOIN Bookings b ON b.Member_ID = m.Member_ID
INNER JOIN Booking_Time_Slots bts ON b.Booking_ID = bts.Booking_ID
INNER JOIN Time_Slots ts ON bts.Time_Slot_ID = ts.Time_Slot_ID
WHERE ts.Slot_Date >= DATEADD(MONTH, -3, GETDATE())
GROUP BY m.Member_ID
HAVING COUNT(DISTINCT b.Booking_ID) >= 20;
END
ELSE IF @RewardCriteria = 'Placed First Order'
BEGIN
SELECT m.Member_ID
FROM Members m
WHERE EXISTS (
SELECT 1
FROM Orders o
WHERE o.Member_ID = m.Member_ID
AND o.Order_Date = (
SELECT MIN(o2.Order_Date)
FROM Orders o2
WHERE o2.Member_ID = m.Member_ID
)
);
END
ELSE IF @RewardCriteria = 'Made a Payment'
BEGIN
SELECT DISTINCT m.Member_ID
FROM Members m
INNER JOIN Orders o ON o.Member_ID = m.Member_ID
INNER JOIN Payments p ON p.Order_ID = o.Order_ID;
END
ELSE IF @RewardCriteria = 'High-Value Order'
BEGIN
SELECT DISTINCT m.Member_ID
FROM Members m
INNER JOIN Orders o ON o.Member_ID = m.Member_ID
WHERE o.Total_Price >= 1000;
END
ELSE IF @RewardCriteria = 'Large Quantity Order'
BEGIN
SELECT m.Member_ID
FROM Members m
WHERE (
SELECT SUM(ol.Quantity)
FROM Order_Lines ol
INNER JOIN Orders o ON ol.Order_ID = o.Order_ID
WHERE o.Member_ID = m.Member_ID
) >= 10;
END
ELSE
BEGIN
SELECT * FROM Members WHERE 1 = 0;
END
END"
});
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter