page 50571 "DEV Kill Session"
{
    ApplicationArea = All;
    Caption = 'Kill Sessions (Danger)';
    Editable = true;
    PageType = List;
    SourceTable = "Active Session";
    UsageCategory = Tasks;
    InsertAllowed = false;
    ModifyAllowed = false;
    layout
    {
        area(Content)
        {
            repeater(Group)
            {
                field("User ID"; Rec."User ID")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the User ID field';
                }
                field("Session ID"; Rec."Session ID")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Session ID field';
                }
                field("Login Datetime"; Rec."Login Datetime")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Login Datetime field';
                }
                field("Client Type"; Rec."Client Type")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Client Type field';
                }
                field("Client Computer Name"; Rec."Client Computer Name")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Client Computer Name field';
                }
                field("Server Instance ID"; Rec."Server Instance ID")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Server Instance ID field';
                }
                field("Server Instance Name"; Rec."Server Instance Name")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Server Instance Name field';
                }
                field("Database Name"; Rec."Database Name")
                {
                    ApplicationArea = All;
                    StyleExpr = StyleExp;
                    ToolTip = 'Specifies the value of the Database Name field';
                }
            }
        }
    }
    actions
    {
        area(Processing)
        {
            action(Kill)
            {
                ApplicationArea = All;
                Caption = 'Kill Session';
                Image = Stop;
                Promoted = true;
                PromotedCategory = Process;
                PromotedIsBig = true;
                PromotedOnly = true;
                ToolTip = 'Kill selected session';
                trigger OnAction();
                var
                    KillMsg: Text;
                    KillLbl: Label '%1 killed your current session.', Comment = '%1 User Id';
                begin
                    if Rec."Session ID" = SessionId() then
                        exit;
                    KillMsg := StrSubstNo(KillLbl, UserID());
                    ClearLastError();
                    if not StopSession(Rec."Session ID", KillMsg) then
                        Error(GetLastErrorText);
                end;
            }
            action(Delete)
            {
                ApplicationArea = All;
                Caption = 'Delete Session';
                Image = Stop;
                Promoted = true;
                PromotedCategory = Process;
                PromotedIsBig = true;
                PromotedOnly = true;
                trigger OnAction();
                var
                    KillMsg: Text;
                    KillLbl: Label '%1 killed your current session.', Comment = '%1 User Id';
                begin
                    if Rec."Session ID" = SessionId() then
                        exit;
                    Rec.Delete(TRUE);
                end;
            }
            action(Kill_Selected)
            {
                ApplicationArea = All;
                Caption = 'Kill Session (Selected Record)';
                Image = Stop;
                Promoted = true;
                PromotedCategory = Process;
                PromotedIsBig = true;
                PromotedOnly = true;
                ToolTip = 'Kill selected session';
                trigger OnAction();
                var
                    KillMsg: Text;
                    KillLbl: Label '%1 killed your current session.', Comment = '%1 User Id';
                begin
                    Killrec();
                end;
            }
            action(Delete_Selected)
            {
                ApplicationArea = All;
                Caption = 'Delete Session (Selected Record)';
                Image = Stop;
                Promoted = true;
                PromotedCategory = Process;
                PromotedIsBig = true;
                PromotedOnly = true;
                ToolTip = 'Delete Selected Session';
                trigger OnAction();
                var
                    KillMsg: Text;
                    KillLbl: Label '%1 killed your current session.', Comment = '%1 User Id';
                begin
                    Deleterec();
                end;
            }
        }
    }
    trigger OnAfterGetRecord()
    begin
        StyleExp := 'standard';
        if Rec."Session ID" = SessionId() then
            StyleExp := 'strong';
    end;
    local procedure Killrec()
    var
        RecKill: Record "Active Session";
        KillMsg: Text;
        KillLbl: Label '%1 killed your current session.', Comment = '%1 User Id';
    begin
        CurrPage.SetSelectionFilter(RecKill);
        IF RecKill.FindSet() Then begin
            repeat
                if RecKill."Session ID" <> SessionId() then begin
                    KillMsg := StrSubstNo(KillLbl, UserID());
                    ClearLastError();
                    if not StopSession(RecKill."Session ID", KillMsg) then
                        Error(GetLastErrorText);
                End;
            until RecKill.Next() = 0;
        end;
    end;
    local procedure Deleterec()
    var
        DelRec: Record "Active Session";
    begin
        CurrPage.SetSelectionFilter(DelRec);
        IF DelRec.FindSet() Then begin
            repeat
                if DelRec."Session ID" <> SessionId() then begin
                    DelRec.Delete(TRUE);
                End;
            until DelRec.Next() = 0;
        end;
    end;
    var
        StyleExp: Text;
}