unit uProveedoresController;

interface

uses
  uCustomEditor,
  uContactosController, uBizContactos,
  uIEditorProveedores, uIEditorProveedor, uIDataModuleContactos, uIDataModuleProveedores;

type
  IProveedoresController = interface(IContactosController)
  end;

  TProveedoresController = class(TContactosController, IProveedoresController)
  public
    constructor Create; override;

    function Buscar(const ID: Integer): IBizContacto; override;
    function BuscarTodos: IBizContacto; override;
    function Nuevo : IBizContacto; override;
    procedure Ver(AContacto : IBizContacto); override;
    procedure VerTodos(AContactos: IBizContacto); override;
    function ElegirContacto(AContactos : IBizContacto;
      AMensaje: String; AMultiSelect: Boolean): IBizContacto; override;
  end;

implementation

uses
  SysUtils, cxControls, Dialogs, uDataModuleProveedores, uEditorRegistryUtils,
  uDataTableUtils, uDADataTable, DB, schContactosClient_Intf,
  uIEditorElegirProveedores, Controls;

{ TProveedoresController }

function TProveedoresController.Buscar(const ID: Integer): IBizContacto;
begin
  Result := (FDataModule as IDataModuleProveedores).GetItem(ID);
  FiltrarEmpresa(Result);
end;

function TProveedoresController.BuscarTodos: IBizContacto;
begin
  Result := (FDataModule as IDataModuleProveedores).GetItems;
  FiltrarEmpresa(Result);
end;

constructor TProveedoresController.Create;
begin
  inherited;
  FDataModule := TDataModuleProveedores.Create(Nil);
end;

function TProveedoresController.ElegirContacto(AContactos: IBizContacto;
  AMensaje: String; AMultiSelect: Boolean): IBizContacto;
var
  AEditor : IEditorElegirProveedores;
begin
  Result := NIL;

  CreateEditor('EditorElegirProveedores', IEditorElegirProveedores, AEditor);
  try
    with AEditor do
    begin
      Contactos := AContactos;
      Controller := Self;
      MultiSelect := AMultiSelect;
      if IsPositiveResult(ShowModal) then
        Result := ContactosSeleccionados;
    end;
  finally
    AEditor := NIL;
  end;
end;

function TProveedoresController.Nuevo: IBizContacto;
var
  AContacto : IBizProveedor;
begin
  AContacto := (FDataModule as IDataModuleProveedores).NewItem;
  FiltrarEmpresa(AContacto);  
  AContacto.DataTable.Active := True;
  AContacto.Insert;
  Result := AContacto;
end;

procedure TProveedoresController.Ver(AContacto: IBizContacto);
var
  AEditor : IEditorProveedor;
begin
  CreateEditor('EditorProveedor', IEditorProveedor, AEditor);
  with AEditor do
  begin
    Contacto := AContacto;
    Controller := Self;
    ShowModal;
  end;
end;

procedure TProveedoresController.VerTodos(AContactos: IBizContacto);
var
  AEditor : IEditorProveedores;
begin
  CreateEditor('EditorProveedores', IEditorProveedores, AEditor);
  with AEditor do
  begin
    Contactos := AContactos;
    Controller := Self;
    ShowEmbedded;
  end;
end;

end.
