ohctechv3/.svn/pristine/77/77f09c18d14fd56cd0ebb2a0f5bea3b779784790.svn-base
2024-10-28 15:03:36 +05:30

104 lines
4.1 KiB
Plaintext

package com.healthcare.ohctech.service.impl;
import com.healthcare.ohctech.converter.MenuToMenuDtoConverter;
import com.healthcare.ohctech.dto.AssignAccessDto;
import com.healthcare.ohctech.dto.MenuDto;
import com.healthcare.ohctech.entity.Menu;
import com.healthcare.ohctech.entity.Role;
import com.healthcare.ohctech.entity.RoleMenuAccess;
import com.healthcare.ohctech.entity.RoleMenuAccessPk;
import com.healthcare.ohctech.repository.MenuRepo;
import com.healthcare.ohctech.repository.RoleMenuAccessRepo;
import com.healthcare.ohctech.repository.RoleRepo;
import com.healthcare.ohctech.service.RoleMenuAccessService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class RoleMenuAccessServiceImpl implements RoleMenuAccessService {
private final RoleMenuAccessRepo roleMenuAccessRepo;
private final RoleRepo roleRepo;
private final MenuRepo menuRepo;
private final MenuToMenuDtoConverter menuToMenuDtoConverter;
public RoleMenuAccessServiceImpl(RoleMenuAccessRepo roleMenuAccessRepo,RoleRepo roleRepo,
MenuRepo menuRepo,MenuToMenuDtoConverter menuToMenuDtoConverter){
this.roleMenuAccessRepo = roleMenuAccessRepo;
this.roleRepo = roleRepo;
this.menuRepo = menuRepo;
this.menuToMenuDtoConverter = menuToMenuDtoConverter;
}
@Override
public void assignMenu(AssignAccessDto assignAccessDto) {
try {
if (assignAccessDto.roleId() == null || assignAccessDto.menuId() == null || assignAccessDto.menuAccessLevel() == null) {
throw new IllegalArgumentException("Role ID, Menu ID, and Access Level are required");
}
RoleMenuAccessPk roleMenuAccessPk = new RoleMenuAccessPk();
roleMenuAccessPk.setRoleId(assignAccessDto.roleId());
roleMenuAccessPk.setMenuId(assignAccessDto.menuId());
RoleMenuAccess roleMenuAccess = new RoleMenuAccess();
roleMenuAccess.setRoleMenuAccessPk(roleMenuAccessPk);
roleMenuAccess.setAccessLevel(assignAccessDto.menuAccessLevel());
Menu menu = menuRepo.findById(assignAccessDto.menuId())
.orElseThrow(() -> new EntityNotFoundException("Menu not found with ID " + assignAccessDto.menuId()));
Role role = roleRepo.findById(assignAccessDto.roleId())
.orElseThrow(() -> new EntityNotFoundException("Role not found with ID " + assignAccessDto.roleId()));
roleMenuAccess.setMenu(menu);
roleMenuAccess.setRole(role);
roleMenuAccessRepo.save(roleMenuAccess);
} catch (IllegalArgumentException | EntityNotFoundException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException("An unexpected error occurred", e);
}
}
@Override
public List<MenuDto> getAssignedMenus(Long roleId) {
try {
if (roleId == null || roleId <= 0) {
throw new IllegalArgumentException("Invalid roleId provided");
}
List<RoleMenuAccess> roleMenuAccessList = roleMenuAccessRepo.findAllByroleId(roleId);
List<MenuDto> menuDtoList = new ArrayList<>();
// System.out.println("Number of RoleMenuAccess entries found: " + roleMenuAccessList.size());
if (roleMenuAccessList != null && !roleMenuAccessList.isEmpty()) {
List<Menu> menus = roleMenuAccessList.stream()
.map(roleMenuAccess -> roleMenuAccess.getMenu())
.collect(Collectors.toList());
if (!menus.isEmpty()) {
menuDtoList = menus.stream()
.map(menu -> menuToMenuDtoConverter.convert(menu))
.collect(Collectors.toList());
}
}
return menuDtoList;
}catch (Exception e){
throw new RuntimeException("An unexpected error occurred", e);
}
}
}