spAddUpdate_ClientUserDashboardPanel

Parameters

Parameter Parameter Type Mode Description
@PKID int INOUT
@ClientUsersID int IN
@SiteContentID int IN
@CategoryTypeID int IN
@TypeID int IN
@AuxID int IN
@DockingLocation nvarchar(1000) IN
@DockingIndex int IN
@IsCollapsed bit IN

Definition

Copy


CREATE      PROCEDURE dbo.spAddUpdate_ClientUserDashboardPanel
    (
        @PKID int output,
        @ClientUsersID int
        @SiteContentID int,
        @CategoryTypeID int,
        @TypeID int,
        @AuxID int,
        @DockingLocation nvarchar (1000),
        @DockingIndex int ,
        @IsCollapsed bit

    )
    AS

    if (@PKID<=0) begin

    INSERT INTO ClientUserDashboardPanel
    (
        ClientUsersID, 
        SiteContentID,
        CategoryTypeID,
        TypeID,
        AuxID,
        DockingLocation, 
        DockingIndex, 
        IsCollapsed, 
        saved_date

    )

    VALUES
    (
        @ClientUsersID
        @SiteContentID,
        @CategoryTypeID,
        @TypeID,
        @AuxID,
        @DockingLocation,
        @DockingIndex,
        @IsCollapsed,
        getutcdate()        
    )

    SELECT
        @PKID = @@Identity



    end else begin


        DECLARE @PreviousPane nvarchar(1000)
        DECLARE @PreviousIndex int

        SELECT 
        @PreviousPane = DockingLocation,
        @PreviousIndex = DockingIndex
        FROM
        dbo.ClientUserDashboardPanel
        WHERE
        ID = @PKID

        if @DockingLocation = @PreviousPane
            begin

            if @DockingIndex = @PreviousIndex
                begin
                /*Nothing has changed*/
                return
                end
            if @DockingIndex > @PreviousIndex
                begin
                /*Same pane new index is higher that previous*/
                UPDATE dbo.ClientUserDashboardPanel
                SET
                DockingIndex = DockingIndex -1
                WHERE
                ClientUsersID = @ClientUsersID
                AND
                SiteContentID = @SiteContentID
                AND
                DockingLocation = @DockingLocation
                AND
                DockingIndex  <= @DockingIndex            



                end

            if @DockingIndex < @PreviousIndex
                begin
                /*Same pane new index is lower than previous*/
                UPDATE dbo.ClientUserDashboardPanel
                SET
                DockingIndex = DockingIndex +1
                WHERE
                ClientUsersID = @ClientUsersID
                AND
                SiteContentID = @SiteContentID
                AND
                DockingLocation = @DockingLocation
                AND
                DockingIndex  < @PreviousIndex    


                end

            end

        else
            begin
            /*Different pane*/
            UPDATE dbo.ClientUserDashboardPanel
            SET
            DockingIndex = DockingIndex +1
            WHERE
            ClientUsersID = @ClientUsersID
            AND
            SiteContentID = @SiteContentID
            AND
            DockingLocation = @DockingLocation
            AND
            DockingIndex  >= @DockingIndex


            UPDATE dbo.ClientUserDashboardPanel
            SET
            DockingIndex = DockingIndex -1
            WHERE
            ClientUsersID = @ClientUsersID
            AND
            SiteContentID = @SiteContentID
            AND
            DockingLocation = @PreviousPane
            AND
            DockingIndex  > @PreviousIndex


        end



        /*Do the Update*/
        UPDATE ClientUserDashboardPanel SET
            ClientUsersID = @ClientUsersID,
            SiteContentID = @SiteContentID,
            CategoryTypeID = @CategoryTypeID,
            TypeID = @TypeID,
            AuxID = @AuxID,
            DockingLocation = @DockingLocation,
            DockingIndex = @DockingIndex,
            IsCollapsed = @IsCollapsed,
            saved_date = getutcdate()

        WHERE ID=@PKID

    end