package com.iconplus.smartproc.service.roles; import com.iconplus.smartproc.helper.model.Pagination; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.projection.RolesView; import com.iconplus.smartproc.model.request.RolesRequest; import com.iconplus.smartproc.model.response.GetRolesResponse; import com.iconplus.smartproc.model.response.RolesResponse; import com.iconplus.smartproc.repository.RolesRepository; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class GetRolesService implements BaseService { private final RolesRepository rolesRepository; public GetRolesService(RolesRepository rolesRepository) { this.rolesRepository = rolesRepository; } @Override public GetRolesResponse execute(RolesRequest input) { validateRequest(input); List rolesResponseList = new ArrayList<>(); Page rolesViews = rolesRepository.findAllRolesANdDeletedFalse(input.getSearch(), input.getPageable()); for (RolesView rolesView : rolesViews) { RolesResponse rolesResponse = RolesResponse.builder() .id(rolesView.getId()) .role(rolesView.getRole()) .keterangan(rolesView.getKeterangan()) .isActive(rolesView.getIsActive()) .isDelete(rolesView.getIsDelete()) .build(); rolesResponseList.add(rolesResponse); } return GetRolesResponse.builder() .data(rolesResponseList) .pagination(Pagination.builder() .pageSize(input.getPageable().getPageSize()) .currentPage(input.getPageable().getPageNumber()) .totalPages(rolesViews.getTotalPages()) .totalRecords(rolesViews.getTotalElements()) .isFirstPage(rolesViews.isFirst()) .isLastPage(rolesViews.isLast()) .build()) .build(); } private void validateRequest(RolesRequest input) { if (StringUtils.isNotBlank(input.getSearch())) { input.setSearch('%'+ input.getSearch().toUpperCase()+'%'); } } }