...
Pros | Cons |
---|---|
As get course has meta data to indicate open batch count per installation, so no need to make any extra api call |
|
2. Data is updated by scheduler job and scheduler job is not 100% guaranteed | |
3. Some time due to content attribute changes , it's not able to update the content, so in that case meta data won't be updated. 4. TO add meta data for upcoming batch as well , will have more complexity to manage it when upcoming batch changes as ongoing. |
Note : So to support solution 1: we need to take following actions:
...
Actions |
---|
|
Proposed Solution 2:
User can make another api as batch search api by passing all courseIds and some extra filters.
...
language | js |
---|---|
title | Batch search query |
...
:
...
...
- Existing api can be re-used.
...
- Caller (portal/app) need to make one extra api call and then then need to merge both response
- Caller need to make one more api call to get my enroll course
- It can have performance issues .
Proposed Solution 3:
Sunbird will expose a new api to get open batch count for list of courseIds. for ongoing and upcoming batches. New api details will be as follows:
...
Code Block | ||||
---|---|---|---|---|
| ||||
URI: v1/course/batch/count?offset=0&limit=20 Methods: POSTGET Request--- bodyInternal 1:work {flow "request": { When user call this "filters":{api , it will internally make course batch search by passing different filters. "courseId":["courseId-1","courseId-2"], "status":["0","1"], "enrollmentType":"open" } } } Request body 2: It will internally make two ES call. first call to collect all courseIds with participant list . Based on that response it will keep count of same courseId and remove those courseId for which user is already enrolled. After that based on unique courseList it will fetch complete data and merge count in new response. { "request": { "filters":{ "courseIdstatus":["courseId-10","courseId-21"], } "enrollmentType":"open" } } Request}, body 3: { "request": { "offset":0, "courseIdlimit":["courseId-1","courseId-2"]20 } } ---- Response: { "id": "api.course.batch.count", "ver": "v1", "ts": "2018-11-20 17:53:00:716+0000", "params": { "resmsgid": null, "msgid": "8e27cbf5-e299-43b0-bca7-8347f7e5abcf", "err": null, "status": "success", "errmsg": null }, "responseCode": "OK", "result": { "response": { "count": 8, "content": [ { "identifier": "", "createdFor": [ "", "" ], "courseAdditionalInfo": { "courseIdcourseName": "doSUBU_212629947829903360167201", "openBatchCountleafNodesCount":2, "3", "inviteOnlyBatchCountdescription":0 "Why?", "courseLogoUrl": "https://sunbirdstaging.blob.core.windows.net/sunbird-content-staging/content/{}/artifact/images-1_1532061239427.thumb.jpg", "tocUrl": "https://sunbirdstaging.blob.core.windows.net/sunbird-content-staging/content/{}/artifact/{}toc.json", "status": "Live" }, "endDate": "2018-12-31", "description": "nieowhoifheoiw", "participant": { "userId": true }, "countIncrementStatus": false, "createdDate": "2018-11-21 04:47:18:306+0000", "createdBy": "", "courseCreator": "", "hashTagId": "0126384233410641921", "mentors": [], "countDecrementStatus": false, "name": "My batch", "id": "0126384233410641921", "enrollmentType": "open", "courseId": "do_2126299478299033601672"212638416227246080157", "startDate": "2018-11-21", "status": 1, "openBatchCount":2 }, { "inviteOnlyBatchCount":0 ........ "courseId": "do_2126299478299033601672", "openBatchCount":2 } ] } } } |
Pros | Cons |
---|---|
|
|
Proposed Solution 3:
User can make another api as batch search api by passing all courseIds and some extra filters.
Code Block | ||||
---|---|---|---|---|
| ||||
{"request":{"filters":{ "courseId" : ["do_112634552998936576175","do_112634535631675392173","do_112633845274157056122"],"status":["0","1"],"enrollmentType":"open"},
"sort_by":{"createdDate":"desc"}
}
} |
Pros | Cons |
---|---|
|
|
Open Questions :
- If one course have 3 open batches and caller already enrolled for one batch then do we need to sent open batch count as 3 or 2 or for him there is no open batch to do enroll.
...