"use strict"; (function () { angular.module("angularApp") .factory("baseSvc", ["$http", "$q", function ($http, $q) { var baseUrl = _spPageContextInfo.webAbsoluteUrl; var currentUserId = _spPageContextInfo.userId; var getRequest = function (query) { var deferred = $q.defer(); $http({ url: baseUrl + query, method: "GET", headers: { "accept": "application/json;odata=verbose", "content-Type": "application/json;odata=verbose" } }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var getRootRequest = function (query) { var deferred = $q.defer(); $http({ url: _spPageContextInfo.siteAbsoluteUrl + query, method: "GET", headers: { "accept": "application/json;odata=verbose", "content-Type": "application/json;odata=verbose" } }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var getMyRequest = function (query) { var deferred = $q.defer(); $http({ url: baseUrl + query + '&$filter=Author/Id eq ' + currentUserId, method: "GET", headers: { "accept": "application/json;odata=verbose", "content-Type": "application/json;odata=verbose" } }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var getByPeopleGroupFieldValue = function (query) { var deferred = $q.defer(); $http({ url: baseUrl + query + currentUserId, method: "GET", headers: { "accept": "application/json;odata=verbose", "content-Type": "application/json;odata=verbose" } }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var getAssignedToUserRequest = function (listTitle) { var deferred = $q.defer(); var viewXml = "<View><Query><Where><And><Eq><FieldRef Name='Status' /><Value Type='Choice'>Not Started</Value></Eq><Or><Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID/></Value></Eq><Membership Type='CurrentUserGroups'><FieldRef Name='AssignedTo' /> </Membership></Or></And></Where></Query></View>"; $http({ url: baseUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/getitems?$select=*,WorkflowItemId,Author/Id\,Author/Title\,AssignedTo/Id\,ContentType/EditFormUrl\&$expand=ContentType", method: "POST", data: "{ 'query' : {'__metadata': { 'type': 'SP.CamlQuery' }, \"ViewXml\": \"" + viewXml + "\" }}", headers: { "X-RequestDigest": $("#__REQUESTDIGEST").val(), "Accept": "application/json; odata=verbose", "content-type": "application/json; odata=verbose" } }).success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var GetFilteredListByPeopleGroup = function (query, peopleGroupFieldName) { var deferred = $q.defer(); var viewXml = "<View><Query><Where><Or><Eq><FieldRef Name='" + peopleGroupFieldName + "' /><Value Type='Integer'><UserID/></Value></Eq><Membership Type='CurrentUserGroups'><FieldRef Name='" + peopleGroupFieldName + "' /></Membership></Or></Where></Query></View>"; $http({ url: query, method: "POST", data: "{ 'query' : {'__metadata': { 'type': 'SP.CamlQuery' }, \"ViewXml\": \"" + viewXml + "\" }}", headers: { "X-RequestDigest": $("#__REQUESTDIGEST").val(), "Accept": "application/json; odata=verbose", "content-type": "application/json; odata=verbose" } }).success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; //To get the formdigestvalue, which is required to insert data to sharepoint //Define the service call var getFormDigest = function () { var deferred = $q.defer(); $http({ url: baseUrl + "/_api/contextinfo”", method: "POST", headers: { "accept": "application/json;odata=verbose", "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value, "content-Type": "text/xml" }, data: '' }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; } var postRequest = function (data, url) { var deferred = $q.defer(); $http({ url: baseUrl + url, method: "POST", headers: { "accept": "application/json;odata=verbose", "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value, "content-Type": "application/json;odata=verbose" }, data: JSON.stringify(data) }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var updateRequest = function (data, url) { var deferred = $q.defer(); $http({ url: baseUrl + url, method: "PATCH", headers: { "accept": "application/json;odata=verbose", "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value, "content-Type": "application/json;odata=verbose", "X-Http-Method": "PATCH", "If-Match": "*" }, data: JSON.stringify(data) }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var deleteRequest = function (url) { var deferred = $q.defer(); $http({ url: baseUrl + url, method: "DELETE", headers: { "accept": "application/json;odata=verbose", "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value, "IF-MATCH": "*" } }) .success(function (result) { deferred.resolve(result); }) .error(function (result, status) { deferred.reject(status); }); return deferred.promise; }; var GetUserById = function (id) { var returnValue; var deferred = $q.defer(); return $http({ url: baseUrl + "/_api/Web/GetUserById(" + id + ")", method: "GET", headers: { "X-RequestDigest": $("#__REQUESTDIGEST").val(), "Accept": "application/json; odata=verbose", "content-type": "application/json; odata=verbose" } }).then(function (response) { if (typeof response.data === 'object') { return response.data.d.Title; } else { // invalid response return $q.reject(response.data); } }, function (response) { // something went wrong return $q.reject(response.data); }); } return { getRequest: getRequest, getAssignedToUserRequest: getAssignedToUserRequest, GetFilteredListByPeopleGroup: GetFilteredListByPeopleGroup, getMyRequest: getMyRequest, getByPeopleGroupFieldValue: getByPeopleGroupFieldValue, postRequest: postRequest, updateRequest: updateRequest, deleteRequest: deleteRequest, getFormDigest: getFormDigest, getRootRequest: getRootRequest, GetUserById: GetUserById }; }]); })();