| 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 |
}
|