package com.ese.model.dao;
import com.ese.model.db.MenuObjectModel;
import com.ese.utils.Utils;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.type.StringType;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class MenuObjectDAO extends GenericDAO<MenuObjectModel, Integer>{
public List<MenuObjectModel> findByObjCategory(){
List<MenuObjectModel> menuObjectModels = null;
try {
Criteria criteria = getCriteria();
criteria.add(Restrictions.eq("objCategory", 1));
criteria.addOrder(Order.asc("seq"));
menuObjectModels = Utils.safetyList(criteria.list());
} catch (Exception e) {
log.debug("Exception error findByObjCategory : ", e);
}
return menuObjectModels;
}
public List<String> findByStaffId(int staffId) throws Exception {
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("SELECT ").append(getPrefix()).append(".menu_object.code AS CODE");
sqlBuilder.append(" FROM ").append(getPrefix()).append(".menu_object");
sqlBuilder.append(" WHERE ").append(getPrefix()).append(".menu_object.id IN (");
sqlBuilder.append(" SELECT ").append(getPrefix()).append(".user_access.menu_object_id");
sqlBuilder.append(" FROM ").append(getPrefix()).append(".user_access");
sqlBuilder.append(" WHERE ").append(getPrefix()).append(".user_access.staff_id = "+staffId+")");
return Utils.safetyList(getSession().createSQLQuery(sqlBuilder.toString()).addScalar("CODE", StringType.INSTANCE).list());
}
public List<MenuObjectModel> findByObjectId(int menuObjectId, String keySearch){
List<MenuObjectModel> menuObjectModels = null;
try {
Criteria criteria = getCriteria();
if (!Utils.isZero(menuObjectId)){
criteria.add(Restrictions.eq("parentId", menuObjectId));
}
if (!Utils.isNull(keySearch) && !Utils.isZero(keySearch.trim().length())){
Criterion objectCode = Restrictions.like("code", "%" + keySearch.trim() + "%");
Criterion objecyName = Restrictions.like("name", "%"+keySearch.trim()+"%");
criteria.add(Restrictions.or(objectCode,objecyName));
}
criteria.addOrder(Order.asc("seq"));
menuObjectModels = criteria.list();
} catch (Exception e) {
log.debug("Exception error findByObjCategory : ", e);
}
return menuObjectModels;
}
public List<MenuObjectModel> findAllOrderBySeq(){
List<MenuObjectModel> menuObjectModels = null;
try {
Criteria criteria = getCriteria();
criteria.addOrder(Order.asc("seq"));
menuObjectModels = criteria.list();
} catch (Exception e) {
log.debug("Exception error findByObjCategory : ", e);
}
return menuObjectModels;
}
public List<MenuObjectModel> findAllOrderByCode(){
List<MenuObjectModel> menuObjectModelList = Utils.getEmptyList();
try {
Criteria criteria = getCriteria();
criteria.addOrder(Order.asc("code"));
menuObjectModelList = Utils.safetyList(criteria.list());
} catch (Exception e) {
log.debug("Exception error findAllOrderByCode : ", e);
}
return menuObjectModelList;
}
}