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
JavaScript
;
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;