FactuGES2/Source/Modulos/Gestion de documentos/Controller/uGestorDocumentosController.pas
david 3877d4b360 - Mejorado el alta/modificación de contratos y presupuestos al desactivar los documentos relacionados hasta que se accede a la pestaña
- Revisión para tratar de localizar porqué se queda esperando en el ordenador de Víctor.

git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@651 f4e31baf-9722-1c47-927c-6f952f962d4b
2016-09-09 16:53:08 +00:00

132 lines
4.5 KiB
ObjectPascal

unit uGestorDocumentosController;
interface
uses
Classes, uROTypes, FactuGES_Intf, uControllerBase, uDataModuleGestorDocumentos;
type
IGestorDocumentosController = interface(IControllerBase)
['{75EC4D1B-A7A2-4C81-B2DA-8688240D6EC2}']
function DarListaDocumentos(const ID: Integer): TStringList;
function DescargarFichero(const ID:Integer; const NombreFichero: String; const DestinoFichero: String): Boolean;
function SubirFichero(const ID:Integer; const NombreFichero: String; const Fichero: Binary): Boolean;
procedure SincronizarDocumentos(const ID: Integer; FListaDocumentos: TStringList; Directorio: String);
function EliminarDirectorio(const ID: Integer): Boolean;
function GetAlmacen: TRdxAlmacenes;
procedure SetAlmacen(const Value: TRdxAlmacenes);
property Almacen: TRdxAlmacenes read GetAlmacen write SetAlmacen;
end;
TGestorDocumentosController = class(TControllerBase, IGestorDocumentosController)
protected
FDataModule : IDataModuleGestorDocumentos;
FAlmacen : TRdxAlmacenes;
//Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de
//este controller
procedure AsignarDataModule; virtual;
procedure SetAlmacen(const Value: TRdxAlmacenes);
function GetAlmacen: TRdxAlmacenes;
public
constructor Create; override;
destructor Destroy; override;
property Almacen: TRdxAlmacenes read GetAlmacen write SetAlmacen;
function DarListaDocumentos(const ID: Integer): TStringList;
function DescargarFichero(const ID:Integer; const NombreFichero: String; const DestinoFichero: String): Boolean;
function SubirFichero(const ID:Integer; const NombreFichero: String; const Fichero: Binary): Boolean;
procedure SincronizarDocumentos(const ID: Integer; FListaDocumentos: TStringList; Directorio: String);
function EliminarDirectorio(const ID: Integer): Boolean;
end;
implementation
{ TGestorDocumentosController }
uses SysUtils, Dialogs;
procedure TGestorDocumentosController.AsignarDataModule;
begin
FDataModule := TDataModuleGestorDocumentos.Create(Nil);
end;
constructor TGestorDocumentosController.Create;
begin
inherited;
AsignarDataModule;
FAlmacen := TRdxAlmacenes_Presupuestos;
end;
function TGestorDocumentosController.DarListaDocumentos(
const ID: Integer): TStringList;
begin
Result := FDataModule.DarListaDocumentos(ID, Almacen);
end;
function TGestorDocumentosController.DescargarFichero(const ID: Integer;
const NombreFichero, DestinoFichero: String): Boolean;
begin
Result := FDataModule.DescargarFichero(ID, Almacen, NombreFichero, DestinoFichero);
end;
destructor TGestorDocumentosController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TGestorDocumentosController.EliminarDirectorio(const ID: Integer): Boolean;
begin
Result := FDataModule.EliminarID(ID, Almacen);
end;
function TGestorDocumentosController.GetAlmacen: TRdxAlmacenes;
begin
Result := FAlmacen;
end;
procedure TGestorDocumentosController.SetAlmacen(const Value: TRdxAlmacenes);
begin
FAlmacen := Value;
end;
procedure TGestorDocumentosController.SincronizarDocumentos(const ID: Integer;
FListaDocumentos: TStringList; Directorio: String);
var
ListaDocumentosServidor: TStringList;
ANombreFichero: String;
AFichero: Binary;
i, j: Integer;
begin
//Eliminamos todos los documentos del servidor que ya no existan en el cliente.
ListaDocumentosServidor := DarListaDocumentos(ID);
for i:= 0 to ListaDocumentosServidor.Count - 1 do
if not FListaDocumentos.Find(ListaDocumentosServidor.Strings[i], j) then
if not FDataModule.EliminarFichero(ID, Almacen, ListaDocumentosServidor.Strings[i]) then
ShowMessage('Error al borrar fichero' + ListaDocumentosServidor.Strings[i]);
//Subimos todos los ficheros que existan al servidor (de momento no se miran fechas)
for i := 0 to FListaDocumentos.Count - 1 do
begin
ANombreFichero := Directorio + FListaDocumentos.Strings[i];
if FileExists(ANombreFichero) then
begin
AFichero := Binary.Create;
AFichero.LoadFromFile(ANombreFichero);
SubirFichero(ID, ExtractFileName(ANombreFichero), AFichero);
end;
end;
end;
function TGestorDocumentosController.SubirFichero(const ID: Integer;
const NombreFichero: String; const Fichero: Binary): Boolean;
begin
Result := FDataModule.SubirFichero(ID, Almacen, NombreFichero, Fichero);
end;
end.