Skip to content

Commit 5ffdfba

Browse files
committed
feat(result): get results for a lineItem given
1 parent d884eb4 commit 5ffdfba

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

src/main/java/org/apereo/openlrw/oneroster/endpoint/ClassController.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727
import org.apereo.openlrw.caliper.Event;
2828

2929
import java.time.Instant;
30+
import java.util.ArrayList;
3031
import java.util.Collection;
32+
import java.util.Collections;
3133

3234

3335
/**
@@ -99,7 +101,7 @@ public Collection<LineItem> getLineItemsForClass(JwtAuthenticationToken token, @
99101
* @throws ResultNotFoundException
100102
*/
101103
@RequestMapping(value = "/{classId:.+}/lineitems/{lineitemId}/results", method = RequestMethod.GET)
102-
public Result getLineItemsResults(JwtAuthenticationToken token, @PathVariable final String lineitemId) throws ResultNotFoundException {
104+
public Collection<Result> getLineItemsResults(JwtAuthenticationToken token, @PathVariable final String lineitemId) throws ResultNotFoundException {
103105
UserContext userContext = (UserContext) token.getPrincipal();
104106
return resultService.getResultsForlineItem(userContext.getTenantId(), userContext.getOrgId(), lineitemId);
105107
}
@@ -118,12 +120,21 @@ public ResponseEntity<?> postLineItem(JwtAuthenticationToken token, @RequestBody
118120
@RequestMapping(value = "/{classId:.+}/results", method = RequestMethod.GET)
119121
public Collection<Result> getResultsForClass(JwtAuthenticationToken token, @PathVariable final String classId) throws LineItemNotFoundException, ResultNotFoundException {
120122
UserContext userContext = (UserContext) token.getPrincipal();
121-
return resultService.getResultsForClass(userContext.getTenantId(), userContext.getOrgId(), classId);
123+
124+
Collection<LineItem> lineItems = this.lineItemService.getLineItemsForClass(userContext.getTenantId(), userContext.getOrgId(), classId);
125+
ArrayList<Result> results = new ArrayList<Result>();
126+
for (LineItem lineItem : lineItems) {
127+
Collection<Result> lineItemResults = this.resultService.getResultsForlineItem(userContext.getTenantId(), userContext.getOrgId(), lineItem.getSourcedId());
128+
results.addAll(lineItemResults);
129+
}
130+
131+
return results;
122132
}
123133

124134
@RequestMapping(value= "/{classId:.+}/results", method = RequestMethod.POST)
125135
public ResponseEntity<?> postResult(JwtAuthenticationToken token, @PathVariable final String classId, @RequestBody Result result, @RequestParam(value="check", required=false) Boolean check) {
126136
UserContext userContext = (UserContext) token.getPrincipal();
137+
127138
Result savedResult = this.resultService.save(userContext.getTenantId(), userContext.getOrgId(), classId, result, (check == null) ? true : check);
128139
HttpHeaders httpHeaders = new HttpHeaders();
129140
httpHeaders.setLocation(ServletUriComponentsBuilder.fromCurrentRequest()

src/main/java/org/apereo/openlrw/oneroster/service/ResultService.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,19 @@ public Collection<Result> getResultsForClass(final String tenantId, final String
7777
throw new ResultNotFoundException(String.format("Result not found for %s", classSourcedId));
7878
}
7979

80-
/** Returns the result for lineitem
80+
/** Return the results for lineitem
8181
* @param tenantId
8282
* @param orgId
8383
* @param lineItemSourcedId
8484
* @return Result
8585
* @throws ResultNotFoundException
8686
*/
87-
public Result getResultsForlineItem(final String tenantId, final String orgId, final String lineItemSourcedId) throws ResultNotFoundException{
88-
MongoResult mongoResult = mongoResultRepository.findByTenantIdAndOrgIdAndLineitemSourcedId(tenantId, orgId, lineItemSourcedId);
89-
return getResult(lineItemSourcedId, mongoResult);
87+
public Collection<Result> getResultsForlineItem(final String tenantId, final String orgId, final String lineItemSourcedId) throws ResultNotFoundException{
88+
89+
Collection<MongoResult> mongoResults = mongoResultRepository.findByTenantIdAndOrgIdAndLineitemSourcedId(tenantId, orgId, lineItemSourcedId);
90+
if (mongoResults == null || mongoResults.isEmpty())
91+
throw new ResultNotFoundException("Results not found");
92+
return mongoResults.stream().map(MongoResult::getResult).collect(Collectors.toList());
9093
}
9194

9295
private Result getResult(final String parameter, MongoResult mongoResult) {

src/main/java/org/apereo/openlrw/oneroster/service/repository/MongoResultRepository.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,9 @@ public interface MongoResultRepository extends MongoRepository<MongoResult, Stri
1111

1212
MongoResult findByTenantIdAndOrgIdAndResultSourcedId(final String tenantId, final String orgId, final String resultSourcedId);
1313

14-
MongoResult
15-
findByTenantIdAndOrgIdAndLineitemSourcedId(final String tenantId, final String orgId,
16-
final String lineItemSourcedId);
14+
Collection<MongoResult> findByTenantIdAndOrgIdAndLineitemSourcedId(final String tenantId, final String orgId, final String lineItemSourcedId);
1715

1816
MongoResult
19-
findByTenantIdAndOrgIdAndUserSourcedId(final String tenantId, final String orgId,
20-
final String userSourcedId);
17+
findByTenantIdAndOrgIdAndUserSourcedId(final String tenantId, final String orgId, final String userSourcedId);
2118

2219
}

0 commit comments

Comments
 (0)