package com.example.expense.order.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.example.expense.base.enumeration.OrderType;
import com.example.expense.entity.Order;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.orm.hibernate.HibernateDao;
import com.norteksoft.product.util.ContextUtils;
@Repository
public class OrderDao extends HibernateDao<Order, Long> {
public Page<Order> list(Page<Order> page){
return findPage(page, "from Order o");
}
public List<Order> getAllOrder(){
return find("from Order o");
}
public Page<Order> search(Page<Order> page) {
return searchPageByHql(page, "select distinct o from Order o inner join o.orderItems orderItems order by o.orderNumber asc");
}
public Page<Order> getPortalOrders(Page<Order> page, String type) {
if(type==null){
return searchPageByHql(page, "select distinct o from Order o inner join o.orderItems orderItems where o.companyId = ? order by o.orderNumber asc",ContextUtils.getCompanyId());
}else{
return searchPageByHql(page, "select distinct o from Order o inner join o.orderItems orderItems where o.type=? and o.companyId = ? order by o.orderNumber asc",OrderType.valueOf(type),ContextUtils.getCompanyId());
}
}
public Page<Order> getPortalOrdersWidget(Page<Order> page, String type) {
if(type==null){
return searchPageByHql(page, "select distinct o from Order o inner join o.orderItems orderItems where o.companyId = ? and o.creator=? order by o.orderNumber asc",ContextUtils.getCompanyId(),ContextUtils.getLoginName());
}else{
return searchPageByHql(page, "select distinct o from Order o inner join o.orderItems orderItems where o.type=? and o.companyId = ? and o.creator=? order by o.orderNumber asc",OrderType.valueOf(type),ContextUtils.getCompanyId(),ContextUtils.getLoginName());
}
}
public Order getOrderById(Long id) {
return findUnique("from Order o where o.id=? ",id);
}
public void updateIndex(Integer originalIndex, Integer newIndex) {
createQuery("update Order o set o.displayIndex=? where o.displayIndex=?",
newIndex,originalIndex).executeUpdate();
}
public void decreaseIndex(Integer start, Integer end) {
createQuery("update Order o set o.displayIndex=o.displayIndex-1 where o.displayIndex>? and o.displayIndex<=?",
start,end).executeUpdate();
}
public void increaseIndex(Integer start, Integer end) {
createQuery("update Order o set o.displayIndex=o.displayIndex+1 where o.displayIndex>=? and o.displayIndex<?",
start,end).executeUpdate();
}
public Page<Order> searchSort(Page<Order> page) {
return searchPageByHql(page, "select o from Order o ");
}
public Integer getMaxIndex() {
return findUnique("select Max(o.displayIndex) from Order o ");
}
public void decreaseIndex(Integer displayIndex) {
createQuery("update Order o set o.displayIndex=o.displayIndex-1 where o.displayIndex>? ",
displayIndex).executeUpdate();
}
}