diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/Utils/Hashing.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/Utils/Hashing.java new file mode 100644 index 00000000..f4950b98 --- /dev/null +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/Utils/Hashing.java @@ -0,0 +1,33 @@ +package com.code.hyperledger.Utils; + +import java.security.NoSuchAlgorithmException; +import java.security.MessageDigest; + +public class Hashing { + public static String sha256(String input) { + try { + // Crear una instancia de MessageDigest para SHA-256 + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + + // Calcular el hash + byte[] encodedhash = digest.digest(input.getBytes()); + + // Convertir el hash a una representación hexadecimal + return bytesToHex(encodedhash); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + } + + private static String bytesToHex(byte[] hash) { + StringBuilder hexString = new StringBuilder(); + for (byte b : hash) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) { + hexString.append('0'); + } + hexString.append(hex); + } + return hexString.toString(); + } +} diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java index a0f6e3d0..c0515bde 100644 --- a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java @@ -1,6 +1,9 @@ package com.code.hyperledger.controllers; import com.code.hyperledger.coso.Receta; +import com.code.hyperledger.coso.RecetaDto; +import com.code.hyperledger.coso.AssetIdDto; +import com.code.hyperledger.Utils.Hashing; import com.code.hyperledger.services.RecetaService; import org.hyperledger.fabric.client.*; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.time.Instant; +import java.time.LocalDateTime; import java.util.Map; @RestController @@ -24,11 +28,17 @@ public class RecetaController { private RecetaService recetaService; @PostMapping("/crear") - public ResponseEntity crear(@RequestBody Receta receta) { + public ResponseEntity crear(@RequestBody Receta receta) { System.out.println("\n--> Submit Transaction: CreateAsset, creates new asset with all arguments"); - String assetId = "asset" + Instant.now().toEpochMilli(); + var now = LocalDateTime.now().toString(); + var dni = receta.getDniPaciente(); + var id = dni + now; + String assetId = Hashing.sha256(id); receta.setId(assetId); + var assetIdDto = new AssetIdDto(); + assetIdDto.setDni(dni); + assetIdDto.setTimeStamp(now); try { recetaService.cargarReceta(receta); } catch (CommitStatusException | EndorseException | CommitException | SubmitException e) { @@ -36,17 +46,35 @@ public class RecetaController { } - return new ResponseEntity<>(receta, HttpStatus.OK); + return new ResponseEntity<>(assetIdDto, HttpStatus.OK); } @PostMapping("/obtener") - public ResponseEntity find(@RequestBody Map requestBody) { + public ResponseEntity find(@RequestBody Map requestBody) { try { System.out.println("requestbody: " + requestBody); String id = requestBody.get("id"); System.out.println("id: " + id); Receta receta = recetaService.obtenerReceta(id); - return new ResponseEntity<>(receta, HttpStatus.OK); + 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()); + + return new ResponseEntity<>(recetaDto, HttpStatus.OK); } catch (IOException | GatewayException e) { e.printStackTrace(); return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE); diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/AssetIdDto.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/AssetIdDto.java new file mode 100644 index 00000000..2a1d8ae1 --- /dev/null +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/AssetIdDto.java @@ -0,0 +1,14 @@ +package com.code.hyperledger.coso; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AssetIdDto { + private String Dni; + private String TimeStamp; +} + diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java index b8adeed1..a37b2bcc 100644 --- a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java @@ -27,4 +27,4 @@ public class Receta { private int cantidad; //@JsonFormat(pattern = "yyyy-MM-dd") private String expectedSupplyDuration; -} +} \ No newline at end of file diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/RecetaDto.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/RecetaDto.java new file mode 100644 index 00000000..b28bd9bb --- /dev/null +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/RecetaDto.java @@ -0,0 +1,29 @@ +package com.code.hyperledger.coso; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RecetaDto { + private String owner; + private String prescripcionAnteriorId; + private String status; + //@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") + private String statusChange; + private String prioridad; + private String medicacion; + private String razon; + private String notas; + private String periodoDeTratamiento; + private String instruccionesTratamiento; + private String periodoDeValidez; + private String dniPaciente; + //@JsonFormat(pattern = "yyyy-MM-dd") + private String fechaDeAutorizacion; + private int cantidad; + //@JsonFormat(pattern = "yyyy-MM-dd") + private String expectedSupplyDuration; +}