Angular JS factory service for CRUD operations

(function () {
    app.factory('RESTService'function ($http$q$location) {
        var factory = {};
        var currentsiteurl = _spPageContextInfo.webAbsoluteUrl//_spPageContextInfo.siteAbsoluteUrl;
        factory.getItems = function (listNameurl) {
            var locdefer = $q.defer();
            $http({
                headers: {
                    "Accept": "application/json; odata=verbose"
                },
                method: 'GET',
                async: false,
                url: currentsiteurl + "/_api/web/lists/GetByTitle('" + listName + "')/items?" + url
            }).then(function successCallback(response) {
                locdefer.resolve(response.data.d.results);
            }, function errorCallback(response) {
                console.log("Error Fetching date from " + listName + "\nPlease refresh the page and try again");
            });
            return locdefer.promise;
        }
        factory.getAttachements = function (listNameurl) {
            var locdefer = $q.defer();
            $http({
                headers: {
                    "Accept": "application/json; odata=verbose"
                },
                method: 'GET',
                async: false,
                url: currentsiteurl + "/_api/web/lists/GetByTitle('" + listName + "')/items" + url
            }).then(function successCallback(response) {
                locdefer.resolve(response.data.d.results);
            }, function errorCallback(response) {
                console.log("Error Fetching date from " + listName + "\nPlease refresh the page and try again");
            });
            return locdefer.promise;
        }
        factory.postItem = function (itemlistname) {
            var deferred = $q.defer();
            $http({
                    url: currentsiteurl + "/_api/web/lists/getbytitle('" + listname + "')/items(" + item.ID + ")",
                    method: "POST",
                    async: false,
                    headers: {
                        "accept": "application/json;odata=verbose",
                        "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value,
                        "content-Type": "application/json;odata=verbose",
                        "IF-MATCH": "*",
                        "X-Http-Method": "MERGE"
                    },
                    data: JSON.stringify(item)
                }).success(function (result) {
                    deferred.resolve(result);
                })
                .error(function (resultstatus) {
                    alert("Error from Server: Unable to update item.Please refresh the page and try again");
                    console.log(result);
                    //  deferred.reject(status);
                });

            return deferred.promise;

        }
        factory.addItem = function (itemlistname) {
            var defer = $q.defer();
            $http({
                headers: {
                    "Accept": "application/json; odata=verbose"
                },
                method: 'POST',
                async: false,
                url: currentsiteurl + "/_api/web/lists/getbytitle('" + listname + "')/items",
                headers: {
                    "accept": "application/json;odata=verbose",
                    "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value,
                    "content-Type": "application/json;odata=verbose",
                },
                data: JSON.stringify(item)
            }).success(function (data) {
                defer.resolve(data);
                //alert("Item Created");
            }).error(function (msgx) {
                console.log(msg);
                console.log(x);
                console.log("Error from Server: Unable to create item.Please refresh the page and try again");
            })
            return defer.promise;
        }
        factory.deleteItem = function (idlistname) {
            var deferDelete = $q.defer();
            $http({
                url: currentsiteurl + "/_api/web/lists/getbytitle('" + listname + "')/items(" + id + ")",
                method: "POST",
                headers: {
                    "accept": "application/json;odata=verbose",
                    "X-RequestDigest": document.getElementById("__REQUESTDIGEST").value,
                    "content-Type": "application/json;odata=verbose",
                    "IF-MATCH": "*",
                    "X-Http-Method": "DELETE"
                },
            }).success(function (result) {
                deferDelete.resolve(result);
                //alert("Item deleted");
            }).error(function (resultstatus) {
                alert("Error from Server: Unable to delete item.Please refresh the page and try again");
                deferDelete.reject(status);
            });
            return deferDelete.promise;
        }
        return factory;
    });
    app.factory('SP_AuthFactory'function ($http$q$location) {
        var factory = {};
        factory.getCurrUsergroups = function () {
            var assignedusergroup = "";
            var locdefer = $q.defer();
            $().SPServices({
                operation: "GetGroupCollectionFromUser",
                userLoginName: $().SPServices.SPGetCurrentUser(),
                async: false,
                completefunc: function (xDataStatus) {
                    $(xData.responseXML).find("Group").each(function () {
                        assignedusergroup = assignedusergroup + "\n" + $(this).attr("Name");
                    });
                    locdefer.resolve(assignedusergroup);
                }
            });
            return locdefer.promise;
        }
        return factory;
    });
})();

Comments

Popular posts from this blog

Powerapps overcome 2000 item limit from any datasource

PowerApps multiselect cascading dropdown and save an item to SharePoint List

Multi select cascading dropdown in Power Apps