Commit 3ea01c6b authored by Gabriel Macena's avatar Gabriel Macena

Caso de uso Cadastrar Livro finalizado.

parent 222f107c
...@@ -63,9 +63,35 @@ begin ...@@ -63,9 +63,35 @@ begin
end; end;
procedure ucCadastrarLivro.Effect_EditarLivro(piRequest: utRequest; piTransition: utTransition); procedure ucCadastrarLivro.Effect_EditarLivro(piRequest: utRequest; piTransition: utTransition);
var
lFieldLivroIn,
lFieldLivroOut,
lExemplares : utField;
lExemplar : ngExemplar;
lEnumExemplar : acEnumerator;
begin begin
fSavePoint := Session.AddSavePoint;
try
lFieldLivroIn := piRequest.Message.RootField.FieldByName('Livro');
fLivro := Session.LoadObject(ngLivro, acOIDInt.Create(lFieldLivroIn.AttributeByName('OID').AsInteger)) as ngLivro;
lEnumExemplar := fLivro.Exemplares.GetEnumerator;
try
lFieldLivroOut := piRequest.Response.RootField.AddField('Livro');
fLivro.toXML(lFieldLivroOut);
lExemplares := lFieldLivroOut.AddField('Exemplares');
while not lEnumExemplar.EOL do
begin
lExemplar := lEnumExemplar.Current as ngExemplar;
lExemplar.toXML(lExemplares.AddField('Exemplar'));
lEnumExemplar.MoveNext;
end;
finally
lEnumExemplar.Free;
end;
except
Session.RollBackToSavePoint(fSavePoint);
raise;
end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
...@@ -200,19 +226,55 @@ begin ...@@ -200,19 +226,55 @@ begin
begin begin
lExemplar := lEnumExemplar.Current as ngExemplar; lExemplar := lEnumExemplar.Current as ngExemplar;
lExemplar.toXML(lFieldExemplares.AddField('Exemplar')); lExemplar.toXML(lFieldExemplares.AddField('Exemplar'));
lEnumExemplar.MoveNext; lEnumExemplar.MoveNext;
end; end;
finally finally
lEnumExemplar.Free; lEnumExemplar.Free;
end; end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
procedure ucCadastrarLivro.Effect_ExcluirExemplar(piRequest: utRequest; piTransition: utTransition); procedure ucCadastrarLivro.Effect_ExcluirExemplar(piRequest: utRequest; piTransition: utTransition);
var
lFieldExemplar,
lFieldExemplares,
lFieldResult : utField;
lExemplar : ngExemplar;
lEnumExemplar : acEnumerator;
lOQL : IContarEmprestimosExemplar;
begin begin
lFieldExemplar := piRequest.Message.RootField.FieldByName('Exemplar');
lExemplar := Session.LoadObject(ngExemplar, acOIDInt.Create(lFieldExemplar.AttributeByName('OID').AsInteger)) as ngExemplar;
if fLivro.Exemplares.IndexOf(lExemplar) = -1
then raise EucException.Create('Exemplar no existe na lista de exemplares do livro.');
lOQL := utEmprestimoOQL.ContarEmprestimosExemplar(Self.Session);
lOQL.Param_oid.Value := lExemplar.IDO.AsVariant;
lFieldResult := utField.Create;
try
lOQL.LoadDataSet(lFieldResult);
if lFieldResult.ValueByPath('DATAPACKET.ROWDATA.ROW.@C0').AsInteger > 0
then raise EucException.Create('No possvel excluir o exemplar, ele possui pelo menos um emprstimo associado.');
fLivro.Exemplares.Remove(lExemplar);
finally
lFieldResult.Free;
end;
lFieldExemplares := piRequest.Response.RootField.AddField('Exemplares');
lEnumExemplar := fLivro.Exemplares.GetEnumerator;
try
while not lEnumExemplar.EOL do
begin
lExemplar := lEnumExemplar.Current as ngExemplar;
lExemplar.toXML(lFieldExemplares.AddField('Exemplar'));
lEnumExemplar.MoveNext;
end;
finally
lEnumExemplar.Free;
end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment