UNPKG

uma-sp

Version:

Utility functions to interact with SharePoint Online that builds on top of PnP-JS-Core.

114 lines (113 loc) 4.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var pnp = require("sp-pnp-js"); var _ = require("lodash"); var jquery = require("jquery"); var email_config_1 = require("./email-config"); var Email = (function () { function Email() { } Email.getTemplateAndSend = function (templateName, templateParams, from, to, subject) { var _this = this; var inSharePoint = typeof _spPageContextInfo !== 'undefined'; var pnpPromise = new Promise(function (resolve, reject) { if (inSharePoint) { _this.getEmailTemplate(templateName, templateParams).then(function (template) { _this.send(from, to, template, subject).then(function (result) { resolve(result); }); }).catch(function (e) { resolve(false); }); } else { console.log("Email sent to " + to + ", using template " + templateName); resolve(false); } }); return pnpPromise; }; Email.getEmailTemplate = function (name, params) { var inSharePoint = typeof _spPageContextInfo !== 'undefined'; if (inSharePoint) { pnp.setup({ headers: { "Accept": "application/json; odata=verbose", }, }); var pnpPromise = new Promise(function (resolve, reject) { var templatesListName = email_config_1.EmailConfig.getTemplatesListName(); if (templatesListName != "") { pnp.sp.site.rootWeb.lists.getByTitle(templatesListName).items.filter("Title eq '" + name + "'").get().then(function (results) { var template = ""; if (results[0]) { if (_spPageContextInfo.currentLanguage === 1036) { template = results[0].TemplateFR; } else { template = results[0].TemplateEN; } } _.forEach(params, function (param, index) { template = template.replace("@" + index + "@", param); }); resolve(template); }); } else resolve("Template List Not Set"); }); return pnpPromise; } else { var p = new Promise(function (resolve, reject) { var template = "<h1>This is mock template</h1><p>@1@</p><p>@2@</p>"; _.forEach(params, function (param, index) { template = template.replace("@" + index + "@", param); }); resolve(template); }); return p; } }; Email.send = function (from, to, body, subject) { var p = new Promise(function (resolve, reject) { // fetch(url, reqOptions).then(function(response){ // resolve(response.ok); // }); var inSharePoint = typeof _spPageContextInfo !== 'undefined'; if (inSharePoint) { jquery.ajax({ contentType: 'application/json', url: _spPageContextInfo.webServerRelativeUrl + "/_api/SP.Utilities.Utility.SendEmail", method: 'POST', headers: { 'accept': 'application/json; odata=verbose', 'content-type': 'application/json; odata=verbose', "X-RequestDigest": document.getElementById("__REQUESTDIGEST").getAttribute('Value') }, data: JSON.stringify({ 'properties': { '__metadata': { 'type': 'SP.Utilities.EmailProperties' }, 'From': from, 'To': { 'results': [to] }, 'Body': body, 'Subject': subject } }) }).done(function (response) { resolve(true); }).fail(function (response) { resolve(false); }); } else { console.log("Email sent to " + to + ", body is " + body); resolve(); } }); return p; }; return Email; }()); exports.Email = Email;