package com.eactive.testmaster.client.controller; import com.eactive.testmaster.client.dto.ApiCollectionDTO; import com.eactive.testmaster.client.dto.ApiRequestDTO; import com.eactive.testmaster.client.entity.ApiCollection; import com.eactive.testmaster.client.entity.ApiRequestInfo; import com.eactive.testmaster.client.mapper.ApiRequestMapper; import com.eactive.testmaster.client.service.ApiRequestMgmtService; import com.eactive.testmaster.common.util.SecurityUtil; import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.service.UserService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController public class ApiRequestMgmtController { private static final String SUCCESS = "success"; private final ApiRequestMgmtService apiRequestMgmtService; private final ApiRequestMapper apiRequestMapper; private final UserService userService; public ApiRequestMgmtController(ApiRequestMgmtService apiRequestMgmtService, ApiRequestMapper apiRequestMapper, UserService userService) { this.apiRequestMgmtService = apiRequestMgmtService; this.apiRequestMapper = apiRequestMapper; this.userService = userService; } @GetMapping("/mgmt/collections/list.do") public ResponseEntity> listApiRequests() { StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId()); List collections = apiRequestMgmtService.getMyApis(user); return ResponseEntity.ok(apiRequestMapper.mapCollections(collections)); } @PostMapping("/mgmt/collections/create.do") public ResponseEntity createApiCollection( @RequestBody ApiCollectionDTO dto) { ApiCollection collection = apiRequestMapper.map(dto); StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId()); collection.setOwner(user); apiRequestMgmtService.createNewApiCollection(collection); return ResponseEntity.ok(SUCCESS); } @PostMapping("/mgmt/collections/update.do") public ResponseEntity updateApiCollection(@RequestBody ApiCollectionDTO dto) { ApiCollection updated = apiRequestMapper.map(dto); apiRequestMgmtService.updateApiCollectionName(updated.getId(), updated); return ResponseEntity.ok(SUCCESS); } @PostMapping("/mgmt/collections/delete.do") public ResponseEntity deleteApiCollection(@RequestBody ApiCollectionDTO dto) { apiRequestMgmtService.deleteApiCollection(dto.getId()); return ResponseEntity.ok(SUCCESS); } @PostMapping("/mgmt/collections/{id}/apis/save.do") public ResponseEntity addApiToCollection(@PathVariable(name = "id") String id, @RequestBody ApiRequestDTO dto) { ApiRequestInfo apiRequestInfo = apiRequestMapper.map(dto); StaffUser user = userService.findByEsntlId(SecurityUtil.getCurrentUserEsntlId()); apiRequestInfo.setOwner(user); String apiId = apiRequestMgmtService.saveApiToCollection(id, apiRequestInfo); return ResponseEntity.ok(apiId); } @PostMapping("/mgmt/collections/{id}/apis/delete.do") public ResponseEntity removeApiFromCollection(@PathVariable(name = "id") String id, @RequestBody ApiRequestDTO dto) { apiRequestMgmtService.removeApiFromCollection(id, dto.getId()); return ResponseEntity.ok(SUCCESS); } }