From: Kyle Huckins Date: Sun, 27 Feb 2022 01:33:29 +0000 (+0000) Subject: lp1940105 Archive Course Should Use detach_material X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=4d3060d357449ab3fd253de0e78ea6ba89587ac4;p=working%2FEvergreen.git lp1940105 Archive Course Should Use detach_material - Replaced resetItemFields with detachMaterials in Course Service - Refactored disassociateMaterials to utilize detach_materials - Refacotred deleteSelectedMaterials to utilize Course Service detachMaterials function Signed-off-by: Kyle Huckins --- diff --git a/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.ts b/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.ts index 9a8264cb8e..94c323da36 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-associate-material.component.ts @@ -203,12 +203,7 @@ export class CourseAssociateMaterialComponent extends DialogComponent implements } deleteSelectedMaterials(items) { - const deleteRequest$ = []; - items.forEach(item => { - deleteRequest$.push(this.net.request( - 'open-ils.courses', 'open-ils.courses.detach_material', - this.auth.token(), item.id())); - }); + let deleteRequest$ = this.course.detachMaterials(items); merge(...deleteRequest$).subscribe( val => { this.materialDeleteSuccessString.current().then(str => this.toast.success(str)); diff --git a/Open-ILS/src/eg2/src/app/staff/share/course.service.ts b/Open-ILS/src/eg2/src/app/staff/share/course.service.ts index 080626b8ef..810db1781b 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/course.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/course.service.ts @@ -1,4 +1,4 @@ -import {Observable} from 'rxjs'; +import {Observable, merge} from 'rxjs'; import {tap} from 'rxjs/operators'; import {Injectable} from '@angular/core'; import {AuthService} from '@eg/core/auth.service'; @@ -144,6 +144,8 @@ export class CourseService { } disassociateMaterials(courses) { + const deleteRequest$ = []; + return new Promise((resolve, reject) => { const course_ids = []; const course_library_hash = {}; @@ -151,23 +153,36 @@ export class CourseService { course_ids.push(course.id()); course_library_hash[course.id()] = course.owning_lib(); }); - this.pcrud.search('acmcm', {course: course_ids}).subscribe(material => { - material.isdeleted(true); - this.resetItemFields(material, course_library_hash[material.course()]); - this.pcrud.autoApply(material).subscribe(() => { + + this.pcrud.retrieveAll('acmcm', {course: course_ids}).subscribe(material => { + deleteRequest$.push(this.net.request( + 'open-ils.courses', 'open-ils.courses.detach_material', + this.auth.token(), material.id())); + }, err => { + reject(err); + }, () => { + merge(...deleteRequest$).subscribe(val => { + console.log(val); }, err => { reject(err); }, () => { - resolve(material); + resolve(courses); }); - }, err => { - reject(err); - }, () => { - resolve(courses); }); }); } + detachMaterials(materials) { + const deleteRequest$ = []; + materials.forEach(material => { + deleteRequest$.push(this.net.request( + 'open-ils.courses', 'open-ils.courses.detach_material', + this.auth.token(), material.id())); + }); + + return deleteRequest$; + } + disassociateUsers(user) { return new Promise((resolve, reject) => { const user_ids = []; @@ -193,28 +208,6 @@ export class CourseService { }); } - resetItemFields(material, course_lib) { - this.pcrud.retrieve('acp', material.item(), - {flesh: 3, flesh_fields: {acp: ['call_number']}}).subscribe(copy => { - if (material.original_status()) { - copy.status(material.original_status()); - } - if (copy.circ_modifier() !== material.original_circ_modifier()) { - copy.circ_modifier(material.original_circ_modifier()); - } - if (material.original_location()) { - copy.location(material.original_location()); - } - if (material.original_callnumber()) { - this.pcrud.retrieve('acn', material.original_callnumber()).subscribe(cn => { - this.updateItem(copy, course_lib, cn.label(), true); - }); - } else { - this.updateItem(copy, course_lib, copy.call_number().label(), false); - } - }); - } - updateItem(item: IdlObject, courseLib, callNumber, updatingVolume) { return new Promise((resolve, reject) => {