LeaveQueryService.java
package com.deveagles.be15_deveagles_be.features.schedules.query.service;
import com.deveagles.be15_deveagles_be.common.dto.PagedResult;
import com.deveagles.be15_deveagles_be.common.dto.Pagination;
import com.deveagles.be15_deveagles_be.common.exception.BusinessException;
import com.deveagles.be15_deveagles_be.common.exception.ErrorCode;
import com.deveagles.be15_deveagles_be.features.schedules.query.dto.request.LeaveListRequest;
import com.deveagles.be15_deveagles_be.features.schedules.query.dto.response.LeaveDetailResponse;
import com.deveagles.be15_deveagles_be.features.schedules.query.dto.response.LeaveListResponse;
import com.deveagles.be15_deveagles_be.features.schedules.query.dto.response.RegularLeaveDetailResponse;
import com.deveagles.be15_deveagles_be.features.schedules.query.mapper.LeaveQueryMapper;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class LeaveQueryService {
private final LeaveQueryMapper leaveQueryMapper;
public PagedResult<LeaveListResponse> getLeaveList(Long shopId, LeaveListRequest request) {
int offset = request.page() * request.size();
List<LeaveListResponse> leaves =
leaveQueryMapper.findLeaves(
shopId,
request.from(),
request.to(),
request.leaveType(),
request.staffId(),
request.size(),
offset);
int total =
leaveQueryMapper.countLeaves(
shopId, request.from(), request.to(), request.leaveType(), request.staffId());
return new PagedResult<>(
leaves,
new Pagination(request.page(), (int) Math.ceil((double) total / request.size()), total));
}
public LeaveDetailResponse getLeaveDetail(Long leaveId) {
LeaveDetailResponse result = leaveQueryMapper.findLeaveDetailById(leaveId);
if (result == null) {
throw new BusinessException(ErrorCode.LEAVE_NOT_FOUND);
}
return result;
}
public RegularLeaveDetailResponse getRegularLeaveDetail(Long regularLeaveId) {
RegularLeaveDetailResponse result = leaveQueryMapper.findRegularLeaveDetailById(regularLeaveId);
if (result == null) {
throw new BusinessException(ErrorCode.REGULAR_LEAVE_NOT_FOUND);
}
return result;
}
}