unit uViewDocumentosPresupuestoCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewDocumentos, ActnList,
  TB2Item, SpTBXItem, TB2Dock, TB2Toolbar, cxControls, cxContainer, 
  uBizPresupuestosCliente, uPresupuestosClienteController, ImgList,
  PngImageList, ComCtrls, Menus;

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

    function GetPresupuesto: IBizPresupuestoCliente;
    procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
    property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto;
  end;

  TfrViewDocumentosPresupuestoCliente = class(TfrViewDocumentos, IViewDocumentosPresupuestoCliente)
  private
    FController : IPresupuestosClienteController;
    FPresupuesto: IBizPresupuestoCliente;
    function GetController : IPresupuestosClienteController;
    procedure SetController (const Value : IPresupuestosClienteController);
    function GetPresupuesto: IBizPresupuestoCliente;
    procedure SetPresupuesto(const Value: IBizPresupuestoCliente);

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

  public
    property Controller : IPresupuestosClienteController read GetController write SetController;
    property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto;

  end;

var
  frViewDocumentosPresupuestoCliente: TfrViewDocumentosPresupuestoCliente;

implementation
{$R *.dfm}

{ TfrViewDocumentosPresupuesto }

function TfrViewDocumentosPresupuestoCliente.GetController: IPresupuestosClienteController;
begin
  Result := FController;
end;

function TfrViewDocumentosPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente;
begin
  Result := FPresupuesto;
end;

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

procedure TfrViewDocumentosPresupuestoCliente.SetController(const Value: IPresupuestosClienteController);
begin
  FController := Value;
end;

procedure TfrViewDocumentosPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente);
begin
  FPresupuesto := Value;
  //Inicializamos la lista de documentos local con los ficheros del servidor
  if Assigned(FPresupuesto) and Assigned(FController) then
     ListaFicheros := Controller.GestorDocumentosController.DarListaDocumentos(Presupuesto.ID);

  RefrescarVisualizador;
end;

procedure TfrViewDocumentosPresupuestoCliente.Sincronizar;
begin
  inherited;

//De momento el action actSincronizar con el servidor estará oculto y se activa, hay que tener en cuenta lo comentado
{
  if Presupuesto.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;
}
  Controller.GestorDocumentosController.SincronizarDocumentos(Presupuesto.ID, ListaFicheros, Directorio);
end;

end.
