package com.norteksoft.acs.dao.authority;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.norteksoft.acs.base.enumeration.ConditionValueType;
import com.norteksoft.acs.base.enumeration.ItemType;
import com.norteksoft.acs.base.enumeration.LeftBracket;
import com.norteksoft.acs.base.enumeration.LogicOperator;
import com.norteksoft.acs.base.enumeration.RightBracket;
import com.norteksoft.acs.base.enumeration.UserOperator;
import com.norteksoft.acs.entity.authority.PermissionItem;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.orm.hibernate.HibernateDao;
import com.norteksoft.product.util.ContextUtils;
@Repository
public class PermissionItemDao extends HibernateDao<PermissionItem,Long>{
public void getPermissionItems(Page<PermissionItem> page,Long permissionId){
this.searchPageSubByHql(page, "from PermissionItem pi where pi.permission.id=?", permissionId);
}
public List<PermissionItem> getAllPermissionItems(Long permissionId){
return this.find("from PermissionItem pi where pi.permission.id=? and pi.companyId=?", permissionId,ContextUtils.getCompanyId());
}
public PermissionItem getPermissionItem(ItemType itemType,UserOperator operator, LogicOperator joinType, String conditionValue,Long permissionId,LeftBracket leftBracket,RightBracket rightBracket) {
List<PermissionItem> permissionItems=this.find("from PermissionItem p where p.companyId=? and p.itemType=? and p.operator=? and p.joinType=? and p.conditionValue=? and p.permission.id=? and p.leftBracket=? and p.rightBracket=?",ContextUtils.getCompanyId(),itemType,operator,joinType,conditionValue,permissionId,leftBracket,rightBracket);
if(permissionItems!=null&&permissionItems.size()>0){
return permissionItems.get(0);
}else{
return null;
}
}
public void deleteAllPermissionItems(Long permissionId){
this.createQuery("delete from PermissionItem pi where pi.permission.id=? and pi.companyId=?", permissionId,ContextUtils.getCompanyId()).executeUpdate();
}
public List<PermissionItem> getPermissionItemsByPermission(Long permissionId,ItemType itemType){
return this.find("select pi from PermissionItem pi join pi.permission p where p.id=? and pi.itemType=? order by pi.id", permissionId,itemType);
}
public List<String> getPermissionUserNamesByPermission(Long permissionId,ItemType itemType){
return this.find("select pi.conditionName from PermissionItem pi join pi.permission p where p.id=? and pi.itemType=? order by pi.id", permissionId,itemType);
}
public List<String> getPermissionItemConditionNameByItem(Long permissionItemId,ConditionValueType valueType){
return this.find("select pic.conditionName from PermissionItemCondition pic where pic.valueType=? and pic.dataId=? order by pic.id",valueType, permissionItemId);
}
public List<String> getPermissionItemConditionValueByItem(Long permissionItemId,ConditionValueType valueType){
return this.find("select pic.conditionValue from PermissionItemCondition pic where pic.valueType=? and pic.dataId=? order by pic.id", valueType,permissionItemId);
}
/**
* 获得指定授权条件集合
* @param permissionId
* @return
*/
public List<PermissionItem> getPermissionItemsByPermission(Long permissionId){
return this.find("select pi from PermissionItem pi join pi.permission p where p.id=? order by pi.id", permissionId);
}
public void deleteItemTypeAllUserPermissionItems(Long permissionId){
this.createQuery("delete from PermissionItem pi where pi.permission.id=? and pi.companyId=? and pi.itemType=? order by pi.displayOrder", permissionId,ContextUtils.getCompanyId(),ItemType.ALL_USER).executeUpdate();
}
public void deleteItemTypeNotAllUserPermissionItems(Long permissionId){
this.createQuery("delete from PermissionItem pi where pi.permission.id=? and pi.companyId=? and pi.itemType<>? order by pi.displayOrder", permissionId,ContextUtils.getCompanyId(),ItemType.ALL_USER).executeUpdate();
}
public List<PermissionItem> getItemTypeNotAllUserPermissionItems(Long permissionId){
return this.find("from PermissionItem pi where pi.permission.id=? and pi.companyId=? and pi.itemType<>? order by pi.displayOrder", permissionId,ContextUtils.getCompanyId(),ItemType.ALL_USER);
}
}