package com.pollex.pam.web.rest; import com.pollex.pam.service.ConsultantService; import com.pollex.pam.service.dto.*; import org.apache.commons.compress.utils.IOUtils; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.List; @RestController @RequestMapping("/api/consultant") public class ConsultantResource { private final ConsultantService consultantService; public ConsultantResource(ConsultantService consultantService) { this.consultantService = consultantService; } @GetMapping("/favorite") public ResponseEntity> getMyConsultantList() { List myConsultants = consultantService.getMyConsultantList(); return new ResponseEntity<>(myConsultants, HttpStatus.OK); } @GetMapping("/recommend") public ResponseEntity> getRecommendConsultantList() { List recommendConsultantList = consultantService.getRecommendConsultantList(); return new ResponseEntity<>(recommendConsultantList, HttpStatus.OK); } @PostMapping("/favorite") public ResponseEntity addConsultantToCustomList(@RequestBody AddConsultantParam param) { consultantService.addConsultantToCustomList(param); return new ResponseEntity<>(HttpStatus.ACCEPTED); } @DeleteMapping("/favorite/{agentNo}") public ResponseEntity removeConsultantFromCustomList(@PathVariable String agentNo) { consultantService.removeConsultantFromCustomList(agentNo); return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/strictQuery") public ResponseEntity> strictQueryConsultant(@RequestBody StrictQueryConsultantParam param) { List queryResult = consultantService.strictQueryConsultant(param); return new ResponseEntity<>(queryResult, HttpStatus.OK); } @PostMapping("/fastQuery") public ResponseEntity> fastQueryConsultant(@RequestBody FastQueryConsultantParam param) { List queryResult = consultantService.fastQueryConsultant(param); return new ResponseEntity<>(queryResult, HttpStatus.OK); } @GetMapping("/detail") public ResponseEntity getConsultantDetail(@RequestParam("agentNo") String agentNo) { ConsultantDetailDTO result = consultantService.getConsultantDetail(agentNo); return new ResponseEntity<>(result, HttpStatus.OK); } @GetMapping("/getMyAppointment") public List getMyAppointment() { return consultantService.getMyAppointment(); } @GetMapping(value = "/avatar/{fileName}", produces = MediaType.IMAGE_JPEG_VALUE) public ResponseEntity getAvatarImage(@PathVariable String fileName) throws IOException { try { Resource resource = new ClassPathResource("static/consultant/" + fileName); InputStream in = resource.getInputStream(); return new ResponseEntity<>(IOUtils.toByteArray(in), HttpStatus.OK); } catch (FileNotFoundException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } }