unit PessoaDTO;

interface

uses
  Atributos, Classes, Constantes, Generics.Collections, DB,

  SynCommons,
  mORMot,

  PessoaFisicaDTO, PessoaJuridicaDTO, PessoaEnderecoDTO, PessoaContatoDTO,
  PessoaTelefoneDTO, ClienteDTO;

type
{$IFDEF Servidor_mORMot}
  TPessoa = class(TSQLRecord)
{$ELSE}
  TPessoa = class(TVO)
{$ENDIF}

  private
    FPK: Integer;
    FNOME: RawUTF8;
    FTIPO: RawUTF8;
    FEMAIL: RawUTF8;
    FSITE: RawUTF8;
    FCLIENTE: RawUTF8;
    FFORNECEDOR: RawUTF8;
    FCOLABORADOR: RawUTF8;
    FTRANSPORTADORA: RawUTF8;

    //1:N
    FListaPessoaContatoDTO: TObjectList<TPessoa_Contato>;
    FListaPessoaEnderecoDTO: TObjectList<TPessoa_Endereco>;
    FListaPessoaTelefoneDTO: TObjectList<TPessoa_Telefone>;

    //1:1
    FPessoaFisicaDTO: TPessoa_Fisica;
    FPessoaJuridicaDTO: TPessoa_Juridica;
    FClienteDTO: TCliente;

  public
    [TPK('ID', [ldGrid, ldLookup, ldComboBox])]
    property PK: Integer  read FPK write FPK;

    //1:1
    property PessoaFisicaDTO: TPessoa_Fisica read FPessoaFisicaDTO write FPessoaFisicaDTO;
    property PessoaJuridicaDTO: TPessoa_Juridica read FPessoaJuridicaDTO write FPessoaJuridicaDTO;
    property ClienteDTO: TCliente read FClienteDTO write FClienteDTO;

    //1:N
    property ListaPessoaContatoDTO: TObjectList<TPessoa_Contato> read FListaPessoaContatoDTO write FListaPessoaContatoDTO;
    property ListaPessoaEnderecoDTO: TObjectList<TPessoa_Endereco> read FListaPessoaEnderecoDTO write FListaPessoaEnderecoDTO;
    property ListaPessoaTelefoneDTO: TObjectList<TPessoa_Telefone> read FListaPessoaTelefoneDTO write FListaPessoaTelefoneDTO;

  published
    [TColumn('NOME', 'Nome', [ldGrid, ldLookup,ldComboBox], False)]
    property Nome: RawUTF8  read FNOME write FNOME;
    [TColumn('TIPO','Tipo',40,[ldGrid, ldLookup] ,False)]
    property Tipo: RawUTF8  read FTIPO write FTIPO;
    [TColumn('EMAIL','Email',[ldGrid, ldLookup] ,False)]
    property Email: RawUTF8  read FEMAIL write FEMAIL;
    [TColumn('SITE','Site',[ldGrid, ldLookup] ,False)]
    property Site: RawUTF8  read FSITE write FSITE;
    [TColumn('CLIENTE','Cliente',50,[],False)]
    property Cliente: RawUTF8  read FCLIENTE write FCLIENTE;
    [TColumn('FORNECEDOR','Fornecedor',60,[],False)]
    property Fornecedor: RawUTF8  read FFORNECEDOR write FFORNECEDOR;
    [TColumn('COLABORADOR','Colaborador',70,[],False)]
    property Colaborador: RawUTF8  read FCOLABORADOR write FCOLABORADOR;
    [TColumn('TRANSPORTADORA','Transportadora',80,[],False)]
    property Transportadora: RawUTF8  read FTRANSPORTADORA write FTRANSPORTADORA;
  end;

implementation

end.
