unit uViewDocumentosContratoCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewDocumentos, ActnList,
  TB2Item, TBX, TB2Dock, TB2Toolbar, cxControls, cxContainer, 
  uBizContratosCliente, uContratosClienteController, ImgList,
  PngImageList, ComCtrls, Menus;

type
  IViewDocumentosContratoCliente = interface
  ['{564599A5-ECEB-4A1F-8791-22B37282A11C}']
    function GetController : IContratosClienteController;
    procedure SetController (const Value : IContratosClienteController);
    property Controller : IContratosClienteController read GetController write SetController;

    function GetContrato: IBizContratoCliente;
    procedure SetContrato(const Value: IBizContratoCliente);
    property Contrato: IBizContratoCliente read GetContrato write SetContrato;
  end;

  TfrViewDocumentosContratoCliente = class(TfrViewDocumentos, IViewDocumentosContratoCliente)
  private
    FController : IContratosClienteController;
    FContrato: IBizContratoCliente;
    function GetController : IContratosClienteController;
    procedure SetController (const Value : IContratosClienteController);
    function GetContrato: IBizContratoCliente;
    procedure SetContrato(const Value: IBizContratoCliente);

  protected
    procedure Sincronizar; override;
    function RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean; override;

  public
    property Controller : IContratosClienteController read GetController write SetController;
    property Contrato: IBizContratoCliente read GetContrato write SetContrato;

  end;

var
  frViewDocumentosContratoCliente: TfrViewDocumentosContratoCliente;

implementation
{$R *.dfm}

{ TfrViewDocumentosContrato }

function TfrViewDocumentosContratoCliente.GetController: IContratosClienteController;
begin
  Result := FController;
end;

function TfrViewDocumentosContratoCliente.GetContrato: IBizContratoCliente;
begin
  Result := FContrato;
end;

function TfrViewDocumentosContratoCliente.RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean;
begin
  inherited;
  Result := Controller.GestorDocumentosController.DescargarFichero(Contrato.ID, NombreFichero, DirectorioDestino);
end;

procedure TfrViewDocumentosContratoCliente.SetController(const Value: IContratosClienteController);
begin
  FController := Value;
end;

procedure TfrViewDocumentosContratoCliente.SetContrato(const Value: IBizContratoCliente);
begin
  FContrato := Value;
  try
    ShowHourglassCursor;
    //Inicializamos la lista de documentos local con los ficheros del servidor
    if Assigned(FContrato) and Assigned(FController) then
       ListaFicheros := Controller.GestorDocumentosController.DarListaDocumentos(Contrato.ID);

    RefrescarVisualizador;
  finally
    HideHourglassCursor;
  end;
end;

procedure TfrViewDocumentosContratoCliente.Sincronizar;
begin
  inherited;

//De momento el action actSincronizar con el servidor estará oculto y se activa, hay que tener en cuenta lo comentado
{
  if Contrato.EsNuevo then
  begin
    if (ShowConfirmMessage('Se han producido cambios', 'Se han producido cambios y no se puede sincronizar hasta que no se guarden.' + #10#13 +
      '¿Desea guardarlos ahora?') = IDYES) then
      actGuardar.Execute
    else
      ShowInfoMessage('Recuerde guardar los cambios si quiere previsualizar o imprimir.');
  end;
}
  if Assigned(Contrato) then
  begin
    try
      ShowHourglassCursor;
      Controller.GestorDocumentosController.SincronizarDocumentos(Contrato.ID, ListaFicheros, Directorio);
    finally
      HideHourglassCursor;
    end;
  end;
end;

end.
