</eg-grid-toolbar-action>
<eg-grid-toolbar-action label="Edit Selected" i18n-label (onClick)="editSelectedUsers($event)">
</eg-grid-toolbar-action>
- <eg-grid-column label="ID" path="_id" [index]=true [hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="First Name" name="first_given_name" i18n-label></eg-grid-column>
- <eg-grid-column label="Second Name" name="second_given_name" i18n-label></eg-grid-column>
- <eg-grid-column label="Last Name" name="family_name" i18n-label></eg-grid-column>
- <eg-grid-column label="Prefix" name="pref_prefix" [hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="Preferred First Name" name="pref_first_given_name"[hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="Preferred Second Name" name="pref_second_given_name"[hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="Preferred Family Name" name="pref_family_name"[hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="Preferred Suffix" name="pref_suffix" [hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="User Role" name="_role" i18n-label></eg-grid-column>
- <eg-grid-column label="Viewable on OPAC" name="_is_public" i18n-label datatype="bool"></eg-grid-column>
+ <eg-grid-column label="User ID" path="usr.id" [index]=true [hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="First Name" path="usr.first_given_name" i18n-label></eg-grid-column>
+ <eg-grid-column label="Second Name" path="usr.second_given_name" i18n-label></eg-grid-column>
+ <eg-grid-column label="Last Name" path="usr.family_name" i18n-label></eg-grid-column>
+ <eg-grid-column label="Prefix" path="usr.pref_prefix" [hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="Preferred First Name" path="usr.pref_first_given_name"[hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="Preferred Second Name" path="usr.pref_second_given_name"[hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="Preferred Family Name" path="usr.pref_family_name"[hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="Preferred Suffix" path="usr.pref_suffix" [hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="User Role" path="usr_role" i18n-label></eg-grid-column>
+ <eg-grid-column label="Viewable on OPAC" path="is_public" i18n-label datatype="bool"></eg-grid-column>
</eg-grid>
</div>
</div>
-import {Component, Input, ViewChild, OnInit, TemplateRef} from '@angular/core';
-import {Router, ActivatedRoute} from '@angular/router';
-import {Observable, Observer, of} from 'rxjs';
+import {Component, Input, ViewChild, OnInit} from '@angular/core';
import {DialogComponent} from '@eg/share/dialog/dialog.component';
import {AuthService} from '@eg/core/auth.service';
import {NetService} from '@eg/core/net.service';
-import {EventService} from '@eg/core/event.service';
-import {OrgService} from '@eg/core/org.service';
import {PcrudService} from '@eg/core/pcrud.service';
import {Pager} from '@eg/share/util/pager';
-import {NgbModal, NgbModalOptions} from '@ng-bootstrap/ng-bootstrap';
+import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
import {GridDataSource} from '@eg/share/grid/grid';
import {GridComponent} from '@eg/share/grid/grid.component';
import {IdlObject, IdlService} from '@eg/core/idl.service';
import {StringComponent} from '@eg/share/string/string.component';
-import {StaffBannerComponent} from '@eg/staff/share/staff-banner.component';
import {FmRecordEditorComponent} from '@eg/share/fm-editor/fm-editor.component';
import {ToastService} from '@eg/share/toast/toast.service';
import {CourseService} from '@eg/staff/share/course.service';
export class CourseAssociateUsersComponent extends DialogComponent implements OnInit {
@Input() currentCourse: IdlObject;
- @Input() courseId: any;
+ @Input() courseId: number;
@Input() displayMode: String;
users: any[] = [];
@ViewChild('editDialog', { static: true }) editDialog: FmRecordEditorComponent;
- @ViewChild('usersGrid', {static: true}) usersGrid: GridComponent;
+ @ViewChild('usersGrid') usersGrid: GridComponent;
@ViewChild('userDeleteFailedString', { static: true })
userDeleteFailedString: StringComponent;
@ViewChild('userDeleteSuccessString', { static: true })
@ViewChild('userEditFailedString', { static: true })
userEditFailedString: StringComponent;
usersDataSource: GridDataSource;
- @Input() userBarcode: String;
- @Input() userRoleInput: String;
- @Input() isPublicRole: Boolean;
+ userBarcode: String;
+ userRoleInput: String;
+ isPublicRole: Boolean;
constructor(
private auth: AuthService,
private course: CourseService,
- private event: EventService,
- private idl: IdlService,
private net: NetService,
- private org: OrgService,
private pcrud: PcrudService,
- private route: ActivatedRoute,
private toast: ToastService,
private modal: NgbModal
) {
ngOnInit() {
this.usersDataSource.getRows = (pager: Pager, sort: any[]) => {
- return this.loadUsersGrid(pager);
- }
+ return this.course.getUsers([this.courseId]);
+ };
}
isDialog(): boolean {
return this.displayMode === 'dialog';
}
- loadUsersGrid(pager: Pager): Observable<any> {
- return new Observable<any>(observer => {
- this.course.getUsers(this.courseId).then(users => {
- users.forEach(user => {
- this.course.fleshUser(user).then(fleshed_user => {
- this.usersDataSource.data.push(fleshed_user);
- });
- observer.complete();
- });
- });
- });
- }
-
associateUser(barcode) {
if (barcode) {
- let args = {
+ const args = {
currentCourse: this.currentCourse,
barcode: barcode.trim(),
role: this.userRoleInput,
is_public: this.isPublicRole
- }
+ };
this.userBarcode = null;
this.net.request(
'open-ils.actor',
'open-ils.actor.user.retrieve_id_by_barcode_or_username',
- this.auth.token(), barcode
+ this.auth.token(), barcode.trim()
).subscribe(patron => {
- let associatedUser = this.course.associateUsers(patron, args).then(res => {
- this.course.fleshUser(res).then(fleshed_user => {
- this.usersDataSource.data.push(fleshed_user);
- this.userAddSuccessString.current().then(str => this.toast.success(str));
- });
+ this.course.associateUsers(patron, args)
+ .then(() => this.usersGrid.reload());
}, err => {
this.userAddFailedString.current().then(str => this.toast.danger(str));
- });
- });
+ }
+ );
}
}
result => {
this.userEditSuccessString.current()
.then(str => this.toast.success(str));
- this.pcrud.retrieve('acmcu', result).subscribe(u => {
- if (u.course() != this.courseId) {
- this.usersDataSource.data.splice(this.usersDataSource.data.indexOf(user, 0), 1);
- } else {
- user._is_public = u.is_public();
- user._role = u.usr_role();
- }
- });
+ this.usersGrid.reload();
resolve(result);
},
error => {
}
deleteSelectedUsers(users) {
- let user_ids = [];
- users.forEach(user => {
- this.usersDataSource.data.splice(this.usersDataSource.data.indexOf(user, 0), 1);
- user_ids.push(user.id())
- });
+ const user_ids = [];
this.pcrud.search('acmcu', {course: this.courseId, usr: user_ids}).subscribe(user => {
user.isdeleted(true);
this.pcrud.autoApply(user).subscribe(
val => {
console.debug('deleted: ' + val);
this.userDeleteSuccessString.current().then(str => this.toast.success(str));
+ this.usersGrid.reload();
},
err => {
this.userDeleteFailedString.current()
+import { Observable } from 'rxjs';
import {Injectable} from '@angular/core';
import {AuthService} from '@eg/core/auth.service';
import {EventService} from '@eg/core/event.service';
) {}
isOptedIn(): Promise<any> {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve) => {
this.org.settings('circ.course_materials_opt_in').then(res => {
resolve(res['circ.course_materials_opt_in']);
});
}
}
- getUsers(course_ids?: Number[]): Promise<IdlObject[]> {
+ getUsers(course_ids?: Number[]): Observable<IdlObject> {
+ const flesher = {
+ flesh: 1,
+ flesh_fields: {'acmcu': ['usr']}
+ };
if (!course_ids) {
return this.pcrud.retrieveAll('acmcu',
- {}, {atomic: true}).toPromise();
+ flesher);
} else {
return this.pcrud.search('acmcu', {course: course_ids},
- {}, {atomic: true}).toPromise();
+ flesher);
}
}
- fleshMaterial(material): Promise<any> {
- console.log(material)
- return new Promise((resolve, reject) => {
- let item = this.idl.create('acp');
- this.net.request(
- 'open-ils.circ',
- 'open-ils.circ.copy_details.retrieve',
- this.auth.token(), material.item()
- ).subscribe(res => {
- if (res && res.copy) {
- item = res.copy;
- item.call_number(res.volume);
- item._title = res.mvr.title();
- item.circ_lib(this.org.get(item.circ_lib()));
- item._id = material.id();
- if (material.relationship())
- item._relationship = material.relationship();
- }
- }, err => {
- reject(err);
- }, () => resolve(item));
- });
- }
-
- fleshUser(course_user): Promise<any> {
- return new Promise((resolve, reject) => {
- let user = this.idl.create('au');
- this.net.request(
- 'open-ils.actor',
- 'open-ils.actor.user.fleshed.retrieve',
- this.auth.token(), course_user.usr()
- ).subscribe(patron => {
- user = patron;
- user._id = course_user.id();
- if (course_user.usr_role()) user._role = course_user.usr_role();
- if (course_user.is_public()) user._is_public = course_user.is_public();
- }, err => {
- reject(err);
- }, () => resolve(user));
- });
- }
-
getCoursesFromMaterial(copy_id): Promise<any> {
- let id_list = [];
+ const id_list = [];
return new Promise((resolve, reject) => {
return this.pcrud.search('acmcm', {item: copy_id})
return this.getCourses(id_list).then(courses => {
resolve(courses);
});
-
}
});
});
}
fetchCopiesInCourseFromRecord(record_id) {
- let cp_list = [];
- let course_list = [];
+ const cp_list = [];
return new Promise((resolve, reject) => {
this.net.request(
'open-ils.cat',
// Creating a new acmcm Entry
associateMaterials(item, args) {
- let material = this.idl.create('acmcm');
+ const material = this.idl.create('acmcm');
material.item(item.id());
if (item.call_number() && item.call_number().record()) {
material.record(item.call_number().record());
}
material.course(args.currentCourse.id());
- if (args.relationship) material.relationship(args.relationship);
+ if (args.relationship) { material.relationship(args.relationship); }
// Apply temporary fields to the item
if (args.isModifyingStatus && args.tempStatus) {
if (args.isModifyingCircMod) {
material.original_circ_modifier(item.circ_modifier());
item.circ_modifier(args.tempCircMod);
- if (!args.tempCircMod) item.circ_modifier(null);
+ if (!args.tempCircMod) { item.circ_modifier(null); }
}
if (args.isModifyingCallNumber) {
material.original_callnumber(item.call_number());
}
- let response = {
+ const response = {
item: item,
material: this.pcrud.create(material).toPromise()
};
}
associateUsers(patron_id, args) {
- let new_user = this.idl.create('acmcu');
- if (args.is_public) new_user.is_public(args.is_public);
- if (args.role) new_user.usr_role(args.role);
+ const new_user = this.idl.create('acmcu');
+ if (args.is_public) { new_user.is_public(args.is_public); }
+ if (args.role) { new_user.usr_role(args.role); }
new_user.course(args.currentCourse.id());
new_user.usr(patron_id);
- return this.pcrud.create(new_user).toPromise()
+ return this.pcrud.create(new_user).toPromise();
}
disassociateMaterials(courses) {
return new Promise((resolve, reject) => {
- let course_ids = [];
- let course_library_hash = {};
+ const course_ids = [];
+ const course_library_hash = {};
courses.forEach(course => {
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(res => {
+ this.pcrud.autoApply(material).subscribe(() => {
}, err => {
reject(err);
}, () => {
resolve(material);
});
}, err => {
- reject(err)
+ reject(err);
}, () => {
resolve(courses);
});
disassociateUsers(user) {
return new Promise((resolve, reject) => {
- let user_ids = [];
- let course_library_hash = {};
+ const user_ids = [];
+ const course_library_hash = {};
user.forEach(course => {
user_ids.push(course.id());
course_library_hash[course.id()] = course.owning_lib();
});
- this.pcrud.search('acmcu', {user: user_ids}).subscribe(user => {
- user.course(user_ids);
+ this.pcrud.search('acmcu', {user: user_ids}).subscribe(u => {
+ u.course(user_ids);
this.pcrud.autoApply(user).subscribe(res => {
console.debug(res);
}, err => {
resolve(user);
});
}, err => {
- reject(err)
+ reject(err);
}, () => {
resolve(user_ids);
});
if (material.original_status()) {
copy.status(material.original_status());
}
- if (copy.circ_modifier() != material.original_circ_modifier()) {
+ if (copy.circ_modifier() !== material.original_circ_modifier()) {
copy.circ_modifier(material.original_circ_modifier());
}
if (material.original_location()) {
updateItem(item: IdlObject, course_lib, call_number, updatingVolume) {
return new Promise((resolve, reject) => {
- this.pcrud.update(item).subscribe(item_id => {
+ this.pcrud.update(item).subscribe(() => {
if (updatingVolume) {
- let cn = item.call_number();
+ const cn = item.call_number();
return this.net.request(
'open-ils.cat', 'open-ils.cat.call_number.find_or_create',
this.auth.token(), call_number, cn.record(),
course_lib, cn.prefix(), cn.suffix(),
cn.label_class()
).subscribe(res => {
- let event = this.evt.parse(res);
- if (event) return;
+ const event = this.evt.parse(res);
+ if (event) { return; }
return this.net.request(
'open-ils.cat', 'open-ils.cat.transfer_copies_to_volume',
this.auth.token(), res.acn_id, [item.id()]
).subscribe(transfered_res => {
- console.debug("Copy transferred to volume with code " + transfered_res);
+ console.debug('Copy transferred to volume with code ' + transfered_res);
}, err => {
reject(err);
}, () => {
resolve(item);
});
} else {
- this.pcrud.update(item).subscribe(rse => {
+ this.pcrud.update(item).subscribe(() => {
resolve(item);
- }, err => {
+ }, () => {
reject(item);
});
}
});
}
-}
\ No newline at end of file
+}