package com.iconplus.smartproc.service.roles; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.Roles; import com.iconplus.smartproc.model.projection.PermissionView; import com.iconplus.smartproc.model.request.RolesRequest; import com.iconplus.smartproc.model.response.PermissionResponse; import com.iconplus.smartproc.model.response.RolesResponse; import com.iconplus.smartproc.repository.PermissionRepository; import com.iconplus.smartproc.repository.RolesRepository; import com.iconplus.smartproc.util.Constants; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class GetRoleByIdService implements BaseService { private final RolesRepository rolesRepository; private PermissionRepository permissionRepository; public GetRoleByIdService(RolesRepository rolesRepository, PermissionRepository permissionRepository) { this.rolesRepository = rolesRepository; this.permissionRepository = permissionRepository; } @Override public RolesResponse execute(RolesRequest input) { Roles role = rolesRepository.findByIdAndIsDeleteFalse(input.getId()) .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10005, Constants.ERR_TTL_10005, String.format(Constants.ERR_MSG_10005, input.getId()))); List permissionResponses = new ArrayList<>(); List permissionViews = permissionRepository.getAllPermissionsByRoleId(role.getId()); for (PermissionView permissionView : permissionViews) { permissionResponses.add(PermissionResponse.builder() .parentId(permissionView.getParentId()) .menuId(permissionView.getMenuId()) .menu(permissionView.getNama()) .canView(permissionView.getCanView()) .canCreate(permissionView.getCanCreate()) .canRead(permissionView.getCanRead()) .canUpdate(permissionView.getCanUpdate()) .canDelete(permissionView.getCanDelete()) .build()); } return RolesResponse.builder() .id(role.getId()) .role(role.getRole()) .keterangan(role.getKeterangan()) .isActive(role.getIsActive()) .isDelete(role.getIsDelete()) .permission(permissionResponses) .build(); } }