diff --git a/src/app/pages/subjects/subjects-edit-form/subjects-edit-form.component.ts b/src/app/pages/subjects/subjects-edit-form/subjects-edit-form.component.ts index aa852a0..b71aa27 100644 --- a/src/app/pages/subjects/subjects-edit-form/subjects-edit-form.component.ts +++ b/src/app/pages/subjects/subjects-edit-form/subjects-edit-form.component.ts @@ -295,34 +295,13 @@ export class SubjectsEditFormComponent implements OnInit { public saveAllSubjects() { let selectedSdg = this.sdgSelection.getSelectedSubjects().map(a => a.id); let selectedFos = this.fosSelection.getSelectedSubjects().map(a => a.id); - let requests = [ - ...this.saveSubjects(this.community.subjects, this.displayedSubjects, 'subjects'), - ...this.saveSubjects(this.community.sdg, selectedSdg, 'sdg'), - ...this.saveSubjects(this.community.fos, selectedFos, 'fos') - ]; - this.subscriptions.push(forkJoin(requests).subscribe(res => { + this.subscriptions.push(this._subjectsService.updateSubjects(this.communityId ,this.displayedSubjects, selectedFos, selectedSdg).subscribe(res => { + this.community.subjects = this.displayedSubjects; + this.community.fos = selectedFos; + this.community.sdg = selectedSdg this.afterUpdateActions(res, "updated"); - })); - } + })) - public saveSubjects(subjects, displayedSubjects, type: string) { - if (this.communityId != null && this.communityId !== '') { - this.loading = true; - const subjectsToDeleteAr = this.getSubjectsExistOnlyInFirst(subjects, displayedSubjects); - const subjectsToAddAr = this.getSubjectsExistOnlyInFirst(displayedSubjects, subjects); - const subjectsToDelete = this.getNonEmptyItems(subjectsToDeleteAr); - const subjectsToAdd = this.getNonEmptyItems(subjectsToAddAr); - let requests = []; - if (subjectsToDelete.length > 0) { - requests.push(this._subjectsService.removeSubjects( - this.properties.communityAPI + this.communityId + '/' + type, subjectsToDelete)) - } - if (subjectsToAdd.length > 0) { - requests.push(this._subjectsService.addSubjects( - this.properties.communityAPI + this.communityId + '/' + type, subjectsToAdd)) - } - return requests; - } } handleUpdateError(message: string, error = null) { @@ -334,15 +313,6 @@ export class SubjectsEditFormComponent implements OnInit { } afterUpdateActions(response, message: string) { - response.forEach(res => { - if (res.subjects) { - this.community.subjects = res.subjects; - } else if (res.sdg) { - this.community.sdg = res.sdg; - } else if (res.fos) { - this.community.fos = res.fos; - } - }); this._communityService.updateSubjects(this.community.subjects, this.community.fos, this.community.sdg); this._clearCacheService.purgeBrowserCache("Subjects " + message, this.communityId); NotificationHandler.rise('Subjects successfully ' + message + '!') diff --git a/src/app/pages/subjects/subjects.service.ts b/src/app/pages/subjects/subjects.service.ts index 2950cb6..184f720 100644 --- a/src/app/pages/subjects/subjects.service.ts +++ b/src/app/pages/subjects/subjects.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import {HttpClient, HttpHeaders} from "@angular/common/http"; import {map} from "rxjs/operators"; +import {properties} from "../../../environments/environment"; @Injectable() export class SubjectsService { @@ -9,34 +10,10 @@ export class SubjectsService { } - addSubjects(url: string, subjects: any) { + updateSubjects(communityId: string, subjects: any, fos, sdgs) { let headers = new HttpHeaders({'Content-Type': 'application/json'}); - - const body = JSON.stringify(subjects); - - return this.http.post(url, body, {headers: headers}) - // .do(request => console.log("Insert Response:"+request.status)) - //.map(res => res.json()) - .pipe(map(res => { - res['method'] = 'post'; - return res; - })); + const body = JSON.stringify({subjects: subjects, fos: fos, sdg: sdgs}); + return this.http.post(properties.communityAPI + communityId , body, {headers: headers}); } - removeSubjects(url: string, subjects: any) { - //const headers = new Headers({'Content-Type': 'application/json'}); - let headers = new HttpHeaders({'Content-Type': 'application/json'}); - - const body = JSON.stringify(subjects); - //const options = new RequestOptions({headers: headers, body: body}); - - //return this.http.delete(url, options) - return this.http.request('delete', url, { body: body, headers: headers}) - // .do(request => console.log("Delete Response:"+request.status)) - //.map(res => res.json()) - .pipe(map(res => { - res['method'] = 'delete'; - return res; - })); - } }