mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-21 17:15:10 +00:00
Agrego lo necesario para devolver varios assets y el endpoint para devolver los assets para recetas
This commit is contained in:
parent
6c9d40ddf0
commit
462ad74cd2
3 changed files with 89 additions and 1 deletions
|
|
@ -256,3 +256,27 @@ func (s *SmartContract) GetAllAssets(ctx contractapi.TransactionContextInterface
|
||||||
|
|
||||||
return assets, nil
|
return assets, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMultipleAssets devuelve múltiples activos basados en sus IDs
|
||||||
|
func (s *SmartContract) GetMultipleAssets(ctx contractapi.TransactionContextInterface, assetIDs []string) ([]*Receta, error) {
|
||||||
|
var recetas []*Receta
|
||||||
|
|
||||||
|
for _, id := range assetIDs {
|
||||||
|
assetJSON, err := ctx.GetStub().GetState(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to read from world state: %v", err)
|
||||||
|
}
|
||||||
|
if assetJSON == nil {
|
||||||
|
continue // o puedes devolver error si prefieres
|
||||||
|
}
|
||||||
|
|
||||||
|
var receta Receta
|
||||||
|
err = json.Unmarshal(assetJSON, &receta)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
recetas = append(recetas, &receta)
|
||||||
|
}
|
||||||
|
|
||||||
|
return recetas, nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,5 +79,45 @@ public class RecetaController {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
|
return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/todas")
|
||||||
|
public ResponseEntity<List<RecetaDto>> obtenerRecetasPorIds(@RequestBody Map<String, List<String>> requestBody) {
|
||||||
|
try {
|
||||||
|
List<String> ids = requestBody.get("ids");
|
||||||
|
if (ids == null || ids.isEmpty()) {
|
||||||
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("IDs solicitados: " + ids);
|
||||||
|
List<Receta> recetas = recetaService.obtenerRecetasPorIds(ids);
|
||||||
|
List<RecetaDto> recetasDto = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Receta receta : recetas) {
|
||||||
|
RecetaDto recetaDto = new RecetaDto();
|
||||||
|
recetaDto.setOwner(receta.getOwner());
|
||||||
|
recetaDto.setPrescripcionAnteriorId(receta.getPrescripcionAnteriorId());
|
||||||
|
recetaDto.setStatus(receta.getStatus());
|
||||||
|
recetaDto.setStatusChange(receta.getStatusChange());
|
||||||
|
recetaDto.setPrioridad(receta.getPrioridad());
|
||||||
|
recetaDto.setMedicacion(receta.getMedicacion());
|
||||||
|
recetaDto.setRazon(receta.getRazon());
|
||||||
|
recetaDto.setNotas(receta.getNotas());
|
||||||
|
recetaDto.setPeriodoDeTratamiento(receta.getPeriodoDeTratamiento());
|
||||||
|
recetaDto.setInstruccionesTratamiento(receta.getInstruccionesTratamiento());
|
||||||
|
recetaDto.setPeriodoDeValidez(receta.getPeriodoDeValidez());
|
||||||
|
recetaDto.setDniPaciente(receta.getDniPaciente());
|
||||||
|
recetaDto.setFechaDeAutorizacion(receta.getFechaDeAutorizacion());
|
||||||
|
recetaDto.setCantidad(receta.getCantidad());
|
||||||
|
recetaDto.setExpectedSupplyDuration(receta.getExpectedSupplyDuration());
|
||||||
|
|
||||||
|
recetasDto.add(recetaDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ResponseEntity<>(recetasDto, HttpStatus.OK);
|
||||||
|
} catch (IOException | GatewayException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -161,4 +161,28 @@ public class RecetaService {
|
||||||
System.out.println("mapper:" + receta.getDniPaciente());
|
System.out.println("mapper:" + receta.getDniPaciente());
|
||||||
return receta;
|
return receta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Receta> obtenerTodosLosAssets() throws GatewayException, IOException {
|
||||||
|
System.out.println("\n--> Evaluate Transaction: GetAllAssets");
|
||||||
|
|
||||||
|
var evaluateResult = contract.evaluateTransaction("GetAllAssets");
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
|
||||||
|
// Leer como array de Recetas
|
||||||
|
List<Receta> recetas = objectMapper.readValue(evaluateResult,
|
||||||
|
objectMapper.getTypeFactory().constructCollectionType(List.class, Receta.class));
|
||||||
|
|
||||||
|
return recetas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Receta> obtenerRecetasPorIds(List<String> assetIds) throws GatewayException, IOException {
|
||||||
|
System.out.println("\n--> Evaluate Transaction: GetMultipleAssets");
|
||||||
|
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
String idsJson = objectMapper.writeValueAsString(assetIds);
|
||||||
|
|
||||||
|
var evaluateResult = contract.evaluateTransaction("GetMultipleAssets", idsJson);
|
||||||
|
return objectMapper.readValue(evaluateResult,
|
||||||
|
objectMapper.getTypeFactory().constructCollectionType(List.class, Receta.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue