unit uDataModuleGestorDocumentos;

interface

uses
  DB, uDataModuleBase, uROClient, uRORemoteService, Classes, uDADataStreamer,
  uDABin2DataStreamer, uROTypes, uDADataTable, FactuGES_Intf;

type
  IDataModuleGestorDocumentos = interface
  ['{03537996-181D-428C-9B1D-56B499F0048E}']
    function DarListaDocumentos(const ID : Integer; const Almacen: TRdxAlmacenes): TStringList;
    function DescargarFichero(const ID : Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String; const DestinoFichero: String): Boolean;
    function SubirFichero(const ID : Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String; const Fichero: Binary): Boolean;
    function EliminarFichero(const ID : Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String): Boolean;
    function EliminarID(const ID : Integer; const Almacen: TRdxAlmacenes): Boolean;
  end;

  TDataModuleGestorDocumentos = class(TDataModuleBase, IDataModuleGestorDocumentos)
    Bin2DataStreamer: TDABin2DataStreamer;
    RORemoteService: TRORemoteService;
    procedure DAClientDataModuleCreate(Sender: TObject);

  protected
    procedure AsignarClaseNegocio(APresupuesto: TDADataTable); virtual;

  public
    function DarListaDocumentos(const ID : Integer; const Almacen: TRdxAlmacenes): TStringList;
    function DescargarFichero(const ID : Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String; const DestinoFichero: String): Boolean;
    function SubirFichero(const ID : Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String; const Fichero: Binary): Boolean;
    function EliminarFichero(const ID : Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String): Boolean;
    function EliminarID(const ID : Integer; const Almacen: TRdxAlmacenes): Boolean;
  end;

implementation
{$R *.DFM}

uses
  SysUtils, uDataModuleConexion, DataAbstract4_Intf;

{ TdmGestorDocumentos }

procedure TDataModuleGestorDocumentos.AsignarClaseNegocio(APresupuesto: TDADataTable);
begin
//
end;

procedure TDataModuleGestorDocumentos.DAClientDataModuleCreate(Sender: TObject);
begin
  RORemoteService.Channel := dmConexion.Channel;
  RORemoteService.Message := dmConexion.Message;
end;

function TDataModuleGestorDocumentos.DarListaDocumentos(const ID: Integer; const Almacen: TRdxAlmacenes): TStringList;
var
  AResultado : StringArray;
  i: Integer;
begin
  try
    AResultado := (RORemoteService as IsrvGestorDocumentos).DarListaFicheros(Almacen, ID);
    Result := TStringList.Create;
    for i:= 0 to AResultado.Count - 1 do
        Result.Add(AResultado.Items[i]);
  finally
    FreeANDNIL(AResultado)
  end;
end;

function TDataModuleGestorDocumentos.DescargarFichero(const ID: Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String;
const DestinoFichero: String): Boolean;
var
  AFichero: Binary;

begin
 Result := False;
 try
   AFichero := (RORemoteService as IsrvGestorDocumentos).DescargarFichero(Almacen, ID, NombreFichero);
   AFichero.SaveToFile((DestinoFichero + NombreFichero));
   Result := True;
 finally
   FreeAndNil(AFichero);
 end;
end;

function TDataModuleGestorDocumentos.EliminarFichero(const ID: Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String): Boolean;
begin
 Result := False;
 try
   Result := (RORemoteService as IsrvGestorDocumentos).EliminarFichero(Almacen, ID, NombreFichero);
 finally
   //
 end;
end;

function TDataModuleGestorDocumentos.EliminarID(const ID: Integer; const Almacen: TRdxAlmacenes): Boolean;
begin
 Result := False;
 try
   Result := (RORemoteService as IsrvGestorDocumentos).EliminarID(Almacen, ID);
 finally
   //
 end;
end;

function TDataModuleGestorDocumentos.SubirFichero(const ID: Integer; const Almacen: TRdxAlmacenes; const NombreFichero: String; const Fichero: Binary): Boolean;
begin
 Result := False;
 try
   Result := (RORemoteService as IsrvGestorDocumentos).SubirFichero(Almacen, ID, NombreFichero, Fichero);
 finally
   //
 end;
end;

end.
