Tecsitel_FactuGES2/Source/Modulos/Contactos/Controller/uGruposEmpleadoController.pas

220 lines
6.2 KiB
ObjectPascal
Raw Blame History

unit uGruposEmpleadoController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
uIDataModuleEmpleados, uBizGruposEmpleado;
type
IGruposEmpleadoController = interface(IControllerBase)
['{6820BA19-5E5E-459F-9001-FB4A712ACC4C}']
function BuscarTodos: IBizGrupoEmpleado;
procedure VerTodos(AGruposEmpleado: IBizGrupoEmpleado);
procedure Anadir(AGrupoEmpleado : IBizGrupoEmpleado);
function Eliminar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean;
function Guardar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean;
procedure DescartarCambios(AGrupoEmpleado : IBizGrupoEmpleado);
function Localizar(AGruposEmpleado: IBizGrupoEmpleado; ADescripcion:String): Boolean;
function DarListaGruposEmpleado: TStringList;
end;
TGruposEmpleadoController = class(TControllerBase, IGruposEmpleadoController)
protected
FDataModule : IDataModuleEmpleados;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarGrupoEmpleado(AGrupoEmpleado: IBizGrupoEmpleado): Boolean;
procedure AsignarDataModule; virtual;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean;
function Guardar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean;
procedure DescartarCambios(AGrupoEmpleado : IBizGrupoEmpleado); virtual;
procedure Anadir(AGrupoEmpleado : IBizGrupoEmpleado);
function BuscarTodos: IBizGrupoEmpleado;
procedure VerTodos(AGruposEmpleado: IBizGrupoEmpleado);
function Localizar(AGruposEmpleado: IBizGrupoEmpleado; ADescripcion:String): Boolean;
function DarListaGruposEmpleado: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils,
uIEditorGruposEmpleado, uDataModuleEmpleados,
uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf;
{ TGruposEmpleadoController }
procedure TGruposEmpleadoController.Anadir(AGrupoEmpleado: IBizGrupoEmpleado);
begin
AGrupoEmpleado.Insert;
end;
procedure TGruposEmpleadoController.AsignarDataModule;
begin
FDataModule := TDataModuleEmpleados.Create(Nil);
end;
function TGruposEmpleadoController.BuscarTodos: IBizGrupoEmpleado;
begin
Result := FDataModule.GetGruposEmpleado;
end;
constructor TGruposEmpleadoController.Create;
begin
inherited;
AsignarDataModule;
end;
function TGruposEmpleadoController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TGruposEmpleadoController.DarListaGruposEmpleado: TStringList;
var
AGruposEmpleado: IBizGrupoEmpleado;
begin
AGruposEmpleado := BuscarTodos;
AGruposEmpleado.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
AGruposEmpleado.DataTable.First;
while not AGruposEmpleado.DataTable.EOF do
begin
Add(AGruposEmpleado.DESCRIPCION);
AGruposEmpleado.DataTable.Next;
end;
end;
finally
AGruposEmpleado := NIL;
end;
end;
procedure TGruposEmpleadoController.DescartarCambios(AGrupoEmpleado: IBizGrupoEmpleado);
begin
if not Assigned(AGrupoEmpleado) then
raise Exception.Create ('GrupoEmpleado no asignado');
ShowHourglassCursor;
try
if (AGrupoEmpleado.State in dsEditModes) then
AGrupoEmpleado.Cancel;
AGrupoEmpleado.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TGruposEmpleadoController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TGruposEmpleadoController.ValidarGrupoEmpleado(AGrupoEmpleado: IBizGrupoEmpleado): Boolean;
begin
if not Assigned(AGrupoEmpleado) then
raise Exception.Create ('GrupoEmpleado no asignada');
if (AGrupoEmpleado.DataTable.State in dsEditModes) then
AGrupoEmpleado.DataTable.Post;
if Length(AGrupoEmpleado.DESCRIPCION) = 0 then
raise Exception.Create('Debe indicar al menos la descripci<63>n de este grupo.');
Result := True;
end;
procedure TGruposEmpleadoController.VerTodos(AGruposEmpleado: IBizGrupoEmpleado);
var
AEditor : IEditorGruposEmpleado;
begin
AEditor := NIL;
CreateEditor('EditorGruposEmpleado', IEditorGruposEmpleado, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.GruposEmpleado := AGruposEmpleado;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TGruposEmpleadoController.Eliminar(AGrupoEmpleado: IBizGrupoEmpleado): Boolean;
begin
if not Assigned(AGrupoEmpleado) then
raise Exception.Create ('GrupoEmpleado no asignada');
ShowHourglassCursor;
try
if (AGrupoEmpleado.State in dsEditModes) then
AGrupoEmpleado.Cancel;
AGrupoEmpleado.Delete;
AGrupoEmpleado.DataTable.ApplyUpdates;
HideHourglassCursor;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TGruposEmpleadoController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TGruposEmpleadoController.Guardar(AGrupoEmpleado: IBizGrupoEmpleado): Boolean;
begin
Result := False;
if ValidarGrupoEmpleado(AGrupoEmpleado) then
begin
ShowHourglassCursor;
try
if (AGrupoEmpleado.DataTable.State in dsEditModes) then
AGrupoEmpleado.DataTable.Post;
AGrupoEmpleado.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TGruposEmpleadoController.Localizar(AGruposEmpleado: IBizGrupoEmpleado; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with AGruposEmpleado.DataTable do
begin
DisableControls;
First;
if not Locate(fld_GruposEmpleadoDESCRIPCION, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.