unit frameGebruikers; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, GebruikerService, Datasnap.DBClient, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids; type TfrmGebruikers = class(TFrame) dbgGebruikers: TDBGrid; Panel1: TPanel; btnGebruikerAfmelden: TButton; cdsGebruikers: TClientDataSet; dsGebruikers: TDataSource; procedure btnGebruikerAfmeldenClick(Sender: TObject); private procedure VulGebruikersGridMetData(Gebruikers: ArrayOfGebruikerGebruiker); public procedure ZoekAlleGebruikers(); end; implementation uses Agent, Main, UiContext; {$R *.dfm} procedure TfrmGebruikers.ZoekAlleGebruikers(); var fZoekGebruikersResponse: ZoekAangemeldeGebruikersResponse; begin fZoekGebruikersResponse := TAgent.Create(fmMain.UiContext).ZoekAangemeldeGebruikers(); try if fZoekGebruikersResponse.Header.Status = '200' then begin VulGebruikersGridMetData(fZoekGebruikersResponse.Gebruikers); end else begin ShowMessage(fZoekGebruikersResponse.Header.Omschrijving); end; finally fZoekGebruikersResponse.Free; end; end; procedure TfrmGebruikers.btnGebruikerAfmeldenClick(Sender: TObject); var rijteller: integer; begin if dbgGebruikers.SelectedRows.Count > 0 then begin for rijteller := 0 to dbgGebruikers.SelectedRows.Count-1 do begin dbgGebruikers.DataSource.DataSet.GotoBookmark(Pointer(dbgGebruikers.SelectedRows.Items[rijteller])); if dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersInitialen').AsString = fmMain.UiContext.Initialen then ShowMessage('Je kan jezelf hier niet afmelden') else TAgent.Create(fmMain.UiContext).GebruikerAfmelden(dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersInitialen').AsString,dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersLoginCode').AsString) end; end; ZoekAlleGebruikers(); end; procedure TfrmGebruikers.VulGebruikersGridMetData(Gebruikers: ArrayOfGebruikerGebruiker); var ii: integer; AangemeldSindsAsString: string; LaatsteActiviteitAsString: string; begin cdsGebruikers.Close; cdsGebruikers.CreateDataSet; ii := 0; while ii <= length(Gebruikers)-1 do begin if Gebruikers[ii].AangemeldSinds = nil then AangemeldSindsAsString := '' else AangemeldSindsAsString := DateTimeToStr(Gebruikers[ii].AangemeldSinds.AsUTCDateTime); if Gebruikers[ii].LaatsteActiviteit = nil then LaatsteActiviteitAsString := '' else LaatsteActiviteitAsString := DateTimeToStr(Gebruikers[ii].LaatsteActiviteit.AsUTCDateTime); cdsGebruikers.InsertRecord([Gebruikers[ii].Initialen, Gebruikers[ii].ComputerNaam, AangemeldSindsAsString, LaatsteActiviteitAsString, Gebruikers[ii].LoginCode]); ii := ii + 1; end; end; end.