diff --git a/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java b/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java index 6d9daf37..fe51facc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.entities.LookUpDataEntity; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.repositories.LookUpDataRepository; @@ -11,6 +12,9 @@ import net.gepafin.tendermanagement.constants.GepafinConstant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.List; +import java.util.stream.Collectors; + @Component public class LookUpDataDao { @@ -62,4 +66,12 @@ public class LookUpDataDao { response.setUpdatedDate(entity.getUpdatedDate()); return response; } + + public List getLookUpDataByType(LookUpDataTypeEnum type) { + return lookUpDataRepository.findByType(type.getValue()) + .stream() + .map(this::convertLookUpDataEntityToResponseBean) + .collect(Collectors.toList()); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java index f3206948..3d3d6d70 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java @@ -4,6 +4,10 @@ import net.gepafin.tendermanagement.entities.LookUpDataEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; + @Repository public interface LookUpDataRepository extends JpaRepository { + List findByType(String type); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java b/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java index 0a69be9f..c7fde0f6 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java @@ -1,8 +1,11 @@ package net.gepafin.tendermanagement.service; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; +import java.util.List; + public interface LookUpDataService { LookUpDataResponseBean createLookUpData(LookUpDataRequest lookUpDataReq); @@ -12,4 +15,6 @@ public interface LookUpDataService { LookUpDataResponseBean updateLookUpData(Long id, LookUpDataRequest lookUpDataReq); void deleteLookUpData(Long id); + + List getLookUpDataByType(LookUpDataTypeEnum type); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java index 86a2ae6e..bba01b91 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java @@ -1,12 +1,15 @@ package net.gepafin.tendermanagement.service.impl; import net.gepafin.tendermanagement.dao.LookUpDataDao; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.service.LookUpDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class LookUpDataServiceImpl implements LookUpDataService { @@ -32,4 +35,8 @@ public class LookUpDataServiceImpl implements LookUpDataService { public void deleteLookUpData(Long id) { lookUpDataDao.deleteLookUpData(id); } + @Override + public List getLookUpDataByType(LookUpDataTypeEnum type) { + return lookUpDataDao.getLookUpDataByType(type); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java index bf3afe19..b0670e4b 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java @@ -4,48 +4,78 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.responses.ApiResponse; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import jakarta.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.util.List; public interface LookUpDataApi { @Operation(summary = "API to create LookUp Data", responses = { - @ApiResponse(responseCode = "201", description = "Created"), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Bad Request\" }"))), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @PostMapping(value = "", consumes = "application/json", produces = "application/json") ResponseEntity> createLookUpData(HttpServletRequest request, @Valid @RequestBody LookUpDataRequest lookUpDataReq); @Operation(summary = "API to get LookUp Data by id", responses = { @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @GetMapping(value = "/{id}", produces = "application/json") ResponseEntity> getLookUpDataById(HttpServletRequest request, @PathVariable Long id); @Operation(summary = "API to update LookUp Data", responses = { @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Bad Request\" }"))), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @PutMapping(value = "/{id}", consumes = "application/json", produces = "application/json") ResponseEntity> updateLookUpData(HttpServletRequest request, @PathVariable Long id, @Valid @RequestBody LookUpDataRequest lookUpDataReq); @Operation(summary = "API to delete LookUp Data", responses = { @ApiResponse(responseCode = "204", description = "No Content"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @DeleteMapping(value = "/{id}") ResponseEntity> deleteLookUpData(HttpServletRequest request, @PathVariable Long id); + + @Operation(summary = "API to get LookUp Data by type", + responses = { + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE)})), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) + @GetMapping(value = "/type", produces = "application/json") + ResponseEntity>> getLookUpDataByType(HttpServletRequest request, @RequestParam LookUpDataTypeEnum type); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java index 79fae0de..f2c50512 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.web.rest.api.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.model.util.Response; @@ -15,6 +16,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("${openapi.gepafin.base-path:/v1/lookupdata}") public class LookUpDataApiController implements LookUpDataApi { @@ -59,4 +62,15 @@ public class LookUpDataApiController implements LookUpDataApi { return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOOKUP_DATA_DELETED_SUCCESSFULLY))); } + @Override + public ResponseEntity>> getLookUpDataByType(HttpServletRequest request, LookUpDataTypeEnum type) { + List responseBean = lookUpDataService.getLookUpDataByType(type); + if (responseBean != null) { + return ResponseEntity.status(HttpStatus.OK) + .body(new Response>(responseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOOKUP_DATA_FETCHED_SUCCESSFULLY))); + } else { + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body(new Response>(responseBean, Status.NOT_FOUND, Translator.toLocale(GepafinConstant.LOOKUP_DATA_NOT_FOUND))); + } + } }