feat: endpoint voor alle groepen van een assignment geimplementeerd
This commit is contained in:
		
							parent
							
								
									3f62ab70e1
								
							
						
					
					
						commit
						7e051d412a
					
				
					 4 changed files with 62 additions and 13 deletions
				
			
		|  | @ -1,11 +1,11 @@ | |||
| import { Request, Response } from 'express'; | ||||
| import { getGroup } from '../services/groups'; | ||||
| import { getAllGroups, getGroup } from '../services/groups'; | ||||
| 
 | ||||
| // typescript is annoywith with parameter forwarding from class.ts
 | ||||
| interface GroupParams { | ||||
|     classid: string; | ||||
|     assignmentid: string; | ||||
|     groupid: string; | ||||
|     groupid?: string; | ||||
| } | ||||
| 
 | ||||
| export async function getGroupHandler( | ||||
|  | @ -21,7 +21,7 @@ export async function getGroupHandler( | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     const groupId = +req.params.groupid; | ||||
|     const groupId = +req.params.groupid!; // can't be undefined
 | ||||
| 
 | ||||
|     if (isNaN(groupId)) { | ||||
|         res.status(400).json({ error: "Group id must be a number" }); | ||||
|  | @ -32,3 +32,24 @@ export async function getGroupHandler( | |||
| 
 | ||||
|     res.json(group); | ||||
| } | ||||
| 
 | ||||
| export async function getAllGroupsHandler( | ||||
|     req: Request, | ||||
|     res: Response, | ||||
| ): Promise<void> { | ||||
|     const classId = req.params.classid; | ||||
|     const full = req.query.full === "true"; | ||||
| 
 | ||||
|     const assignmentId = +req.params.assignmentid; | ||||
| 
 | ||||
|     if (isNaN(assignmentId)) { | ||||
|         res.status(400).json({ error: "Assignment id must be a number" }); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     const groups = await getAllGroups(classId, assignmentId, full); | ||||
| 
 | ||||
|     res.json({ | ||||
|         groups: groups, | ||||
|     }); | ||||
| } | ||||
|  | @ -18,7 +18,11 @@ export class GroupRepository extends DwengoEntityRepository<Group> { | |||
|     public findAllGroupsForAssignment( | ||||
|         assignment: Assignment | ||||
|     ): Promise<Group[]> { | ||||
|         return this.findAll({ where: { assignment: assignment } }); | ||||
|         return this.findAll({  | ||||
|             where: { assignment: assignment },  | ||||
|             populate: ["members"]  | ||||
|         }, | ||||
|         ); | ||||
|     } | ||||
|     public deleteByAssignmentAndGroupNumber( | ||||
|         assignment: Assignment, | ||||
|  |  | |||
|  | @ -1,16 +1,9 @@ | |||
| import express from 'express' | ||||
| import { getGroupHandler } from '../controllers/groups'; | ||||
| import { getAllGroupsHandler, getGroupHandler } from '../controllers/groups'; | ||||
| const router = express.Router({ mergeParams: true }); | ||||
| 
 | ||||
| // root endpoint used to search objects
 | ||||
| router.get('/', (req, res) => { | ||||
|     res.json({ | ||||
|         groups: [ | ||||
|             '0', | ||||
|             '1', | ||||
|         ] | ||||
|     }); | ||||
| }); | ||||
| router.get('/', getAllGroupsHandler); | ||||
| 
 | ||||
| // information about a group (members, ... [TODO DOC])
 | ||||
| router.get('/:groupid', getGroupHandler); | ||||
|  |  | |||
|  | @ -34,3 +34,34 @@ export async function getGroup( | |||
| 
 | ||||
|     return mapToGroupDTOId(group); | ||||
| } | ||||
| 
 | ||||
| export async function getAllGroups( | ||||
|     classId: string, | ||||
|     assignmentNumber: number, | ||||
|     full: boolean, | ||||
| ): Promise<GroupDTO[]> { | ||||
|     const classRepository = getClassRepository(); | ||||
|     const cls = await classRepository.findById(classId); | ||||
| 
 | ||||
|     if (!cls) { | ||||
|         return []; | ||||
|     } | ||||
| 
 | ||||
|     const assignmentRepository = getAssignmentRepository(); | ||||
|     const assignment = await assignmentRepository.findByClassAndId(cls, assignmentNumber); | ||||
| 
 | ||||
|     if (!assignment) { | ||||
|         return []; | ||||
|     } | ||||
| 
 | ||||
|     const groupRepository = getGroupRepository(); | ||||
|     const groups = await groupRepository.findAllGroupsForAssignment(assignment); | ||||
| 
 | ||||
|     if (full) { | ||||
|         console.log('full'); | ||||
|         console.log(groups); | ||||
|         return groups.map(mapToGroupDTO); | ||||
|     } | ||||
| 
 | ||||
|     return groups.map(mapToGroupDTOId); | ||||
| } | ||||
		Reference in a new issue
	
	 Adriaan Jacquet
						Adriaan Jacquet