Tecsitel_FactuGES2/Source/ApplicationBase/Usuarios/Controller/uPerfilesUsuarioController.pas

287 lines
7.8 KiB
ObjectPascal

unit uPerfilesUsuarioController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
uIDataModuleUsuarios, uBizUsuarios;
type
IPerfilesUsuarioController = interface(IControllerBase)
['{3D60BC4E-B244-4C08-9A1A-00A7C3B74558}']
function BuscarTodos: IBizPerfilUsuario;
procedure VerTodos;
procedure Ver(const AIDPerfil : Integer);
procedure Anadir(APerfilUsuario : IBizPerfilUsuario);
function Eliminar(APerfilUsuario : IBizPerfilUsuario): Boolean; overload;
function Eliminar(const AIDPerfil : Integer): Boolean; overload;
function Guardar(APerfilUsuario : IBizPerfilUsuario): Boolean;
procedure DescartarCambios(APerfilUsuario : IBizPerfilUsuario);
function Localizar(APerfilesUsuario: IBizPerfilUsuario; ADescripcion:String): Boolean;
function DarListaPerfilesUsuario: TStringList;
end;
TPerfilesUsuarioController = class(TControllerBase, IPerfilesUsuarioController)
protected
FDataModule : IDataModuleUsuarios;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
//Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de
//este controller
procedure AsignarDataModule; virtual;
procedure ValidarObjetos; virtual;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(APerfilUsuario : IBizPerfilUsuario): Boolean; overload;
function Eliminar(const AIDPerfil : Integer): Boolean; overload;
function Guardar(APerfilUsuario : IBizPerfilUsuario): Boolean;
procedure DescartarCambios(APerfilUsuario : IBizPerfilUsuario); virtual;
procedure Anadir(APerfilUsuario : IBizPerfilUsuario);
function BuscarTodos: IBizPerfilUsuario;
procedure VerTodos;
procedure Ver(const AIDPerfil : Integer);
function Localizar(APerfilesUsuario: IBizPerfilUsuario; ADescripcion:String): Boolean;
function DarListaPerfilesUsuario: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils,
uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows, schUsuariosClient_Intf,
uDataModuleUsuarios, uIEditorPerfilesUsuario, uIEditorPerfilUsuario;
{ TPerfilesUsuarioController }
procedure TPerfilesUsuarioController.Anadir(APerfilUsuario: IBizPerfilUsuario);
begin
APerfilUsuario.Insert;
end;
procedure TPerfilesUsuarioController.AsignarDataModule;
begin
FDataModule := TDataModuleUsuarios.Create(Nil);
end;
function TPerfilesUsuarioController.BuscarTodos: IBizPerfilUsuario;
begin
Result := FDataModule.GetPerfiles;
end;
constructor TPerfilesUsuarioController.Create;
begin
inherited;
AsignarDataModule;
end;
function TPerfilesUsuarioController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TPerfilesUsuarioController.DarListaPerfilesUsuario: TStringList;
var
APerfilesUsuario: IBizPerfilUsuario;
begin
APerfilesUsuario := BuscarTodos;
APerfilesUsuario.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
APerfilesUsuario.DataTable.First;
while not APerfilesUsuario.DataTable.EOF do
begin
Add(APerfilesUsuario.USERNAME);
APerfilesUsuario.DataTable.Next;
end;
end;
finally
APerfilesUsuario := NIL;
end;
end;
procedure TPerfilesUsuarioController.DescartarCambios(APerfilUsuario: IBizPerfilUsuario);
begin
if not Assigned(APerfilUsuario) then
raise Exception.Create ('Perfil no asignado');
ShowHourglassCursor;
try
if (APerfilUsuario.State in dsEditModes) then
APerfilUsuario.Cancel;
APerfilUsuario.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TPerfilesUsuarioController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TPerfilesUsuarioController.Eliminar(const AIDPerfil: Integer): Boolean;
begin
end;
procedure TPerfilesUsuarioController.ValidarObjetos;
var
AEditor : IEditorPerfilesUsuario;
APerfilesUsuario: IBizPerfilUsuario;
begin
APerfilesUsuario := FDataModule.GetPerfiles;
if Assigned(APerfilesUsuario) then
begin
try
APerfilesUsuario.Active := True;
CreateEditor('EditorPerfilesUsuario', IEditorPerfilesUsuario, AEditor);
if Assigned(AEditor) then
begin
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.PerfilesUsuario := APerfilesUsuario;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
finally
APerfilesUsuario := NIL;
end;
end;
end;
procedure TPerfilesUsuarioController.Ver(const AIDPerfil: Integer);
var
AEditor : IEditorPerfilUsuario;
FPerfil : IBizPerfilUsuario;
begin
FPerfil := FDataModule.GetPerfil(AIDPerfil);
if Assigned(FPerfil) then
begin
try
FPerfil.Active := True;
CreateEditor('EditorPerfilUsuario', IEditorPerfilUsuario, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.PerfilUsuario := FPerfil;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
finally
FPerfil := NIL;
end;
end;
end;
procedure TPerfilesUsuarioController.VerTodos;
var
AEditor : IEditorPerfilesUsuario;
APerfilesUsuario: IBizPerfilUsuario;
begin
APerfilesUsuario := FDataModule.GetPerfiles;
if Assigned(APerfilesUsuario) then
begin
try
APerfilesUsuario.Active := True;
CreateEditor('EditorPerfilesUsuario', IEditorPerfilesUsuario, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.PerfilesUsuario := APerfilesUsuario;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
finally
APerfilesUsuario := NIL;
end;
end;
end;
function TPerfilesUsuarioController.Eliminar(APerfilUsuario: IBizPerfilUsuario): Boolean;
begin
Result := False;
if not Assigned(APerfilUsuario) then
raise Exception.Create ('Perfil no asignado');
ShowHourglassCursor;
try
if (APerfilUsuario.State in dsEditModes) then
APerfilUsuario.Cancel;
APerfilUsuario.Delete;
APerfilUsuario.DataTable.ApplyUpdates;
HideHourglassCursor;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TPerfilesUsuarioController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TPerfilesUsuarioController.Guardar(APerfilUsuario: IBizPerfilUsuario): Boolean;
begin
Result := False;
if not Assigned(APerfilUsuario) then
raise Exception.Create ('Perfil no asignado');
ValidarObjetos;
ShowHourglassCursor;
try
if (APerfilUsuario.DataTable.State in dsEditModes) then
APerfilUsuario.DataTable.Post;
APerfilUsuario.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
function TPerfilesUsuarioController.Localizar(APerfilesUsuario: IBizPerfilUsuario; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with APerfilesUsuario.DataTable do
begin
DisableControls;
First;
if not Locate(fld_PERFILESUSERNAME, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.