<eg-staff-banner bannerText="SIP Account" i18n-bannerText></eg-staff-banner>
+<eg-string key="staff.admin.sip.account.saved" i18n-text
+ text="SIP Account Successfully Saved"></eg-string>
+<eg-string key="staff.admin.sip.account.failed" i18n-text
+ text="SIP Account Failed to Save"></eg-string>
+
+
<a routerLink="/staff/admin/server/sip/account">
<button class="btn btn-outline-dark label-with-material-icon">
<span class="material-icons">reply</span>
<ng-template #sipUsernameTemplate>
<div class="form-inline">
<input type="text" class="form-control"
- [ngModel]="account.sip_username()"
- (ngModelChange)="account.sip_username($event)">
+ [ngModel]="account.sip_username()" (change)="sipUsernameChange($event)">
<button class="btn btn-outline-dark ml-2"
[ngClass]="{'border-danger' : createMode && !account.sip_password()}"
(click)="setPassword()">Set Password</button>
+ <span *ngIf="dupeSipUser" class="alert alert-danger ml-1 mt-2 p-1" i18n>
+ Username In Use
+ </span>
</div>
</ng-template>
deleteGroupAccounts: IdlObject[] = [];
accountPreSave: (mode: string, account: IdlObject) => void;
createMode = false;
+ dupeSipUser = false;
@ViewChild('cloneDialog') cloneDialog: FmRecordEditorComponent;
@ViewChild('settingDialog') settingDialog: FmRecordEditorComponent;
private net: NetService,
private auth: AuthService,
private evt: EventService,
- private pcrud: PcrudService
+ private pcrud: PcrudService,
+ private toast: ToastService,
+ private strings: StringService
) {}
ngOnInit() {
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()}`]);
});
}
+ 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]);
}
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);
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),
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),