Partially implement Rider spendings (1.2.3 a)
This commit is contained in:
parent
e715ce7f62
commit
b38b24f018
@ -3,15 +3,25 @@ package dst.ass1.jpa.dao.impl;
|
||||
import dst.ass1.jpa.dao.IRiderDAO;
|
||||
import dst.ass1.jpa.model.IMoney;
|
||||
import dst.ass1.jpa.model.IRider;
|
||||
import dst.ass1.jpa.model.ITrip;
|
||||
import dst.ass1.jpa.model.ITripInfo;
|
||||
import dst.ass1.jpa.model.impl.Rider;
|
||||
import dst.ass1.jpa.model.impl.Trip;
|
||||
import dst.ass1.jpa.model.impl.TripInfo;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.Query;
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Join;
|
||||
import javax.persistence.criteria.Root;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static dst.ass1.jpa.util.Constants.M_RIDER_EMAIL;
|
||||
import static dst.ass1.jpa.util.Constants.Q_RIDER_BY_EMAIL;
|
||||
import static dst.ass1.jpa.util.Constants.*;
|
||||
|
||||
public class RiderDAO extends GenericDAO<IRider> implements IRiderDAO {
|
||||
public RiderDAO(EntityManager entityManager) {
|
||||
@ -31,11 +41,26 @@ public class RiderDAO extends GenericDAO<IRider> implements IRiderDAO {
|
||||
|
||||
@Override
|
||||
public Double getTotalDistanceOfMostRecentRider() {
|
||||
// TODO
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<IRider, Map<String, IMoney>> getRecentSpending() {
|
||||
CriteriaBuilder criteriaBuilder = super.entityManager.getCriteriaBuilder();
|
||||
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery();
|
||||
Root<IRider> root = criteriaQuery.from(Rider.class);
|
||||
Join<IRider, ITrip> riderJoinTrip = root.join(M_RIDER_TRIPS);
|
||||
Join<Join<IRider, ITrip>, ITripInfo> riderJoinTripJoinTripInfo = riderJoinTrip.join(A_TRIP_INFO);
|
||||
|
||||
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
|
||||
|
||||
criteriaQuery.multiselect(
|
||||
riderJoinTrip.get(M_TRIP_RIDER), riderJoinTripJoinTripInfo.get(M_TRIP_INFO_TOTAL)
|
||||
).where(criteriaBuilder.greaterThanOrEqualTo(riderJoinTripJoinTripInfo.get(M_TRIP_INFO_COMPLETED), date));
|
||||
|
||||
List result = super.entityManager.createQuery(criteriaQuery).getResultList();
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user