mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 07:25: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
|
||||
}
|
||||
|
||||
// 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();
|
||||
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());
|
||||
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