use of org.devgateway.ocds.web.rest.controller.request.YearFilterPagingRequest in project ocvn by devgateway.
the class TenderPercentagesControllerTest method avgTimeFromPlanToTenderPhase.
@Test
public void avgTimeFromPlanToTenderPhase() throws Exception {
final List<DBObject> avgTimeFromPlanToTenderPhase = tenderPercentagesController.avgTimeFromPlanToTenderPhase(new YearFilterPagingRequest());
final DBObject first = avgTimeFromPlanToTenderPhase.get(0);
int year = (int) first.get(TenderPercentagesController.Keys.YEAR);
double avgTimeFromPlanToTender = (double) first.get(TenderPercentagesController.Keys.AVG_TIME_FROM_PLAN_TO_TENDER_PHASE);
Assert.assertEquals(2015, year);
Assert.assertEquals(-315.00, avgTimeFromPlanToTender, 0);
}
use of org.devgateway.ocds.web.rest.controller.request.YearFilterPagingRequest in project ocvn by devgateway.
the class TenderPercentagesControllerTest method percentTendersWithLinkedProcurementPlan.
@Test
public void percentTendersWithLinkedProcurementPlan() throws Exception {
final List<DBObject> percentTendersWithLinkedProcurementPlan = tenderPercentagesController.percentTendersWithLinkedProcurementPlan(new YearFilterPagingRequest());
final DBObject first = percentTendersWithLinkedProcurementPlan.get(0);
int year = (int) first.get(TenderPercentagesController.Keys.YEAR);
int totalTendersWithLinkedProcurementPlan = (int) first.get(TenderPercentagesController.Keys.TOTAL_TENDERS_WITH_LINKED_PROCUREMENT_PLAN);
int totalTenders = (int) first.get(TenderPercentagesController.Keys.TOTAL_TENDERS);
double percentTenders = (double) first.get(TenderPercentagesController.Keys.PERCENT_TENDERS);
Assert.assertEquals(2014, year);
Assert.assertEquals(1, totalTendersWithLinkedProcurementPlan);
Assert.assertEquals(1, totalTenders);
Assert.assertEquals(100.0, percentTenders, 0);
final DBObject second = percentTendersWithLinkedProcurementPlan.get(1);
year = (int) second.get(TenderPercentagesController.Keys.YEAR);
totalTendersWithLinkedProcurementPlan = (int) second.get(TenderPercentagesController.Keys.TOTAL_TENDERS_WITH_LINKED_PROCUREMENT_PLAN);
totalTenders = (int) second.get(TenderPercentagesController.Keys.TOTAL_TENDERS);
percentTenders = (double) second.get(TenderPercentagesController.Keys.PERCENT_TENDERS);
Assert.assertEquals(2015, year);
Assert.assertEquals(2, totalTendersWithLinkedProcurementPlan);
Assert.assertEquals(2, totalTenders);
Assert.assertEquals(100.0, percentTenders, 0);
}
use of org.devgateway.ocds.web.rest.controller.request.YearFilterPagingRequest in project ocvn by devgateway.
the class TenderPercentagesControllerTest method percentTendersAwarded.
@Test
public void percentTendersAwarded() throws Exception {
final List<DBObject> percentTendersAwarded = tenderPercentagesController.percentTendersAwarded(new YearFilterPagingRequest());
final DBObject first = percentTendersAwarded.get(0);
int year = (int) first.get(TenderPercentagesController.Keys.YEAR);
int totalTendersWithOneOrMoreTenderers = (int) first.get(TenderPercentagesController.Keys.TOTAL_TENDERS_WITH_ONE_OR_MORE_TENDERERS);
int totalTendersWithTwoOrMoreTenderers = (int) first.get(TenderPercentagesController.Keys.TOTAL_TENDERS_WITH_TWO_OR_MORE_TENDERERS);
double percentTenders = (double) first.get(TenderPercentagesController.Keys.PERCENT_TENDERS);
Assert.assertEquals(2014, year);
Assert.assertEquals(1, totalTendersWithOneOrMoreTenderers);
Assert.assertEquals(1, totalTendersWithTwoOrMoreTenderers);
Assert.assertEquals(100.0, percentTenders, 0);
final DBObject second = percentTendersAwarded.get(1);
year = (int) second.get(TenderPercentagesController.Keys.YEAR);
totalTendersWithOneOrMoreTenderers = (int) second.get(TenderPercentagesController.Keys.TOTAL_TENDERS_WITH_ONE_OR_MORE_TENDERERS);
totalTendersWithTwoOrMoreTenderers = (int) second.get(TenderPercentagesController.Keys.TOTAL_TENDERS_WITH_TWO_OR_MORE_TENDERERS);
percentTenders = (double) second.get(TenderPercentagesController.Keys.PERCENT_TENDERS);
Assert.assertEquals(2015, year);
Assert.assertEquals(2, totalTendersWithOneOrMoreTenderers);
Assert.assertEquals(1, totalTendersWithTwoOrMoreTenderers);
Assert.assertEquals(50.0, percentTenders, 0);
}
use of org.devgateway.ocds.web.rest.controller.request.YearFilterPagingRequest in project oc-explorer by devgateway.
the class AwardsWonLostController method procurementsWonLost.
@ApiOperation(value = "Counts the won, lost procurements, flags and amounts. Receives any filters, " + "but most important here is the supplierId and bidderId. Requires bid extension. Use bidderId instead " + "of supplierId.")
@RequestMapping(value = "/api/procurementsWonLost", method = { RequestMethod.POST, RequestMethod.GET }, produces = "application/json")
public List<ProcurementsWonLost> procurementsWonLost(@ModelAttribute @Valid final YearFilterPagingRequest filter) {
Assert.notEmpty(filter.getBidderId(), "bidderId must not be empty!");
Assert.isTrue(CollectionUtils.isEmpty(filter.getSupplierId()), "supplierId is not allowed here! Use bidderId to show results!");
// supplier is the same thing as bidder for this particular query
filter.setSupplierId(filter.getBidderId());
Map<String, CriteriaDefinition> noSupplierCriteria = createDefaultFilterCriteriaMap(filter);
noSupplierCriteria.remove(MongoConstants.Filters.SUPPLIER_ID);
Aggregation agg1 = newAggregation(match(getYearDefaultFilterCriteria(filter, noSupplierCriteria, TENDER_PERIOD_START_DATE)), unwind("bids.details"), unwind("bids.details.tenderers"), match(getYearDefaultFilterCriteria(filter, noSupplierCriteria, TENDER_PERIOD_START_DATE)), group(BIDS_DETAILS_TENDERERS_ID).count().as("count").sum(BIDS_DETAILS_VALUE_AMOUNT).as("totalAmount").sum(FLAGS_TOTAL_FLAGGED).as("countFlags"), project("count", "totalAmount", "countFlags"));
List<CountAmountFlags> applied = releaseAgg(agg1, CountAmountFlags.class);
Aggregation agg2 = newAggregation(match(where(AWARDS_STATUS).is(Award.Status.active.toString()).andOperator(getYearDefaultFilterCriteria(filter, TENDER_PERIOD_START_DATE))), unwind("awards"), unwind("awards.suppliers"), match(where(AWARDS_STATUS).is(Award.Status.active.toString()).andOperator(getYearDefaultFilterCriteria(filter.awardFiltering(), TENDER_PERIOD_START_DATE))), group(MongoConstants.FieldNames.AWARDS_SUPPLIERS_ID).count().as("count").sum(MongoConstants.FieldNames.AWARDS_VALUE_AMOUNT).as("totalAmount").sum(FLAGS_TOTAL_FLAGGED).as("countFlags"), project("count", "totalAmount", "countFlags"));
List<CountAmountFlags> won = releaseAgg(agg2, CountAmountFlags.class);
ArrayList<ProcurementsWonLost> ret = new ArrayList<>();
applied.forEach(a -> {
ProcurementsWonLost r = new ProcurementsWonLost();
r.setApplied(a);
Optional<CountAmountFlags> optWon = won.stream().filter(w -> w.getId().equals(a.getId())).findFirst();
if (optWon.isPresent()) {
r.setWon(optWon.get());
r.setLostAmount(r.getApplied().getTotalAmount().subtract(r.getWon().getTotalAmount()));
r.setLostCount(r.getApplied().getCount() - r.getWon().getCount());
} else {
r.setLostAmount(r.getApplied().getTotalAmount());
r.setLostCount(r.getLostCount());
}
ret.add(r);
});
return ret;
}
use of org.devgateway.ocds.web.rest.controller.request.YearFilterPagingRequest in project oc-explorer by devgateway.
the class CorruptionRiskDashboardIndicatorsStatsControllerTest method totalFlaggedIndicatorsByIndicatorTypeByYearTest.
@Test
public void totalFlaggedIndicatorsByIndicatorTypeByYearTest() throws Exception {
final List<DBObject> result = corruptionRiskDashboardIndicatorsStatsController.totalFlaggedIndicatorsByIndicatorTypeByYear(new YearFilterPagingRequest());
Assert.assertEquals(1, result.size());
Assert.assertEquals(FlagType.RIGGING.toString(), result.get(0).get(CorruptionRiskDashboardIndicatorsStatsController.Keys.TYPE));
Assert.assertEquals(2, result.get(0).get(CorruptionRiskDashboardIndicatorsStatsController.Keys.INDICATOR_COUNT));
Assert.assertEquals(2015, result.get(0).get(CorruptionRiskDashboardIndicatorsStatsController.Keys.YEAR));
}
Aggregations