Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(Peer Group): Add support for Peer Group activities (#111)
* Create domain objects and dao's for PeerGroup #38 (#39) Requires creating new tables in the database (see wise_db_init.sql). Domain objects include PeerGroupActivity and PeerGroup. Add unit tests. * feat(Peer Interaction): Add service method to get PeerGroupActivity (#41) - Add PeerGroupActivityService and getByComponent() method to return PeerGroupActivity for a specific component. - Add supporting classes (ProjectContent, ProjectNode, ProjectComponent) to parse the project JSON. - PeerGroupActivityNotFoundException is thrown if a PeerGroupActivity for the component cannot be found in the database and curriculum content. * feat(Peer Group): Add service method to get/create PeerGroup #42 (#43) - Assumes PeerGrouping logic looks at the same nodeId/componentId - Extracted common hibernate/service test methods to parent. * feat(Peer Group): Add endpoint for getting Peer Group (#45) * feat(Peer Group): Add endpoint to get PeerGroup - Ensure there are at least 2 submissions before pairing * feat(Peer Group): Add endpoint to get PeerGroup - Threshold not met now throws an exception instead of returning null. - Throws PeerGroupCreationException when there are other workgroups to wait for. - Fix issue calculating completion percentage by using float instead of int. * feat(Peer Group): Add endpoint to get PeerGroup - Add id equality test to WorkgroupImpl and PersistentGroup - Changed getNumWorkgroupsInPeerGroup() to get PeerGroup for activity component instead of logic component - Return exception key in ResponseBody * feat(Peer Group): Add endpoint to get StudentWork for PeerGroup (#48) - Also change URL to get PeerGroup to /{runId}/{workgroupId}/{nodeId}/{componentId} * feat(Peer Group): Add teacher endpoint to get work for peer group (#50) * refactor(Peer Group): Move PeerGroupWork api to new class * feat(Peer Group): Add teacher endpoint to get work for PeerGroup - Extract common test methods to AbstractPeerGroupAPIControllerTest * feat(Peer Group): Make PeerGroup with remaining students (#53) - When maxMembershipCount + 1 students have not been pair yet, and everybody else have completed the logic activity, we put them all into the same peer group. - Also updated code to ensure that we only look for workgroups in the same period when pairing students into PeerGroups. * feat(Peer Group): Add teacher endpoint to get PeerGroup info for activity (#58) * feat(Peer Group): Add teacher endpoint to get PeerGroups for activity Requires database change: add periodId bigint field to peer_groups table Closes #57 * feat(PeerGroup): Add teacher endpoint to get PeerGroup info - url: /api/teacher/peer-group-info returns a Map of PeerGroups and workgroups that don't belong in PeerGroups for the specified PeerGroupActivity * Remove PeerGroupActivity from PeerGroup serialization #57 * Exclude HibernateStudentAttendaceDao unit test This test has been known to be finicky, so we decided to exclude from running until we can find time to look into the root cause. * feat(Get Classmate Work): Create endpoint for Peer Chat other work (#63) The other work is the work from a previous component that is shown at the top of the Peer Chat component. Closes #62 * feat(Peer-Chat): Add endpoint to get latest student work for other component * test(Peer-Chat): Fix PeerChatDataControllerTest * feat(Peer-Group): Add teacher endpoint to create peer group * feat(Group): Add GroupRepository * feat(PeerGroup): Add teacher endpoint for creating PeerGroup - Needed to edit APIControllerTest to use the PersistentGroup class type now that we are using DomainConverter to directly pass in objects instead of Long * feat(PeerGroup): Add teacher endpoint for creating PeerGroup - Ensure that requested period is in requested run. - Modified test's period name to distinguish from other periods * feat(Peer-Group): Add teacher endpoint to add member to peer group * feat(Group): Add GroupRepository * feat(PeerGroup): Add teacher endpoint for creating PeerGroup - Needed to edit APIControllerTest to use the PersistentGroup class type now that we are using DomainConverter to directly pass in objects instead of Long * feat(Peer-Chat): Add endpoint to add member to PeerGroup - Added PeerGroupRepository to convert PeerGroupId PathVariables to PeerGroup objects and updated tests to use impl classes. * feat(Peer-Chat): Add endpoint to add member to PeerGroup - Don't allow addMember if requested workgroup does not belong in the run. * fix(Test): Fix a test that was not compiling * feat(Peer Group): Add ability to get manually assigned peer group (#77) * feat(Peer Group): Add ability to get manually assigned peer group If a Peer Activity uses auto assignment and a Peer Group is requested and the Peer Group does not exist, it will automatically be created. If a Peer Activity uses manual assignment and a Peer Group is requested and the Peer Group does not exist, it will not be automatically created. * refactor(PeerGroup): Change PeerGroupServiceHelperTest to extend WISEServiceTest - Renamed PeerGroupServiceHelperTest to PeerGroupServiceTest * feat(PeerGroup): Add teacher endpoint to remove member from PeerGroup * Merge branch: 'get-peer-group-by-tag' into issue-37-peer-interaction * feat(PeerGroup): Add endpoint to get by Tag * feat(PeerGroup): Create PeerGroupActivity from tag in project When a peerGroupActivityTag is added in the project in the authoring tool or if a new run is created from the project that contains the tag, PeerGroupActivities are created for each tag. * refactor(PeerGroup): Use PeerGroupActivityTag to get PeerGroup (#96) * refactor(PeerGroup): Use PeerGroupActivityTag to get PeerGroup - Switch to using the new PeerGroupActivityTag to lookup the PeerGroupActrivity instead of nodeId/componentId. - Add tag column to db init sql - Clean up code * Remove unused exceptions * feat(PeerChat): Group students randomly (#94) * feat(PeerChat): Group students randomly * Improve addMembersRandomly efficiency Removed randomly chosen members from future consideration. * Optimize addMembersRandomly method * refactor(PeerGroup): Pass in domain objects to controllers (#99) * feat(PeerChat): Allow teacher participation - Add endpoint at /api/teacher/run/{runId}/work for teachers to POST work - Add PeerGroupId to StudentWork (requires db update, see below) * refactor(PeerGroupActivity): Remove nodeId and componentId fields - Remove nodeId, componentId fields from PeerGroupActivity - Set PeerGroupActivity.logic field's default value to [{"name":"manual"}] - Remove PeerGroupActivityDao.getByComponent() * feat(Peer Group Activity): Move settings to project level (#108) * refactor(PeerGroupActivityDao): Remove getByComponent() Layers above should now be using getByTag() to look up the PeerGroupActivity. * refactor(PeerGroupActivityImpl): Remove nodeId, componentId fields Also set logic field's default value to [{"name":"manual"}] * Remove nodeId/componentId fields from db init sql * refactor(PeerGroupActivity): Change logic field from JSON array to string (#107) Instead of expressing the logic entirely in the logic field, use the logic field to only store a string from the following: "manual", "random", "custom". * feat(Peer Group Activity): Move settings to project-level - Introduce new "peerGroupActivity" project level field, an array to store PeerGroupActivities in the unit * refactor(Peer Group API): Remove getPeerGroup by component (#110) - This API endpoint has been replaced by getting PeerGroup by Tag * feat(Peer Group Settings): Add endpoint to create and edit (#113) * feat(ACL): Add support for parsing permission string * feat(Peer Group Settings): Add endpoint to create/edit * feat(Peer Group Settings): Remove scan for tags on project save * chore(Peer Grouping): Rename Peer Group Activity to Peer Grouping (#115) * fix(PeerGrouping): Random pairing (#120) - Also remove completion requirement before pairing - Fix tests * fix(Peer Grouping): Create run with Peer Groupings with correct fields (#121) * fix(Peer Grouping): Return bad request when creating duplicate tag * fix(PeerGroup): Don't pair with empty workgroups * fix(Peer Group): Don't count empty workgroups when check if can create
- Loading branch information