LH#38: add mechanism to detect if provider can be deleted
authorGalen Charlton <gmc@equinoxinitiative.org>
Wed, 12 Aug 2020 20:02:29 +0000 (16:02 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Wed, 12 Aug 2020 20:02:29 +0000 (16:02 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/eg2/src/app/staff/acq/provider/provider-record.service.ts
Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.html
Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.ts

index 6b72cfd..45a550d 100644 (file)
@@ -12,10 +12,12 @@ export class ProviderSummary {
 export class ProviderRecord {
     id: number;
     record: IdlObject;
+    canDelete: boolean;
 
     constructor(record: IdlObject) {
         this.id = Number(record.id());
         this.record = record;
+        this.canDelete = false;
     }
 }
 
@@ -55,10 +57,28 @@ export class ProviderRecordService {
         ).pipe(map(acqpro => {
             const provider = new ProviderRecord(acqpro);
             this.currentProvider = provider;
+            this.checkIfCanDelete(provider);
             return provider;
         }));
     }
 
+    checkIfCanDelete(prov: ProviderRecord) {
+        this.pcrud.search('acqpo', { provider: prov.id }, { limit: 1 }).toPromise()
+        .then(acqpo => {
+            if (!acqpo || acqpo.length === 0) {
+                this.pcrud.search('jub', { provider: prov.id }, { limit: 1 }).toPromise()
+                .then(jub => {
+                    if (!jub || jub.length === 0) {
+                        this.pcrud.search('acqinv', { provider: prov.id }, { limit: 1 }).toPromise()
+                        .then(acqinv => {
+                            prov.canDelete = true;
+                        });
+                    }
+                });
+            }
+        });
+    }
+
     current(): IdlObject {
         return this.currentProvider ? this.currentProvider.record : null;
     }
index 07d819f..b428cf1 100644 (file)
 
 <button class="btn btn-primary"
   [hidden]="collapsed"
-  [disabled]="!provider_id"
+  [disabled]="!provider_id || !canDeleteProvider()"
   (click)="deleteProvider()"
   type="submit" i18n>
 Delete Provider</button>
index 28997b9..9116a8e 100644 (file)
@@ -65,6 +65,7 @@ export class AcqProviderSummaryPaneComponent implements OnInit, AfterViewInit {
     @Output('summaryToggled') toggled: EventEmitter<boolean> = new EventEmitter<boolean>();
 
     provider: IdlObject;
+    provRec: ProviderRecord;
 
     constructor(
         private pcrud: PcrudService,
@@ -131,6 +132,7 @@ export class AcqProviderSummaryPaneComponent implements OnInit, AfterViewInit {
             this.prov.getProviderRecord(newProvider).subscribe(providerRecord => {
                 const provider = providerRecord.record;
                 if (provider) {
+                    this.provRec = providerRecord;
                     this.provider = provider;
                     this.provider_id = provider.id();
                     this.provider_name = provider.name();
@@ -183,6 +185,14 @@ export class AcqProviderSummaryPaneComponent implements OnInit, AfterViewInit {
 
     }
 
+    canDeleteProvider() {
+        if (this.provider && this.provider.id()) {
+            return this.provRec.canDelete;
+        } else {
+            return false;
+        }
+    }
+
     toggleCollapse() {
         this.collapsed = ! this.collapsed;
         this.toggled.emit(this.collapsed);