From 2c088d1a30d3191d983db3f7ded9be99e2adb3c6 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 18 Aug 2020 10:48:12 -0400 Subject: [PATCH] LPXXX patron expire check Signed-off-by: Bill Erickson --- .../src/app/staff/circ/patron/patron.service.ts | 19 +++++++++++++++- .../src/app/staff/share/patron/patron.service.ts | 26 ++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/eg2/src/app/staff/circ/patron/patron.service.ts b/Open-ILS/src/eg2/src/app/staff/circ/patron/patron.service.ts index ef7c004acb..e86b0993a3 100644 --- a/Open-ILS/src/eg2/src/app/staff/circ/patron/patron.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/circ/patron/patron.service.ts @@ -49,6 +49,9 @@ export class PatronManagerService { loaded = false; + accountExpired = false; + accountExpiresSoon = false; + constructor( private net: NetService, private auth: AuthService, @@ -68,7 +71,21 @@ export class PatronManagerService { .then(_ => this.loaded = true); } - getPatronStats(id: number): Promise { + setExpires(): Promise { + this.accountExpired = false; + this.accountExpiresSoon = false; + + return this.patronService.testExpire(this.patron) + .then(value => { + if (value === 'expired') { + this.accountExpired = true; + } else if (value === 'soon') { + this.accountExpiresSoon = true; + } + }); + } + + getPatronStats(id: number): Promise { return this.net.request( 'open-ils.actor', diff --git a/Open-ILS/src/eg2/src/app/staff/share/patron/patron.service.ts b/Open-ILS/src/eg2/src/app/staff/share/patron/patron.service.ts index 99fe61ca68..e1bdf4d421 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/patron/patron.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/patron/patron.service.ts @@ -1,6 +1,7 @@ import {Injectable} from '@angular/core'; import {IdlObject} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; +import {OrgService} from '@eg/core/org.service'; import {EventService} from '@eg/core/event.service'; import {PcrudService} from '@eg/core/pcrud.service'; import {AuthService} from '@eg/core/auth.service'; @@ -11,6 +12,7 @@ import {Observable} from 'rxjs'; export class PatronService { constructor( private net: NetService, + private org: OrgService, private evt: EventService, private pcrud: PcrudService, private auth: AuthService @@ -53,5 +55,29 @@ export class PatronService { if (!patron) { return ''; } return patron['pref_' + part]() || patron[part](); } + + + // Returns promise of 'expired', 'soon', or null depending on the + // expire date disposition of the provided patron. + testExpire(patron: IdlObject): Promise<'expired' | 'soon'> { + + const expire = new Date(Date.parse(patron.expire_date())); + if (expire < new Date()) { + return Promise.resolve('expired'); + } + + return this.org.settings(['circ.patron_expires_soon_warning']) + .then(setting => { + const days = setting['circ.patron_expires_soon_warning']; + + if (Number(days)) { + const preExpire = new Date(); + preExpire.setDate(preExpire.getDate() + Number(days)); + if (expire < preExpire) { return 'soon'; } + } + + return null; + }); + } } -- 2.11.0