package org.netevolved.reporting.learninggroups; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.netevolved.reporting.BaseReportGroup; import org.openedit.Data; import org.openedit.data.Searcher; import org.openedit.hittracker.HitTracker; import org.openedit.hittracker.SearchQuery; import org.openedit.money.Money; import org.openedit.store.orders.Order; public class EnrolledStudentsGroup extends BaseReportGroup { protected Data fieldLearningGroupData; public Data getLearningGroupData() { return fieldLearningGroupData; } public void setLearningGroupData(Data inLearningGroupData) { fieldLearningGroupData = inLearningGroupData; } public List loadAuthorizedOrdersForStudent(Data inUserProfile){ String customerid = inUserProfile.getId(); String lgid = getLearningGroupData().getId(); Searcher ordersearcher = getMediaArchive().getSearcher("storeOrder"); List list = new ArrayList(); SearchQuery query = ordersearcher.createSearchQuery(); query.addMatches("customer", customerid); query.addContains("learninggroup",lgid);//order will have one or more learning groups query.addMatches("orderstatus","authorized"); HitTracker hits = ordersearcher.search(query); for(int i=0; i < hits.size(); i++){ Data d = hits.get(i); Order order = (Order) ordersearcher.searchById(d.getId()); list.add(order); } return list; } public HitTracker loadInstructors(){ Set set = new HashSet(); Data lg = getLearningGroupData(); String instructorid = lg.get("instructor"); if (instructorid != null && !instructorid.isEmpty()){ set.add(instructorid); } //instructor field //also need to look at studentclasses table and search by instructor role Searcher searcher = getMediaArchive().getSearcher("studentclasses"); SearchQuery query = searcher.createSearchQuery(); query.addMatches("learninggroup",lg.getId()); query.addMatches("grouprole","instructor"); HitTracker hits = searcher.search(query); for(int i=0; i orders = loadAuthorizedOrdersForStudent(userprofile); for(Order order:orders){ money = money.add(order.getTotalPrice()); } } return money; } }