edit access menu
This commit is contained in:
@ -0,0 +1,91 @@
|
||||
package com.iconplus.smartproc.service.permission;
|
||||
|
||||
import com.iconplus.smartproc.exception.BusinessException;
|
||||
import com.iconplus.smartproc.helper.model.EmptyResponse;
|
||||
import com.iconplus.smartproc.helper.service.BaseService;
|
||||
import com.iconplus.smartproc.model.entity.Menus;
|
||||
import com.iconplus.smartproc.model.entity.Permission;
|
||||
import com.iconplus.smartproc.model.entity.Roles;
|
||||
import com.iconplus.smartproc.model.request.ListPermissionRequest;
|
||||
import com.iconplus.smartproc.model.request.PermissionRequest;
|
||||
import com.iconplus.smartproc.repository.MenusRepository;
|
||||
import com.iconplus.smartproc.repository.PermissionRepository;
|
||||
import com.iconplus.smartproc.repository.RolesRepository;
|
||||
import com.iconplus.smartproc.util.Constants;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class PutUpdatePermissionService implements BaseService<ListPermissionRequest, EmptyResponse> {
|
||||
|
||||
private PermissionRepository permissionRepository;
|
||||
private MenusRepository menusRepository;
|
||||
private RolesRepository rolesRepository;
|
||||
public PutUpdatePermissionService(PermissionRepository permissionRepository,
|
||||
MenusRepository menusRepository,
|
||||
RolesRepository rolesRepository) {
|
||||
this.permissionRepository = permissionRepository;
|
||||
this.menusRepository = menusRepository;
|
||||
this.rolesRepository = rolesRepository;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public EmptyResponse execute(ListPermissionRequest input) {
|
||||
|
||||
Roles role = rolesRepository.findByIdAndIsDeleteFalse(input.getRoleId())
|
||||
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10005,
|
||||
Constants.ERR_TTL_10005,
|
||||
String.format(Constants.ERR_MSG_10005, input.getRoleId())));
|
||||
|
||||
List<Permission> permissionList = new ArrayList<>();
|
||||
|
||||
for (PermissionRequest permissionRequest : input.getData()) {
|
||||
Permission permission = getPermission(permissionRequest, role);
|
||||
permissionList.add(permission);
|
||||
}
|
||||
|
||||
permissionRepository.saveAll(permissionList);
|
||||
|
||||
return new EmptyResponse();
|
||||
}
|
||||
|
||||
public Menus findMenuById(Long menuId) {
|
||||
var menus = menusRepository.findByIdAndIsDeleteFalse(menuId);
|
||||
if (menus.isEmpty()) {
|
||||
throw new BusinessException(HttpStatus.CONFLICT,
|
||||
"err",
|
||||
"err",
|
||||
"err");
|
||||
}
|
||||
return menus.get();
|
||||
}
|
||||
|
||||
private Permission getPermission(PermissionRequest permissionRequest, Roles roles) {
|
||||
var permission = permissionRepository.findByRoleIdAndMenuIdAndIsDeleteFalse(roles.getId(), permissionRequest.getMenuId());
|
||||
if (permission.isPresent()) {
|
||||
permission.get().setCanView(permissionRequest.getCanView());
|
||||
permission.get().setCanRead(permissionRequest.getCanRead());
|
||||
permission.get().setCanCreate(permissionRequest.getCanCreate());
|
||||
permission.get().setCanUpdate(permissionRequest.getCanUpdate());
|
||||
permission.get().setCanDelete(permissionRequest.getCanDelete());
|
||||
return permission.get();
|
||||
} else {
|
||||
return Permission.builder()
|
||||
.roleId(roles.getId())
|
||||
.menuId(permissionRequest.getMenuId())
|
||||
.canView(permissionRequest.getCanView())
|
||||
.canRead(permissionRequest.getCanRead())
|
||||
.canCreate(permissionRequest.getCanCreate())
|
||||
.canUpdate(permissionRequest.getCanUpdate())
|
||||
.canDelete(permissionRequest.getCanDelete())
|
||||
.isDelete(false)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user