From b48ff888d7be15627c95487df7407dfc22520c2e Mon Sep 17 00:00:00 2001 From: JesusCiber Date: Mon, 19 May 2025 15:06:14 +0200 Subject: [PATCH] Add Account --- .../controller/UserController.java | 25 +++++++++++++++++-- .../users_micro/dto/UserAccountDTO.java | 18 +++++++++++++ .../users_micro/service/AccountService.java | 19 ++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/ironhack/users_micro/dto/UserAccountDTO.java create mode 100644 src/main/java/com/ironhack/users_micro/service/AccountService.java diff --git a/src/main/java/com/ironhack/users_micro/controller/UserController.java b/src/main/java/com/ironhack/users_micro/controller/UserController.java index 0dd2e12..7fe746c 100644 --- a/src/main/java/com/ironhack/users_micro/controller/UserController.java +++ b/src/main/java/com/ironhack/users_micro/controller/UserController.java @@ -1,8 +1,10 @@ package com.ironhack.users_micro.controller; +import com.ironhack.users_micro.dto.UserAccountDTO; import com.ironhack.users_micro.dto.UserPatchAccountDTO; import com.ironhack.users_micro.exception.UserNotFoundException; import com.ironhack.users_micro.model.User; +import com.ironhack.users_micro.service.AccountService; import com.ironhack.users_micro.service.UserService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -14,9 +16,11 @@ @RequestMapping("/api/user") public class UserController { private final UserService userService; + private final AccountService accountService; - public UserController(UserService userService) { + public UserController(UserService userService, AccountService accountService) { this.userService = userService; + this.accountService = accountService; } @GetMapping @@ -24,7 +28,7 @@ public List getAllUsers() { return userService.getAllUsers(); } - @GetMapping("/{id}") + /*@GetMapping("/{id}") public ResponseEntity getUserById(@PathVariable long id) { try { User foundUser = userService.getUserById(id); @@ -32,6 +36,23 @@ public ResponseEntity getUserById(@PathVariable long id) { } catch (UserNotFoundException e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); } + }*/ + + @GetMapping("/{id}") + public ResponseEntity getUserById(@PathVariable long id) { + try { + User foundUser = userService.getUserById(id); + UserAccountDTO account = accountService.getAccountByOwnerId(foundUser.getAccountID()); + UserAccountDTO response = new UserAccountDTO( + account.getId(), + account.getOwnerId(), + account.getIsbn(), + account.getBalance() + ); + return new ResponseEntity<>(response, HttpStatus.OK); + } catch (UserNotFoundException e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); + } } @PostMapping diff --git a/src/main/java/com/ironhack/users_micro/dto/UserAccountDTO.java b/src/main/java/com/ironhack/users_micro/dto/UserAccountDTO.java new file mode 100644 index 0000000..1caebe8 --- /dev/null +++ b/src/main/java/com/ironhack/users_micro/dto/UserAccountDTO.java @@ -0,0 +1,18 @@ +package com.ironhack.users_micro.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserAccountDTO { + private Long id; + private Long ownerId; + private String isbn; + private BigDecimal balance; + +} \ No newline at end of file diff --git a/src/main/java/com/ironhack/users_micro/service/AccountService.java b/src/main/java/com/ironhack/users_micro/service/AccountService.java new file mode 100644 index 0000000..751d237 --- /dev/null +++ b/src/main/java/com/ironhack/users_micro/service/AccountService.java @@ -0,0 +1,19 @@ +package com.ironhack.users_micro.service; + +import com.ironhack.users_micro.dto.UserAccountDTO; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +public class AccountService { + private final RestTemplate restTemplate; + + public AccountService(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + public UserAccountDTO getAccountByOwnerId(Long ownerId) { + String url = "http://localhost:8081/api/account/" + ownerId; + return restTemplate.getForObject(url, UserAccountDTO.class); + } +} \ No newline at end of file