diff --git a/src/main/java/ru/soune/nocopy/controller/PayoutController.java b/src/main/java/ru/soune/nocopy/controller/PayoutController.java index bad323d..2e7ec24 100644 --- a/src/main/java/ru/soune/nocopy/controller/PayoutController.java +++ b/src/main/java/ru/soune/nocopy/controller/PayoutController.java @@ -12,11 +12,16 @@ import ru.soune.nocopy.entity.payout.BankTransferPayoutMethod; import ru.soune.nocopy.entity.payout.CardPayoutMethod; import ru.soune.nocopy.entity.payout.PayoutRequest; import ru.soune.nocopy.entity.payout.PayoutType; +import ru.soune.nocopy.entity.user.AuthToken; +import ru.soune.nocopy.entity.user.User; +import ru.soune.nocopy.exception.NotFoundAuthToken; +import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.service.payout.PayoutMethodService; import ru.soune.nocopy.service.payout.PayoutRequestService; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @RestController @@ -29,6 +34,8 @@ public class PayoutController { private final PayoutMethodService payoutMethodService; + private final AuthTokenRepository authTokenRepository; + /* Create payout */ @@ -53,9 +60,18 @@ public class PayoutController { /* Cancel payout */ - @PostMapping("/requests/{requestId}/{userId}/cancel") - public ResponseEntity cancelPayoutRequest(@PathVariable Long userId, @PathVariable Long requestId) { - PayoutRequest cancelled = payoutRequestService.cancelPayoutRequest(userId, requestId); + @PostMapping("/requests/{requestId}/cancel") + public ResponseEntity cancelPayoutRequest(@PathVariable Long requestId, + @RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + PayoutRequest cancelled = payoutRequestService.cancelPayoutRequest(user.getId(), requestId); return ResponseEntity.ok(cancelled); } @@ -63,25 +79,50 @@ public class PayoutController { /* Get user payouts */ - @GetMapping("/requests/{userId}") - public ResponseEntity> getUserRequests(@PathVariable Long userId) { - return ResponseEntity.ok(payoutRequestService.getUserPayoutRequests(userId)); + @GetMapping("/requests") + public ResponseEntity> getUserRequests(@RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + return ResponseEntity.ok(payoutRequestService.getUserPayoutRequests(user.getId())); } /* Get payout by id */ - @GetMapping("/requests/{requestId}/{userId}") - public ResponseEntity getPayoutRequest(@PathVariable Long userId, @PathVariable Long requestId) { - return ResponseEntity.ok(payoutRequestService.getPayoutRequest(userId, requestId)); + @GetMapping("/requests/{requestId}") + public ResponseEntity getPayoutRequest(@PathVariable Long requestId, + @RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + return ResponseEntity.ok(payoutRequestService.getPayoutRequest(user.getId(), requestId)); } /* Get payout by id */ - @GetMapping("/payout-method/{userId}") - public ResponseEntity> getUserMethods(@PathVariable Long userId) { - return ResponseEntity.ok(payoutMethodService.getUserMethods(userId)); + @GetMapping("/payout-method") + public ResponseEntity> getUserMethods(@RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + return ResponseEntity.ok(payoutMethodService.getUserMethods(user.getId())); } /* @@ -101,10 +142,19 @@ public class PayoutController { /* add card method by userId */ - @PostMapping("/payout-method/card/{userId}") - public ResponseEntity addCardMethod(@PathVariable Long userId, - @Valid @RequestBody AddCardRequest request) { - CardPayoutMethod method = payoutMethodService.addCardMethod(userId, request); + @PostMapping("/payout-method/card") + public ResponseEntity addCardMethod(@Valid @RequestBody AddCardRequest request, + @RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + CardPayoutMethod method = payoutMethodService.addCardMethod(user.getId(), request); + return ResponseEntity.status(HttpStatus.CREATED) .body(payoutMethodService.convertToDto(method)); } @@ -112,10 +162,19 @@ public class PayoutController { /* add bank payout-method */ - @PostMapping("/payout-method/bank-transfer/{userId}") - public ResponseEntity addBankTransferMethod(@PathVariable Long userId, - @Valid @RequestBody AddBankTransferRequest request) { - BankTransferPayoutMethod method = payoutMethodService.addBankTransferMethod(userId, request); + @PostMapping("/payout-method/bank-transfer") + public ResponseEntity addBankTransferMethod(@Valid @RequestBody AddBankTransferRequest request, + @RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + BankTransferPayoutMethod method = payoutMethodService.addBankTransferMethod(user.getId(), request); + return ResponseEntity.status(HttpStatus.CREATED) .body(payoutMethodService.convertToDto(method)); } @@ -124,10 +183,19 @@ public class PayoutController { /* set default bank payout-method */ - @PutMapping("/payout-method/{userId}/{methodId}/default") - public ResponseEntity setDefaultMethod(@PathVariable Long userId, @PathVariable Long methodId) { + @PutMapping("/payout-method/{methodId}/default") + public ResponseEntity setDefaultMethod(@PathVariable Long methodId, + @RequestHeader("Authorization") String tokenHeader) { + String token = tokenHeader.replace("Bearer ", ""); + + Optional tokenOptional = authTokenRepository.findByToken(token); + + AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); + + User user = authToken.getUser(); + + payoutMethodService.setDefaultMethod(user.getId(), methodId); - payoutMethodService.setDefaultMethod(userId, methodId); return ResponseEntity.ok().build(); } }