diff --git a/src/app/core/services/course.ts b/src/app/core/services/course.ts index ce804f1..9ab3dee 100644 --- a/src/app/core/services/course.ts +++ b/src/app/core/services/course.ts @@ -37,6 +37,10 @@ export interface CourseApiResponse { typesParisOuverts: Array; } +export interface NonApiRequest { + nonPartants: String[] +} + @Injectable({ providedIn: 'root' }) export class CourseService { private apiUrl = environment.apiBaseUrl + API_BASE; @@ -454,34 +458,20 @@ export class CourseService { } addNonPartant(courseId: string, npList: string[]) { + const payload = { + nonPartants: [...npList] + } console.warn('addNonPartant is deprecated. Use setNonPartants instead.'); - return this.setNonPartants(courseId, npList); + return this.setNonPartants(courseId, payload); } - setNonPartants(courseId: string, npList: string[]): Observable { - if (USE_SERVER) { - // Use PUT endpoint to replace the entire list - return this.nonPartantService.replaceNonPartants(courseId, npList).pipe( - switchMap((updatedNonPartants) => { - // Fetch the updated course to return it - return this.getById(courseId).pipe( - map((course) => { - if (course) { - return { - ...course, - nonPartants: updatedNonPartants, - }; - } - return undefined; - }) - ); - }), - catchError((err) => { - console.error(`Error setting nonPartants for course ${courseId}:`, err); - return of(undefined); - }) - ); - } - throw new Error('Server mode is required'); + setNonPartants(courseId: string, npList: NonApiRequest): Observable { + return this.nonPartantService.replaceNonPartants(courseId, npList).pipe( + map((updatedNonPartants) => updatedNonPartants), + catchError((err) => { + console.error(`Error setting nonPartants for course ${courseId}:`, err); + return of(undefined); + }) + ); } } diff --git a/src/app/core/services/non-partant.ts b/src/app/core/services/non-partant.ts index d2773c1..8f58a75 100644 --- a/src/app/core/services/non-partant.ts +++ b/src/app/core/services/non-partant.ts @@ -3,6 +3,7 @@ import { HttpClient } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { environment } from 'src/environments/environment.development'; +import { CourseApiResponse, NonApiRequest } from './course'; const USE_SERVER = true; @@ -20,21 +21,22 @@ export class NonPartantService { } // PUT /api/v1/courses/{courseId}/non-partants - Replace the list of non-partants for a course - replaceNonPartants(courseId: string, nonPartants: string[]): Observable { - if (USE_SERVER) { - const courseApiUrl = environment.apiBaseUrl + '/api/v1/courses'; - return this.http - .put(`${courseApiUrl}/${courseId}/non-partants`, nonPartants, { - headers: this.getNgrokHeaders(), + replaceNonPartants(courseId: string, nonPartants: NonApiRequest): Observable { + const courseApiUrl = environment.apiBaseUrl + '/api/courses'; + return this.http + .patch(`${courseApiUrl}/${courseId}/non-partants`, nonPartants, { + headers: this.getNgrokHeaders(), + }) + .pipe( + map((res) => { + + return res + }), + catchError((err) => { + console.log(err); + console.error(`Error replacing non-partants for course ${courseId}:`, err); + return of(undefined); }) - .pipe( - map((list) => list.map((np) => String(np))), - catchError((err) => { - console.error(`Error replacing non-partants for course ${courseId}:`, err); - return of([]); - }) - ); - } - return of([]); + ); } } diff --git a/src/app/dashboard/pages/courses/courses.ts b/src/app/dashboard/pages/courses/courses.ts index 4c7f435..aeb3060 100644 --- a/src/app/dashboard/pages/courses/courses.ts +++ b/src/app/dashboard/pages/courses/courses.ts @@ -16,7 +16,7 @@ import { ZardCardComponent } from '@shared/components/card/card.component'; import { ZardButtonComponent } from '@shared/components/button/button.component'; import { CourseStatut, Course as CourseType } from 'src/app/core/interfaces/course'; import { SortDir } from '@shared/paging/paging'; -import { CourseApiResponse, CourseService } from 'src/app/core/services/course'; +import { CourseApiResponse, CourseService, NonApiRequest } from 'src/app/core/services/course'; import { ResultatService } from 'src/app/core/services/resultat'; import { Resultat, ResultatStatut } from 'src/app/core/interfaces/resultat'; import { A11yModule } from '@angular/cdk/a11y'; @@ -347,8 +347,13 @@ export class Course { onNonPartantSave(payload: string[]) { const course = this.selectedCourse(); if (!course) return; + const reqPayload = { + nonPartants: [ + ...payload + ] + } - this.api.setNonPartants(course.id, payload).subscribe({ + this.api.setNonPartants(course.id, reqPayload).subscribe({ next: (updatedCourse) => { if (updatedCourse) { toast.success('Non-partants mis à jour avec succès'); diff --git a/src/environments/environment.ts b/src/environments/environment.ts index ebdba47..cceeab3 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,4 +1,4 @@ export const environment = { production: false, - apiBaseUrl: 'http://192.168.1.235:8383', + apiBaseUrl: 'http://192.168.1.235:8381', };