AMSServiceImpl.java
package fr.avenirsesr.portfolio.api.domain.service;
import fr.avenirsesr.portfolio.api.domain.model.AMS;
import fr.avenirsesr.portfolio.api.domain.model.PagedResult;
import fr.avenirsesr.portfolio.api.domain.model.Student;
import fr.avenirsesr.portfolio.api.domain.port.input.AMSService;
import fr.avenirsesr.portfolio.api.domain.port.output.repository.AMSRepository;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class AMSServiceImpl implements AMSService {
private final AMSRepository amsRepository;
@Value("${pagination.default-page}")
private int defaultPage;
@Value("${pagination.default-page-size}")
private int defaultPageSize;
@Value("${pagination.max-page-size}")
private int maxPageSize;
public AMSServiceImpl(AMSRepository amsRepository) {
this.amsRepository = amsRepository;
}
@Override
public PagedResult<AMS> findUserAmsByProgramProgressWithPagination(
Student student, UUID programProgressId, Integer page, Integer pageSize) {
log.debug(
"Finding AMS for user with id [{}] with pagination (page={}, pageSize={})",
student.getId(),
page,
pageSize);
int pageValue = (page != null && page >= 0) ? page : defaultPage;
int pageSizeValue =
(pageSize != null && pageSize > 0 && pageSize <= maxPageSize) ? pageSize : defaultPageSize;
return amsRepository.findByUserIdViaCohortsAndProgramProgressId(
student.getId(), programProgressId, pageValue, pageSizeValue);
}
}