UNPKG

@mikezimm/npmfunctions

Version:
90 lines (83 loc) 4.13 kB
import { WebPartContext } from "@microsoft/sp-webpart-base"; import { sp, } from '@pnp/sp'; import { ISearchQuery, SearchResults, ISearchProperty, SortDirection } from '@pnp/sp/presets/all'; //import { PrincipalType } from "@pnp/sp/src/sitegroups"; import { ISPServices } from "./ISPServices"; export class spservices implements ISPServices { constructor(private context: WebPartContext) { sp.setup({ spfxContext: this.context }); } public async searchUsers(searchString: string, searchFirstName: boolean): Promise<SearchResults> { const _search = !searchFirstName ? `LastName:${searchString}*` : `FirstName:${searchString}*`; const searchProperties: string[] = ["FirstName", "LastName", "PreferredName", "WorkEmail", "OfficeNumber", "PictureURL", "WorkPhone", "MobilePhone", "JobTitle", "Department", "Skills", "PastProjects", "BaseOfficeLocation", "SPS-UserType", "GroupId"]; try { if (!searchString) return undefined; let users = await sp.searchWithCaching(<ISearchQuery>{ Querytext: _search, RowLimit: 500, EnableInterleaving: true, SelectProperties: searchProperties, SourceId: 'b09a7990-05ea-4af9-81ef-edfab16c4e31', SortList: [{ "Property": "LastName", "Direction": SortDirection.Ascending }], }); return users; } catch (error) { Promise.reject(error); } } public async _getImageBase64 (pictureUrl: string): Promise<string> { return new Promise((resolve, reject) => { let image = new Image(); image.addEventListener("load", () => { let tempCanvas = document.createElement("canvas"); tempCanvas.width = image.width, tempCanvas.height = image.height, tempCanvas.getContext("2d").drawImage(image, 0, 0); let base64Str; try { base64Str = tempCanvas.toDataURL("image/png"); } catch (e) { return ""; } resolve(base64Str); }); image.src = pictureUrl; }); } public async searchUsersNew(searchString: string, srchQry: string, isInitialSearch: boolean, pageNumber?: number): Promise<SearchResults> { let qrytext: string = ''; if (isInitialSearch) qrytext = `FirstName:${searchString}* OR LastName:${searchString}*`; else { if (srchQry) qrytext = srchQry; else { if (searchString) qrytext = searchString; } if (qrytext.length <= 0) qrytext = `*`; } const searchProperties: string[] = ["FirstName", "LastName", "PreferredName", "WorkEmail", "OfficeNumber", "PictureURL", "WorkPhone", "MobilePhone", "JobTitle", "Department", "Skills", "PastProjects", "BaseOfficeLocation", "SPS-UserType", "GroupId"]; try { let users = await sp.search(<ISearchQuery>{ Querytext: qrytext, RowLimit: 500, EnableInterleaving: true, SelectProperties: searchProperties, SourceId: 'b09a7990-05ea-4af9-81ef-edfab16c4e31', SortList: [{ "Property": "LastName", "Direction": SortDirection.Ascending }], }); if (users && users.PrimarySearchResults.length > 0) { for (let index = 0; index < users.PrimarySearchResults.length; index++) { let user: any = users.PrimarySearchResults[index]; if (user.PictureURL) { user = { ...user, PictureURL: `/_layouts/15/userphoto.aspx?size=M&accountname=${user.WorkEmail}` }; users.PrimarySearchResults[index] = user; } } } return users; } catch (error) { Promise.reject(error); } } }