unit uBizUsuarios;

interface

uses
  UCBase, uDAInterfaces, uDADataTable, schUsuariosClient_Intf;

const
  BIZ_CLIENT_USUARIO = 'Client.Usuario';
  BIZ_CLIENT_PERFIL_USUARIO = 'Client.PerfilUsuario';

type
  TUsuario = TUCCurrentUser;

  IBizUsuario = interface (IUSUARIOS)
    ['{1DB69F36-969C-4078-B862-6D697670BCFD}']
    function EsNuevo : Boolean;
    function EsAdministrador : Boolean;
  end;

  IBizPerfilUsuario = interface (IPERFILES)
    ['{D14DF996-A8CD-400A-BF74-C8B660199C74}']
    function EsNuevo : Boolean;
  end;


  TBizUsuario = class(TUsuariosDataTableRules, IBizUsuario)
  protected
    procedure OnNewRecord(Sender: TDADataTable); override;
  public
    function EsNuevo : Boolean;
    function EsAdministrador : Boolean;
    procedure IniciarValoresUsuarioNuevo;
  end;

  TBizPerfilUsuario = class(TPerfilesDataTableRules, IBizPerfilUsuario)
  protected
    procedure OnNewRecord(Sender: TDADataTable); override;
  public
    function EsNuevo : Boolean;
    procedure IniciarValoresPerfilNuevo;
  end;



implementation

{ TBizUsuario }

function TBizUsuario.EsAdministrador: Boolean;
begin
  Result := (USERNAME = 'admin');
end;

function TBizUsuario.EsNuevo: Boolean;
begin
  Result := (ID < 0);
end;

procedure TBizUsuario.IniciarValoresUsuarioNuevo;
begin
  TIPO := 'U';  // Usuario;
end;

procedure TBizUsuario.OnNewRecord(Sender: TDADataTable);
begin
  inherited;
  IniciarValoresUsuarioNuevo;
end;

{ TBizPerfilUsuario }

function TBizPerfilUsuario.EsNuevo: Boolean;
begin
  Result := (ID < 0);
end;

procedure TBizPerfilUsuario.IniciarValoresPerfilNuevo;
begin
  TIPO := 'P';  // Perfil
end;

procedure TBizPerfilUsuario.OnNewRecord(Sender: TDADataTable);
begin
  inherited;
  IniciarValoresPerfilNuevo;
end;

initialization
  RegisterDataTableRules(BIZ_CLIENT_USUARIO, TBizUsuario);
  RegisterDataTableRules(BIZ_CLIENT_PERFIL_USUARIO, TBizPerfilUsuario);  

finalization

end.


