unit uViewContactosAsociados;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewBase, ComCtrls, ToolWin, dxLayoutControl, StdCtrls, DB,
  uDADataTable, cxControls, ImgList, PngImageList, uBizContacto,
  cxContainer, cxEdit, cxTextEdit, cxMemo, Grids, DBGrids, DBCtrls,
  ActnList, XPMan;

type
  IViewContactosAsociados = interface(IViewBase)
  ['{2074C14D-12BD-42EC-8A49-8E66BE20BD3B}']
  end;

  TfrViewContactosAsociados = class(TfrViewBase, IViewContactosAsociados)
    dxLayoutControl1: TdxLayoutControl;
    dxLayoutGroup1: TdxLayoutGroup;
    dxLayoutGroup2: TdxLayoutGroup;
    DADataSource1: TDADataSource;
    dxLayoutControl1Item2: TdxLayoutItem;
    ToolBar2: TToolBar;
    bAsociarContacto: TToolButton;
    PngImageList: TPngImageList;
    bEliminarContactoAsociado: TToolButton;
    DBLookupListBox1: TDBLookupListBox;
    dxLayoutControl1Item3: TdxLayoutItem;
    bEditar: TToolButton;
    ActionList1: TActionList;
    actAnadir: TAction;
    actEliminar: TAction;
    actEditar: TAction;
    XPManifest1: TXPManifest;
    procedure actEditarUpdate(Sender: TObject);
    procedure actEliminarUpdate(Sender: TObject);
    procedure actEditarExecute(Sender: TObject);
    procedure actEliminarExecute(Sender: TObject);
    procedure actAnadirExecute(Sender: TObject);
  private
    FContacto : IBizContacto;
  protected
    function GetContacto: IBizContacto;
    procedure SetContacto(const Value: IBizContacto);
  public
    property Contacto: IBizContacto read GetContacto write SetContacto;
  end;

var
  frViewContactosAsociados: TfrViewContactosAsociados;

implementation

uses LiteralesContactos, uDataModuleContactos;

{$R *.dfm}

{ TfrViewCategoriasContacto }

function TfrViewContactosAsociados.GetContacto: IBizContacto;
begin
  Result := FContacto;
end;

procedure TfrViewContactosAsociados.SetContacto(const Value: IBizContacto);
begin
  FContacto := Value;
  if Assigned(FContacto) then
    DADataSource1.DataTable := FContacto.Asociados.DataTable
  else
    DADataSource1.DataTable := NIL;
end;

procedure TfrViewContactosAsociados.actEditarUpdate(Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := not Contacto.Asociados.IsEmpty;
end;

procedure TfrViewContactosAsociados.actEliminarUpdate(Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := not Contacto.Asociados.IsEmpty;
end;

procedure TfrViewContactosAsociados.actEditarExecute(Sender: TObject);
var
  AContacto : IBizContacto;
begin
  try
    AContacto := dmContactos.GetContacto(Contacto.Asociados.CODIGOASOCIADO);
    AContacto.Show;
    Contacto.Asociados.UpdateContactoAsociado(AContacto);
  finally
    AContacto := Nil;
  end;
end;

procedure TfrViewContactosAsociados.actEliminarExecute(Sender: TObject);
begin
  if (MessageDlg(msgLitBorrarContactoAsociado, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
     Contacto.Asociados.Delete;
end;

procedure TfrViewContactosAsociados.actAnadirExecute(Sender: TObject);
var
  AContactos : IBizContacto;
begin
  AContactos := dmContactos.GetContactos;

  try
    if AContactos.ShowForMultiSelect = mrOK then
    begin
      AContactos := dmContactos.GetItemsSeleccionados(AContactos);
      Contacto.Asociados.AppendContactos(Contacto.CODIGO, AContactos);
    end;
  finally
    AContactos := NIL;
  end;
end;

end.
