package com.tourguide.api.guide;
|
|
import com.tourguide.common.api.ApiResponse;
|
import com.tourguide.common.api.PageResponse;
|
import com.tourguide.modules.finance.dto.GuideWithdrawalCreateRequest;
|
import com.tourguide.modules.finance.dto.GuideWithdrawalSummaryResponse;
|
import com.tourguide.modules.finance.dto.WithdrawalResponse;
|
import com.tourguide.modules.finance.service.GuideWithdrawalService;
|
import com.tourguide.security.AppUserPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.validation.Valid;
|
|
@Validated
|
@RestController
|
@RequestMapping("/api/guide/withdrawals")
|
public class GuideWithdrawalController {
|
private final GuideWithdrawalService withdrawalService;
|
|
public GuideWithdrawalController(GuideWithdrawalService withdrawalService) {
|
this.withdrawalService = withdrawalService;
|
}
|
|
@GetMapping("/summary")
|
public ApiResponse<GuideWithdrawalSummaryResponse> summary(
|
@AuthenticationPrincipal AppUserPrincipal principal) {
|
return ApiResponse.success(withdrawalService.summary(principal.getUserId()));
|
}
|
|
@GetMapping
|
public ApiResponse<PageResponse<WithdrawalResponse>> page(
|
@AuthenticationPrincipal AppUserPrincipal principal,
|
@RequestParam(defaultValue = "1") long page,
|
@RequestParam(defaultValue = "50") long size) {
|
return ApiResponse.success(withdrawalService.page(principal.getUserId(), page, size));
|
}
|
|
@PostMapping
|
public ApiResponse<WithdrawalResponse> create(
|
@AuthenticationPrincipal AppUserPrincipal principal,
|
@Valid @RequestBody GuideWithdrawalCreateRequest request) {
|
return ApiResponse.success(withdrawalService.create(principal.getUserId(), request));
|
}
|
}
|