WIP
[demos/kafka/demos-kafka-payment-system-transfer] / transfer / src / main / java / de / juplo / kafka / payment / transfer / controller / TransferController.java
index c93fb46..b39322a 100644 (file)
@@ -1,15 +1,13 @@
 package de.juplo.kafka.payment.transfer.controller;
 
 
-import de.juplo.kafka.payment.transfer.api.Transfer;
-import de.juplo.kafka.payment.transfer.impl.TransferServiceImpl;
+import de.juplo.kafka.payment.transfer.domain.Transfer;
+import de.juplo.kafka.payment.transfer.domain.TransferService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.net.URI;
@@ -18,20 +16,42 @@ import java.net.URI;
 @RestController
 @RequiredArgsConstructor
 @Slf4j
-public class TransferController
+ public class TransferController
 {
   public final static String PATH = "/transfers";
 
-  private final TransferServiceImpl service;
+  private final TransferService service;
 
 
   @PostMapping(
       path = PATH,
       consumes = MediaType.APPLICATION_JSON_VALUE,
       produces = MediaType.APPLICATION_JSON_VALUE)
-  public ResponseEntity<?> transfer(@Valid @RequestBody Transfer transfer)
+  public ResponseEntity<?> transfer(@Valid @RequestBody TransferDTO transferDTO)
   {
+    Transfer transfer =
+        Transfer
+            .builder()
+            .id(transferDTO.getId())
+            .payer(transferDTO.getPayer())
+            .payee(transferDTO.getPayee())
+            .amount(transferDTO.getAmount())
+            .build();
+
     service.initiate(transfer);
-    return ResponseEntity.created(URI.create(PATH + transfer.getId())).build();
+
+    return ResponseEntity.created(URI.create(PATH + "/" + transferDTO.getId())).build();
+  }
+
+  @GetMapping(
+      path = PATH + "/{id}",
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<TransferDTO> get(@PathVariable Long id)
+  {
+    return
+        service
+            .get(id)
+            .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer)))
+            .orElse(ResponseEntity.notFound().build());
   }
 }