Subversion Repositories SmartDukaan

Rev

Rev 30191 | Rev 30261 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 30191 Rev 30253
Line 877... Line 877...
877
 
877
 
878
	@Override
878
	@Override
879
	public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, LocalDate onDate, int catalogId,
879
	public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, LocalDate onDate, int catalogId,
880
												  boolean isAdmin, int offset, int limit) throws ProfitMandiBusinessException {
880
												  boolean isAdmin, int offset, int limit) throws ProfitMandiBusinessException {
881
		Session session = sessionFactory.getCurrentSession();
881
		Session session = sessionFactory.getCurrentSession();
-
 
882
		List<Predicate> andPredicates = new ArrayList<>();
882
		CriteriaBuilder cb = session.getCriteriaBuilder();
883
		CriteriaBuilder cb = session.getCriteriaBuilder();
883
		CriteriaQuery<Scheme> query = cb.createQuery(Scheme.class);
884
		CriteriaQuery<Scheme> query = cb.createQuery(Scheme.class);
884
		Root<Scheme> scheme = query.from(Scheme.class);
885
		Root<Scheme> scheme = query.from(Scheme.class);
885
		Predicate finalPredicate = cb.and();
-
 
886
		if (!partnerType.equals(PartnerType.ALL)) {
886
		if (!partnerType.equals(PartnerType.ALL)) {
887
			List<PartnerType> pt = new ArrayList<>();
887
			List<PartnerType> pt = new ArrayList<>();
888
			pt.add(PartnerType.ALL);
888
			pt.add(PartnerType.ALL);
889
			pt.add(partnerType);
889
			pt.add(partnerType);
890
			Predicate p1 = cb.in(scheme.get("partnerType")).value(pt);
890
			andPredicates.add(cb.in(scheme.get("partnerType")).value(pt));
891
			finalPredicate = cb.and(p1);
-
 
892
		}
891
		}
893
		Predicate p2 = cb.isNotNull(scheme.get("activeTimestamp"));
-
 
894
		cb.desc(cb.isNull(scheme.get("expireTimestamp")));
892
		cb.desc(cb.isNull(scheme.get("expireTimestamp")));
895
 
-
 
896
		if (catalogId > 0) {
893
		if (catalogId > 0) {
897
 
894
 
898
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByCatalogId(catalogId);
895
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByCatalogId(catalogId);
899
			LOGGER.info("schemeId" + schemeIds);
896
			LOGGER.info("schemeId" + schemeIds);
900
			if (schemeIds.isEmpty()) {
897
			if (schemeIds.isEmpty()) {
901
				return new ArrayList<>();
898
				return new ArrayList<>();
902
			}
899
			}
903
			Predicate p3 = cb.in(scheme.get("id")).value(schemeIds);
900
			andPredicates.add(cb.in(scheme.get("id")).value(schemeIds));
904
			if (onDate != null) {
901
			if (onDate != null) {
905
				finalPredicate = cb.and(p2, p3, cb.greaterThan(scheme.get("endDateTime"), onDate.atStartOfDay()),
902
				andPredicates.add(cb.greaterThan(scheme.get("endDateTime"), onDate.atStartOfDay()));
906
						cb.lessThanOrEqualTo(scheme.get("startDateTime"), onDate.atStartOfDay()));
903
				andPredicates.add(cb.lessThanOrEqualTo(scheme.get("startDateTime"), onDate.atStartOfDay()));
907
			} else {
-
 
908
				finalPredicate = cb.and(p3);
-
 
909
			}
-
 
910
		} else {
-
 
911
			if (!isAdmin) {
-
 
912
				finalPredicate = cb.and(p2);
-
 
913
			}
904
			}
914
		}
905
		}
-
 
906
		if (!isAdmin) {
-
 
907
			andPredicates.add(cb.isNotNull(scheme.get("activeTimestamp")));
-
 
908
		}
915
		query.where(finalPredicate);
909
		query.where(cb.and(andPredicates.toArray(new Predicate[0])));
916
		query.orderBy(cb.desc(cb.function("isnull", Boolean.class, scheme.get("expireTimestamp"))));
910
		query.orderBy(cb.desc(cb.function("isnull", Boolean.class, scheme.get("expireTimestamp"))));
917
 
911
 
918
		return session.createQuery(query).setFirstResult(offset).setMaxResults(limit).getResultList();
912
		return session.createQuery(query).setFirstResult(offset).setMaxResults(limit).getResultList();
919
 
913
 
920
	}
914
	}