Im vorigen Beitrag zu unserer Dokumentenverwaltung-Applikation Suchfunktionalität für SharePoint Dokumentenverwaltung Applikation haben wir euch einen Einblick in unsere Applikation zur einfachen Dokumentenverwaltung von SharePoint Bibliotheken gegeben. In diesem Beitrag möchten wir euch ein spezielles Feature für eine automatisierte Benachrichtigung für neue Einträge in einer SharePoint Bibliothek vorstellen.

Benachrichtung für neue Einträge einer SharePoint Bibliothek

In unserer Applikation zur Dokumentenverwaltung listen wir alle Einträge der SharePoint Bibliotheken auf. Unter anderem haben wir auch eine Bibliothek,  welche die offenen Aufgaben für einen Benutzer beinhaltet. Um den Benutzer auf seine neuen Aufgaben aufmerksam zu machen, haben wir eine Benachrichtigung implementiert. Diese zeigen wir in einem kleinen roten Kreis mit der Anzahl der offenen Aufgaben an, wie man es aus anderen Plattformen bereits kennt. Dadurch erkennt der Benutzer sofort, wenn er offene Aufgaben hat, welche zu bearbeiten sind.

Benachrichtigung für neue Einträge einer SharePoint Bibliothek
Benachrichtigung für neue Einträge einer SharePoint Bibliothek

Automatische Aktualisierung der Benachrichtigung

Bei Änderungen der offenen Aufgaben aktualisieren wir die Benachrichtigung automatisch in einem vordefinierten Intervall. Kommt zum Beispiel eine neue Aufgabe für den Benutzer dazu oder schließt der Benutzer eine Aufgabe ab, wird die Benachrichtigung automatisch aktualisiert. Dafür verwenden wir die Javascript-Methode “setInterval”. Diese führt das angegebene Command alle 300000 Millisekunden (5 Minuten) aus.

private loadOpenTasksCount() {
        // Call it the first time without delay
        this.executeLoadOpenTasksCountCommand();

        // Check open tasks every 5 min
        this.interval = setInterval(this.executeLoadOpenTasksCountCommand, 300000); 
    }

Abfrage der Einträge der Liste

Für die Benachrichtigung der offenen Aufgaben eines Benutzers machen wir eine Abfrage auf den SharePoint. Dafür selektieren wir nur die “Id” der Einträge um die Performance der Abfrage zu optimieren. Außerdem filtern wir bei der Abfrage auf den aktuellen Benutzer und den Status der Aufgabe. Schlussendlich geben wir dann die Anzahl der den Filtern entsprechenden Einträge der Liste zurück. Diese zeigen wir dann als Benachrichtigung in dem roten Kreis an.

public static getOpenTasksCount(): Promise<number> {
        const service: SPRestService = SPServiceProvider.GetCurrentSPService();
        let selectQuery = "Id";
        let filterQuery = `AssignedToId eq ${AppContext.currentUser.id} and Status eq 'In Progress'`;
        return service.getListItemsByFilter(AppContext.taskList, selectQuery, filterQuery)
            .then(items => {
                return items && items.value ? items.value.length : 0;
            });
    }

Der Aufruf in unserem Service auf die SharePoint Bibliothek sieht dann folgendermaßen aus:

public getListItemsByFilter(list: IList, selectQuery?: string, filterQuery?: string) {
    const restAPI = `${this.context.pageContext.web.absoluteUrl}/_api/web/Lists(guid'${list.Id}')/items?${selectQuery !== null && "$select=" + selectQuery}${filterQuery !== null && "&$filter=" + filterQuery}`;
    return this.context.spHttpClient.get(restAPI, SPHttpClient.configurations.v1)
      .then(response => {
        return response.json();
      });
  }

Habt ihr noch weitere Fragen zu unserer automatischen Benachrichtung, schreibt uns einfach einen Kommentar oder nehmt mit uns Kontakt auf.