From: Bill Erickson Date: Wed, 17 Feb 2021 19:13:11 +0000 (-0500) Subject: LP1901930 SIP Account admin improve reporting X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=4ea37d23be0456f950b9ce3a9a05a3e798688147;p=working%2FEvergreen.git LP1901930 SIP Account admin improve reporting * Show toasts to indicate when an account save action failed or succeeded. * Adds a UNIQUE constraint to sip.account.sip_username. * Indicates in the account edit form when a duplicate sip username was entered. Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html index a05c0b70ea..a63b3eab97 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html @@ -1,5 +1,11 @@ + + + + + + Username In Use + diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts index 5b279d3985..5f72cd4508 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts @@ -34,6 +34,7 @@ export class SipAccountComponent implements OnInit { deleteGroupAccounts: IdlObject[] = []; accountPreSave: (mode: string, account: IdlObject) => void; createMode = false; + dupeSipUser = false; @ViewChild('cloneDialog') cloneDialog: FmRecordEditorComponent; @ViewChild('settingDialog') settingDialog: FmRecordEditorComponent; @@ -48,7 +49,9 @@ export class SipAccountComponent implements OnInit { private net: NetService, private auth: AuthService, private evt: EventService, - private pcrud: PcrudService + private pcrud: PcrudService, + private toast: ToastService, + private strings: StringService ) {} ngOnInit() { @@ -220,9 +223,14 @@ export class SipAccountComponent implements OnInit { if (evt) { console.error(evt); + this.strings.strings['staff.admin.sip.account.failed'] + .resolver({}).then(text => this.toast.danger(text)); return; } + this.strings.strings['staff.admin.sip.account.saved'] + .resolver({}).then(text => this.toast.success(text)); + if (this.createMode) { this.router.navigate( [`/staff/admin/server/sip/account/${acc.id()}`]); @@ -232,6 +240,20 @@ export class SipAccountComponent implements OnInit { }); } + sipUsernameChange(evt: Event) { + this.dupeSipUser = false; + const name = (evt.target as HTMLInputElement).value; + if (!name) { return; } + + this.account.sip_username(name); + const search: any = {sip_username: name}; + if (!this.createMode) { + search.id = {'!=': this.accountId}; + } + this.pcrud.search('sipacc', search) + .subscribe(existing => this.dupeSipUser = true); + } + editFirstSetting(rows: any) { if (rows.length > 0) { this.editSetting(rows[0]); diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm index b5cb3eb8ef..57bdbbb136 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm @@ -105,13 +105,13 @@ sub account_cud { } if ($account->isnew) { - return undef unless $e->create_sip_account($account); + return $e->die_event unless $e->create_sip_account($account); } elsif ($account->ischanged) { - return undef unless $e->update_sip_account($account); + return $e->die_event unless $e->update_sip_account($account); } elsif ($account->isdeleted) { - return undef unless $e->delete_sip_account($account); + return $e->die_event unless $e->delete_sip_account($account); } $account = $e->retrieve_sip_account($account->id); diff --git a/Open-ILS/src/sql/Pg/410.schema.sip.sql b/Open-ILS/src/sql/Pg/410.schema.sip.sql index cdc1de5c9f..c07bdcffe1 100644 --- a/Open-ILS/src/sql/Pg/410.schema.sip.sql +++ b/Open-ILS/src/sql/Pg/410.schema.sip.sql @@ -27,7 +27,7 @@ CREATE TABLE sip.account ( enabled BOOLEAN NOT NULL DEFAULT TRUE, setting_group INTEGER NOT NULL REFERENCES sip.setting_group (id) DEFERRABLE INITIALLY DEFERRED, - sip_username TEXT NOT NULL, + sip_username TEXT UNIQUE NOT NULL, usr BIGINT NOT NULL REFERENCES actor.usr(id) DEFERRABLE INITIALLY DEFERRED, workstation INTEGER REFERENCES actor.workstation(id), diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql index d06fea5ae0..35b6f5b22c 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql @@ -30,7 +30,7 @@ CREATE TABLE sip.account ( enabled BOOLEAN NOT NULL DEFAULT TRUE, setting_group INTEGER NOT NULL REFERENCES sip.setting_group (id) DEFERRABLE INITIALLY DEFERRED, - sip_username TEXT NOT NULL, + sip_username TEXT UNIQUE NOT NULL, usr BIGINT NOT NULL REFERENCES actor.usr(id) DEFERRABLE INITIALLY DEFERRED, workstation INTEGER REFERENCES actor.workstation(id),