Subversion Repositories SmartDukaan

Rev

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

Rev 27713 Rev 27877
Line 1... Line 1...
1
package com.spice.profitmandi.service.scheme;
1
package com.spice.profitmandi.service.scheme;
2
 
2
 
3
import java.text.MessageFormat;
3
import java.text.MessageFormat;
-
 
4
import java.time.LocalDate;
4
import java.time.LocalDateTime;
5
import java.time.LocalDateTime;
5
import java.util.ArrayList;
6
import java.util.ArrayList;
6
import java.util.Arrays;
7
import java.util.Arrays;
7
import java.util.Comparator;
8
import java.util.Comparator;
8
import java.util.HashMap;
9
import java.util.HashMap;
Line 282... Line 283...
282
			schemeIdSchemeMap.get(schemeItem.getSchemeId()).getItemStringMap().put(schemeItem.getItemId(),
283
			schemeIdSchemeMap.get(schemeItem.getSchemeId()).getItemStringMap().put(schemeItem.getItemId(),
283
					itemStringMap.get(schemeItem.getItemId()));
284
					itemStringMap.get(schemeItem.getItemId()));
284
		}
285
		}
285
	}
286
	}
286
 
287
 
287
	private void addRetailerIdsToSchemes(List<RetailerScheme> retailerSchemes, Map<Integer, Scheme> schemeIdSchemeMap) {
-
 
288
		for (RetailerScheme retailerScheme : retailerSchemes) {
-
 
289
			schemeIdSchemeMap.get(retailerScheme.getSchemeId()).getRetailerIds().add(retailerScheme.getRetailerId());
-
 
290
		}
-
 
291
	}
-
 
292
 
-
 
293
	private List<SchemeModel> toSchemeModels(Map<Integer, Scheme> schemeIdSchemeMap) {
288
	private List<SchemeModel> toSchemeModels(Map<Integer, Scheme> schemeIdSchemeMap) {
294
		List<SchemeModel> schemeModels = new ArrayList<>();
289
		List<SchemeModel> schemeModels = new ArrayList<>();
295
		for (Map.Entry<Integer, Scheme> schemeIdSchemeEntry : schemeIdSchemeMap.entrySet()) {
290
		for (Map.Entry<Integer, Scheme> schemeIdSchemeEntry : schemeIdSchemeMap.entrySet()) {
296
			schemeModels.add(this.toSchemeModel(schemeIdSchemeEntry.getValue()));
291
			schemeModels.add(this.toSchemeModel(schemeIdSchemeEntry.getValue()));
297
		}
292
		}
Line 831... Line 826...
831
	 * 
826
	 * 
832
	 * }
827
	 * }
833
	 */
828
	 */
834
 
829
 
835
	@Override
830
	@Override
836
	public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, int itemId, boolean isAdmin, int offset,
831
	public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, LocalDate onDate, int itemId, boolean isAdmin, int offset,
837
			int limit) throws ProfitMandiBusinessException {
832
			int limit) throws ProfitMandiBusinessException {
838
		Session session = sessionFactory.getCurrentSession();
833
		Session session = sessionFactory.getCurrentSession();
839
		CriteriaBuilder cb = session.getCriteriaBuilder();
834
		CriteriaBuilder cb = session.getCriteriaBuilder();
840
		CriteriaQuery<Scheme> query = cb.createQuery(Scheme.class);
835
		CriteriaQuery<Scheme> query = cb.createQuery(Scheme.class);
841
		Root<Scheme> scheme = query.from(Scheme.class);
836
		Root<Scheme> scheme = query.from(Scheme.class);
Line 856... Line 851...
856
				return new ArrayList<>();
851
				return new ArrayList<>();
857
			}
852
			}
858
			p3 = cb.in(scheme.get("id")).value(schemeIds);
853
			p3 = cb.in(scheme.get("id")).value(schemeIds);
859
			if (!isAdmin) {
854
			if (!isAdmin) {
860
 
855
 
861
				finalPredicate = cb.and(p1, p2, p3);
856
				finalPredicate = cb.and(p1, p2, p3, cb.greaterThan(scheme.get("endDateTime"), onDate.atStartOfDay()),
-
 
857
						cb.lessThanOrEqualTo(scheme.get("startDateTime"), onDate.atStartOfDay()));
862
				query.where(finalPredicate);
858
				query.where(finalPredicate);
863
			} else {
859
			} else {
864
				finalPredicate = cb.and(p1, p3);
860
				finalPredicate = cb.and(p1, p3);
865
				query.where(finalPredicate);
861
				query.where(finalPredicate);
866
			}
862
			}
Line 879... Line 875...
879
		return session.createQuery(query).setFirstResult(offset).setMaxResults(limit).getResultList();
875
		return session.createQuery(query).setFirstResult(offset).setMaxResults(limit).getResultList();
880
 
876
 
881
	}
877
	}
882
 
878
 
883
	@Override
879
	@Override
884
	public long selectSchemeCount(PartnerType partnerType, int itemId, boolean isAdmin) {
880
	public long selectSchemeCount(PartnerType partnerType, LocalDate onDate, int itemId, boolean isAdmin) {
885
		Session session = sessionFactory.getCurrentSession();
881
		Session session = sessionFactory.getCurrentSession();
886
		CriteriaBuilder cb = session.getCriteriaBuilder();
882
		CriteriaBuilder cb = session.getCriteriaBuilder();
887
		CriteriaQuery<Long> query = cb.createQuery(Long.class);
883
		CriteriaQuery<Long> query = cb.createQuery(Long.class);
888
		Root<Scheme> scheme = query.from(Scheme.class);
884
		Root<Scheme> scheme = query.from(Scheme.class);
889
		List<PartnerType> pt = new ArrayList<>();
885
		List<PartnerType> pt = new ArrayList<>();
Line 895... Line 891...
895
		if (itemId != 0) {
891
		if (itemId != 0) {
896
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByItemId(itemId);
892
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByItemId(itemId);
897
			Predicate p3 = cb.in(scheme.get("id")).value(schemeIds);
893
			Predicate p3 = cb.in(scheme.get("id")).value(schemeIds);
898
			if (!isAdmin) {
894
			if (!isAdmin) {
899
 
895
 
900
				finalPredicate = cb.and(p1, p2, p3);
896
				finalPredicate = cb.and(p1, p2, p3, cb.greaterThan(scheme.get("endDateTime"), onDate.atStartOfDay()),
-
 
897
						cb.lessThanOrEqualTo(scheme.get("startDateTime"), onDate.atStartOfDay()));
901
				query.select(cb.count(scheme)).where(finalPredicate);
898
				query.select(cb.count(scheme)).where(finalPredicate);
902
			} else {
899
			} else {
903
				finalPredicate = cb.and(p1, p3);
900
				finalPredicate = cb.and(p1, p3);
904
				query.select(cb.count(scheme)).where(finalPredicate);
901
				query.select(cb.count(scheme)).where(finalPredicate);
905
			}
902
			}