-
Notifications
You must be signed in to change notification settings - Fork 0
feat(effort): VPR-18 Manual course import, edit and delete #86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
rlorenzo
commented
Dec 19, 2025
- Implement CoursesController with CRUD endpoints and Banner search
- Add CourseService with duplicate detection and enrollment management
- Create Vue CourseList page with add/edit/import dialogs
- Add unit and integration tests for controller and service layers
- Implement CoursesController with CRUD endpoints and Banner search - Add CourseService with duplicate detection and enrollment management - Create Vue CourseList page with add/edit/import dialogs - Add unit and integration tests for controller and service layers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements manual course import, edit, and delete functionality for the Effort system, enabling users to search Banner for courses, import them, create custom courses, and manage existing courses with appropriate permission controls.
Key changes:
- Backend CRUD operations with Banner integration and duplicate detection
- Permission-based access control for course management operations
- Vue.js UI with modal dialogs for import, add, and edit workflows
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| web/Program.cs | Registers CourseService in DI container |
| web/Areas/Effort/Services/ICourseService.cs | Defines course service interface with CRUD and Banner search operations |
| web/Areas/Effort/Services/CourseService.cs | Implements course business logic with audit integration |
| web/Areas/Effort/Services/IEffortAuditService.cs | Adds course change audit method |
| web/Areas/Effort/Services/EffortAuditService.cs | Implements course audit logging |
| web/Areas/Effort/Controllers/CoursesController.cs | RESTful API endpoints with permission checks |
| web/Areas/Effort/Models/DTOs/Requests/*.cs | Request DTOs for course operations |
| web/Areas/Effort/Models/DTOs/Responses/BannerCourseDto.cs | Response DTO for Banner course data |
| VueApp/src/composables/ViperFetch.ts | Adds PATCH HTTP method support |
| VueApp/src/Effort/types/index.ts | TypeScript type definitions for course entities |
| VueApp/src/Effort/services/effort-service.ts | API client methods for course operations |
| VueApp/src/Effort/pages/CourseList.vue | Main course list page with filtering |
| VueApp/src/Effort/components/CourseImportDialog.vue | Banner course import dialog |
| VueApp/src/Effort/components/CourseEditDialog.vue | Course edit dialog with enrollment-only mode |
| VueApp/src/Effort/components/CourseAddDialog.vue | Manual course creation dialog |
| VueApp/src/Effort/composables/use-effort-permissions.ts | Adds course permission checks |
| VueApp/src/Effort/layouts/EffortLayout.vue | Adds Courses navigation link |
| VueApp/src/Effort/router/routes.ts | Adds CourseList route |
| test/Effort/CourseServiceTests.cs | Unit tests for CourseService |
| test/Effort/CoursesControllerTests.cs | Unit tests for CoursesController |
| test/Effort/Integration/EffortPermissionIntegrationTests.cs | Integration tests for permission system |
| test/Effort/EffortIntegrationTestBase.cs | Base class for integration tests |
| VueApp/src/Effort/tests/*.test.ts | Frontend component behavior tests |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Add extractErrorMessage helper for API error extraction - Simplify units assignment using ternary operator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 28 out of 28 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Use path params (/Effort/:termCode/courses, /audit) instead of query strings - Require term selection for Courses nav; Audit supports global view - Sync URL with dropdown changes and browser back/forward navigation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 31 out of 31 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
# Conflicts: # VueApp/src/Effort/composables/use-effort-permissions.ts # VueApp/src/Effort/layouts/EffortLayout.vue