package com.talentcard.server.business.application; import java.util.Map; import com.talentcard.server.business.PageResult; import com.talentcard.server.common.ApiResponse; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PathVariable; 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; @RestController @RequestMapping("/api/admin/service-applications") public class ServiceApplicationController { private final ServiceApplicationService serviceApplicationService; public ServiceApplicationController(ServiceApplicationService serviceApplicationService) { this.serviceApplicationService = serviceApplicationService; } @GetMapping public ApiResponse>> page( @RequestParam(required = false) String applicationType, @RequestParam(required = false) String talentKeyword, @RequestParam(required = false) String merchantName, @RequestParam(required = false) String hospitalName, @RequestParam(required = false) String parkingLot, @RequestParam(required = false) String cardLevel, @RequestParam(required = false) String status, @RequestParam(required = false) String submissionType, @RequestParam(required = false) String subsidy, @RequestParam(required = false) String submittedStart, @RequestParam(required = false) String submittedEnd, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size ) { return ApiResponse.success(serviceApplicationService.page( applicationType, talentKeyword, merchantName, hospitalName, parkingLot, cardLevel, status, submissionType, subsidy, submittedStart, submittedEnd, page, size)); } @GetMapping("/{id}") public ApiResponse> detail( @PathVariable Long id, @RequestParam(required = false) String applicationType ) { return ApiResponse.success(serviceApplicationService.detail(id, applicationType)); } @PatchMapping("/{id}/status") public ApiResponse> updateStatus( @PathVariable Long id, @RequestParam(required = false) String applicationType, @Valid @RequestBody ServiceApplicationStatusRequest request ) { return ApiResponse.success(serviceApplicationService.updateStatus(id, request, applicationType)); } }