diff --git a/src/main/java/young/blaybus/domain/center/controller/CenterController.java b/src/main/java/young/blaybus/domain/center/controller/CenterController.java index f195242..af54f52 100644 --- a/src/main/java/young/blaybus/domain/center/controller/CenterController.java +++ b/src/main/java/young/blaybus/domain/center/controller/CenterController.java @@ -13,6 +13,7 @@ import young.blaybus.domain.center.controller.response.GetCenter; import young.blaybus.domain.center.controller.response.GetCenterDetailInforResponse; import young.blaybus.domain.center.controller.response.GetCenterResponse; +import young.blaybus.domain.center.controller.response.GetSeniorCountResponse; import young.blaybus.domain.center.service.CenterService; @RestController @@ -70,4 +71,16 @@ public ApiResponse getCenterDetailInfor(@RequestPa return ApiResponse.onSuccess(centerService.getCenterDetailInfor(centerName)); } + @GetMapping("/center/count") + @Operation(summary = "소속 센터에 등록된 어르신 수") + @ApiResponses(value = { + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "200", + content = @Content(schema = @Schema(implementation = GetSeniorCountResponse.class)) + ) + }) + public ApiResponse getSeniorCount() { + return ApiResponse.onSuccess(centerService.getSeniorCount()); + } + } diff --git a/src/main/java/young/blaybus/domain/center/controller/response/GetSeniorCountResponse.java b/src/main/java/young/blaybus/domain/center/controller/response/GetSeniorCountResponse.java new file mode 100644 index 0000000..4d2c4a5 --- /dev/null +++ b/src/main/java/young/blaybus/domain/center/controller/response/GetSeniorCountResponse.java @@ -0,0 +1,18 @@ +package young.blaybus.domain.center.controller.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@Builder +@ToString +@AllArgsConstructor +@Schema(description = "소속 센터에 등록된 어르신 수 응답 객체") +public class GetSeniorCountResponse { + + @Schema(description = "어르신 수") + private int seniorCount; +} diff --git a/src/main/java/young/blaybus/domain/center/service/CenterService.java b/src/main/java/young/blaybus/domain/center/service/CenterService.java index 50fa9a3..86251a5 100644 --- a/src/main/java/young/blaybus/domain/center/service/CenterService.java +++ b/src/main/java/young/blaybus/domain/center/service/CenterService.java @@ -8,19 +8,27 @@ import young.blaybus.domain.center.controller.response.GetCenter; import young.blaybus.domain.center.controller.response.GetCenterDetailInforResponse; import young.blaybus.domain.center.controller.response.GetCenterResponse; +import young.blaybus.domain.center.controller.response.GetSeniorCountResponse; import young.blaybus.domain.center.repository.CenterRepository; import young.blaybus.domain.member.Member; import young.blaybus.domain.member.controller.request.CreateAdminRequest; +import young.blaybus.domain.member.repository.MemberRepository; +import young.blaybus.domain.member.security.SecurityUtils; +import young.blaybus.domain.senior.Senior; +import young.blaybus.domain.senior.repository.SeniorRepository; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; @Service @RequiredArgsConstructor public class CenterService { private final CenterRepository centerRepository; + private final MemberRepository memberRepository; + private final SeniorRepository seniorRepository; // 센터 등록 @Transactional @@ -102,5 +110,23 @@ public GetCenter isRegistrationCenterByName(String name) { return new GetCenter("해당 센터는 현재 등록되어 있지 않습니다.", false); } + // 소속 센터에 등록된 어르신 수 + public GetSeniorCountResponse getSeniorCount() { + String adminId = SecurityUtils.getCurrentMemberName(); + Optional member = memberRepository.findById(adminId); + + AtomicInteger seniorCount = new AtomicInteger(); + if (member.isPresent()) { + Center center = centerRepository.findById(member.get().getCenter().getId()).orElse(null); + if (center != null) { + List senior = seniorRepository.findByCenterId(center.getId()); + senior.forEach(s -> seniorCount.getAndIncrement()); + } + } + + return GetSeniorCountResponse.builder() + .seniorCount(seniorCount.get()) + .build(); + } }