Advertisement
Guest User

Produtos - Classe concreta

a guest
Nov 25th, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.92 KB | None | 0 0
  1. unit Produto.uclass;
  2.  
  3. interface
  4.  
  5. uses
  6.   Generics.Collections,
  7.   Conexao.uclass;
  8.  
  9. type
  10.   TProduto = Class(TGERObject)
  11.   strict private
  12.     FIDProduto: integer;
  13.     FDescricao: string;
  14.     FPrUnitario: Real;
  15.     FAlteradoEm: TDateTime;
  16.   public
  17.     constructor Create; Overload;
  18.     constructor Create(
  19.         pIDProduto: Integer;
  20.         const pDescricao: String = '';
  21.         const pPrUnitario: Real = 0;
  22.         const pAlteradoEm: TDateTime = 0
  23.     ); Overload;
  24.     property ID: Integer read FIDProduto write FIDProduto;
  25.     property Descricao: string read FDescricao write FDescricao;
  26.     property PrUnitario: Real read FPrUnitario write FPrUnitario;
  27.     property AlteradoEm: TDateTime read FAlteradoEm write FAlteradoEm;
  28.   public
  29.     Function GetHashCode: Integer; Override;
  30.   End;
  31.  
  32.   TProdutos = Class(TList<TProduto>);
  33.  
  34.   TProdutoDAO = Class(TClassDAO<TProduto>)
  35.   private
  36.     function RetrieveID: Integer;
  37.   protected
  38.     Function Fill: TProduto; Override;
  39.     Procedure DoOnSave(var Value: TProduto); Override;
  40.     Procedure DoAfterSave(var Value: TProduto); Override;
  41.     Procedure DoOnDelete(Value: TProduto); Override;
  42.   public
  43.     Function GetAll: TProdutos;
  44.     Function GetByID(Value: Integer): TProduto;
  45.   End;
  46.  
  47. implementation
  48.  
  49. uses
  50.   SysUtils;
  51.  
  52. { TProdutoDAO }
  53.  
  54. procedure TProdutoDAO.DoAfterSave(var Value: TProduto);
  55. begin
  56.   inherited;
  57.   Query.InsertRecord([
  58.     Value.ID,
  59.     Value.Descricao,
  60.     Value.PrUnitario,
  61.     Value.AlteradoEm
  62.   ]);
  63. end;
  64.  
  65. procedure TProdutoDAO.DoOnDelete(Value: TProduto);
  66. begin
  67.   inherited;
  68.   AuxQuery.SQL.Text :=
  69.   'Delete From Produtos Where IDProduto = :IDProduto';
  70.   AuxQuery.Parameters.ParamByName('IDProduto').Value := Value.ID;
  71.   AuxQuery.ExecSQL;
  72. end;
  73.  
  74. procedure TProdutoDAO.DoOnSave(var Value: TProduto);
  75. begin
  76.  
  77.   inherited;
  78.  
  79.   if (Value.ID = 0)
  80.     then Value.ID := RetrieveID;
  81.  
  82.   AuxQuery.SQL.Text :=
  83.   'UPDATE OR INSERT Into Produtos ('+
  84.     'IDProduto, '+
  85.     'Descricao, '+
  86.     'PrUnitario, '+
  87.     'AlteradoEm '+
  88.   ') VALUES ( '+
  89.     ':IDProduto, '+
  90.     ':Descricao, '+
  91.     ':PrUnitario, '+
  92.     ':AlteradoEm '+
  93.   ')';
  94.  
  95.   AuxQuery.Parameters.ParamByName('IDProduto').Value := Value.ID;
  96.   AuxQuery.Parameters.ParamByName('Descricao').Value := Value.Descricao;
  97.   AuxQuery.Parameters.ParamByName('PrUnitario').Value := Value.PrUnitario;
  98.   AuxQuery.Parameters.ParamByName('AlteradoEm').Value := Value.AlteradoEm;
  99.  
  100.   AuxQuery.ExecSQL;
  101.  
  102. end;
  103.  
  104. function TProdutoDAO.Fill: TProduto;
  105. begin
  106.   inherited;
  107.   Result := TProduto.Create;
  108.   Result.ID := Query.FieldByName('IDProduto').AsInteger;
  109.   Result.Descricao := Query.FieldByName('Descricao').AsString;
  110.   Result.PrUnitario := Query.FieldByName('PrUnitario').AsFloat;
  111.   Result.AlteradoEm := Query.FieldByName('AlteradoEm').AsDateTime;
  112. end;
  113.  
  114. function TProdutoDAO.GetAll: TProdutos;
  115. begin
  116.   Query.SQL.Text :=
  117.   'Select * From Produtos Order By IDProduto';
  118.   Query.Open;
  119.   Result := TProdutos(List);
  120. end;
  121.  
  122. function TProdutoDAO.GetByID(Value: Integer): TProduto;
  123. begin
  124.  
  125.   try
  126.     Query.SQL.Text :=
  127.     'Select * From Produtos ' +
  128.     'Where IDProduto = :IDProduto';
  129.     Query.Parameters.ParamByName('IDProduto').Value := Value;
  130.     Query.Open;
  131.     Result := List[0];
  132.   except
  133.     Result := nil;
  134.   end;
  135.  
  136. end;
  137.  
  138. function TProdutoDAO.RetrieveID: Integer;
  139. begin
  140.   AuxQuery.SQL.Text :=
  141.   'Select GEN_ID(GEN_PRODUTOS_ID, 1) ID FROM RDB$DATABASE';
  142.   AuxQuery.Open;
  143.   Result := AuxQuery.FieldByName('ID').AsInteger;
  144. end;
  145.  
  146. { TProduto }
  147.  
  148. constructor TProduto.Create;
  149. begin
  150.   Self.ID := 0;
  151.   Self.AlteradoEm := now();
  152. end;
  153.  
  154. constructor TProduto.Create(pIDProduto: Integer; const pDescricao: String;
  155.   const pPrUnitario: Real; const pAlteradoEm: TDateTime);
  156. begin
  157.   Self.ID := pIDProduto;
  158.   Self.Descricao := pDescricao;
  159.   Self.PrUnitario := pPrUnitario;
  160.   Self.AlteradoEm := pAlteradoEm;
  161. end;
  162.  
  163. function TProduto.GetHashCode: Integer;
  164. begin
  165.   Result := Self.ID;
  166. end;
  167.  
  168. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement