fix: UI-imperfecties & diverse bugs omtrent het verwijderen en editeren van leerpaden opgelost
This commit is contained in:
		
							parent
							
								
									9400b7f33c
								
							
						
					
					
						commit
						9a58126c7c
					
				
					 6 changed files with 126 additions and 28 deletions
				
			
		|  | @ -4,7 +4,6 @@ import { Language } from '@dwengo-1/common/util/language'; | |||
| import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js'; | ||||
| import { RequiredEntityData } from '@mikro-orm/core'; | ||||
| import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js'; | ||||
| import { EntityAlreadyExistsException } from '../../exceptions/entity-already-exists-exception.js'; | ||||
| 
 | ||||
| export class LearningPathRepository extends DwengoEntityRepository<LearningPath> { | ||||
|     public async findByHruidAndLanguage(hruid: string, language: Language): Promise<LearningPath | null> { | ||||
|  | @ -53,21 +52,6 @@ export class LearningPathRepository extends DwengoEntityRepository<LearningPath> | |||
|         return this.em.create(LearningPathTransition, transitionData); | ||||
|     } | ||||
| 
 | ||||
|     public async saveLearningPathNodesAndTransitions( | ||||
|         path: LearningPath, | ||||
|         nodes: LearningPathNode[], | ||||
|         transitions: LearningPathTransition[], | ||||
|         options?: { preventOverwrite?: boolean } | ||||
|     ): Promise<void> { | ||||
|         if (options?.preventOverwrite && (await this.findOne(path))) { | ||||
|             throw new EntityAlreadyExistsException('A learning path with this hruid/language combination already exists.'); | ||||
|         } | ||||
|         const em = this.getEntityManager(); | ||||
|         await em.persistAndFlush(path); | ||||
|         await Promise.all(nodes.map(async (it) => em.persistAndFlush(it))); | ||||
|         await Promise.all(transitions.map(async (it) => em.persistAndFlush(it))); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Deletes the learning path with the given hruid and language. | ||||
|      * @returns the deleted learning path or null if it was not found. | ||||
|  |  | |||
|  | @ -134,8 +134,14 @@ const learningPathService = { | |||
|      */ | ||||
|     async createNewLearningPath(dto: LearningPath, admins: TeacherDTO[]): Promise<LearningPathEntity> { | ||||
|         const repo = getLearningPathRepository(); | ||||
| 
 | ||||
|         const path = mapToLearningPath(dto, admins); | ||||
|         await repo.save(path, { preventOverwrite: true }); | ||||
|         try { | ||||
|             await repo.save(path, { preventOverwrite: true }); | ||||
|         } catch (e: unknown) { | ||||
|             repo.getEntityManager().clear(); | ||||
|             throw e; | ||||
|         } | ||||
|         return path; | ||||
|     }, | ||||
| 
 | ||||
|  | @ -146,6 +152,7 @@ const learningPathService = { | |||
|      */ | ||||
|     async deleteLearningPath(id: LearningPathIdentifier): Promise<LearningPathEntity> { | ||||
|         const repo = getLearningPathRepository(); | ||||
| 
 | ||||
|         const deletedPath = await repo.deleteByHruidAndLanguage(id.hruid, id.language); | ||||
|         if (deletedPath) { | ||||
|             return deletedPath; | ||||
|  |  | |||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger