Add MemberManage dashboard
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name umbraco.resources.memberExtResource
|
||||
*
|
||||
* @description Member Management
|
||||
*
|
||||
* @returns {umbraco.resources.memberExtResource} memberExtResource
|
||||
*
|
||||
* @param {any} $http Http Service
|
||||
* @param {any} $window Window
|
||||
* @param {any} umbRequestHelper Umbraco Request Helper
|
||||
**/
|
||||
function memberExtResource($http, $window, umbRequestHelper) {
|
||||
var memberExtResource = {
|
||||
approveById: function (id) {
|
||||
if (!id) {
|
||||
throw "id cannot be null";
|
||||
}
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.post("Backoffice/MemberManager/MemberApi/PostApprove?" +
|
||||
umbRequestHelper.dictionaryToQueryString(
|
||||
[{ id: id }])),
|
||||
'Failed to approve member with id ' + id);
|
||||
},
|
||||
suspendById: function (id) {
|
||||
if (!id) {
|
||||
throw "id cannot be null";
|
||||
}
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.post("Backoffice/MemberManager/MemberApi/PostSuspend?" +
|
||||
umbRequestHelper.dictionaryToQueryString(
|
||||
[{ id: id }])),
|
||||
'Failed to approve member with id ' + id);
|
||||
},
|
||||
unlockById: function (id) {
|
||||
if (!id) {
|
||||
throw "id cannot be null";
|
||||
}
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.post("Backoffice/MemberManager/MemberApi/PostUnlock?" +
|
||||
umbRequestHelper.dictionaryToQueryString(
|
||||
[{ id: id }])),
|
||||
'Failed to approve member with id ' + id);
|
||||
},
|
||||
getMembers: function (options) {
|
||||
|
||||
var defaults = {
|
||||
pageSize: 0,
|
||||
pageNumber: 0,
|
||||
filterData: { filter: null },
|
||||
orderDirection: "Ascending",
|
||||
orderBy: "SortOrder"
|
||||
};
|
||||
if (options === undefined) {
|
||||
options = {};
|
||||
}
|
||||
//overwrite the defaults if there are any specified
|
||||
angular.extend(defaults, options);
|
||||
//now copy back to the options we will use
|
||||
options = defaults;
|
||||
//change asc/desc
|
||||
if (options.orderDirection === "asc") {
|
||||
options.orderDirection = "Ascending";
|
||||
}
|
||||
else if (options.orderDirection === "desc") {
|
||||
options.orderDirection = "Descending";
|
||||
}
|
||||
|
||||
// Create the querystring dictionary
|
||||
var querystring = _filterToDictionary(options.filterData);
|
||||
querystring.push({ pageNumber: options.pageNumber });
|
||||
querystring.push({ pageSize: options.pageSize });
|
||||
querystring.push({ orderBy: options.orderBy });
|
||||
querystring.push({ orderDirection: options.orderDirection });
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get("Backoffice/MemberManager/MemberApi/GetMembers?" +
|
||||
umbRequestHelper.dictionaryToQueryString(querystring)),
|
||||
'Failed to retrieve members');
|
||||
},
|
||||
getMemberExport: function (options) {
|
||||
|
||||
var defaults = {
|
||||
filterData: { filter: null },
|
||||
orderDirection: "Ascending",
|
||||
orderBy: "SortOrder",
|
||||
format: "Excel",
|
||||
columns: null
|
||||
};
|
||||
if (options === undefined) {
|
||||
options = {};
|
||||
}
|
||||
//overwrite the defaults if there are any specified
|
||||
angular.extend(defaults, options);
|
||||
|
||||
//now copy back to the options we will use
|
||||
options = defaults;
|
||||
|
||||
//change asc/desc
|
||||
if (options.orderDirection === "asc") {
|
||||
options.orderDirection = "Ascending";
|
||||
}
|
||||
else if (options.orderDirection === "desc") {
|
||||
options.orderDirection = "Descending";
|
||||
}
|
||||
|
||||
// Create the querystring dictionary
|
||||
var querystring = _filterToDictionary(options.filterData);
|
||||
querystring.push({ orderBy: options.orderBy });
|
||||
querystring.push({ orderDirection: options.orderDirection });
|
||||
querystring.push({ format: options.format });
|
||||
querystring.push({ columns: options.columns });
|
||||
|
||||
var config = { responseType: 'blob' };
|
||||
|
||||
// Solution taken from http://jaliyaudagedara.blogspot.com/2016/05/angularjs-download-files-by-sending.html
|
||||
$http.get("Backoffice/MemberManager/MemberApi/GetMembersExport?" + umbRequestHelper.dictionaryToQueryString(querystring),
|
||||
config).success(function (data, status, headers) {
|
||||
headers = headers();
|
||||
try {
|
||||
var filename = headers['x-filename'];
|
||||
|
||||
if (!filename) {
|
||||
var result = headers['content-disposition'].split(';')[1].trim().split('=')[1];
|
||||
filename = result.replace(/"/g, '');
|
||||
}
|
||||
|
||||
var contentType = headers['content-type'];
|
||||
|
||||
var linkElement = document.createElement('a');
|
||||
|
||||
var blob = new Blob([data], { type: contentType });
|
||||
var url = window.URL.createObjectURL(blob);
|
||||
|
||||
linkElement.setAttribute('href', url);
|
||||
linkElement.setAttribute("download", filename);
|
||||
|
||||
var clickEvent = new MouseEvent("click", {
|
||||
"view": window,
|
||||
"bubbles": true,
|
||||
"cancelable": false
|
||||
});
|
||||
linkElement.dispatchEvent(clickEvent);
|
||||
} catch (ex) {
|
||||
console.log(ex);
|
||||
}
|
||||
|
||||
}).error(function (data) {
|
||||
console.log(data);
|
||||
});
|
||||
},
|
||||
getMemberGroups: function () {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get("Backoffice/MemberManager/MemberApi/GetMemberGroups"),
|
||||
'Failed to retrieve groups');
|
||||
},
|
||||
getMemberColumns: function (memberType) {
|
||||
if (memberType === undefined || memberType === null) {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get("Backoffice/MemberManager/MemberApi/GetMemberColumns"),
|
||||
'Failed to retrieve groups');
|
||||
} else {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get("Backoffice/MemberManager/MemberApi/GetMemberColumns?memberType=" + memberType),
|
||||
'Failed to retrieve groups');
|
||||
}
|
||||
},
|
||||
canExport: function () {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get("Backoffice/MemberManager/MemberApi/GetCanExport"),
|
||||
false);
|
||||
}
|
||||
};
|
||||
|
||||
function _filterToDictionary(filter) {
|
||||
if (!filter)
|
||||
return;
|
||||
var dict = [];
|
||||
|
||||
for (prop in filter) {
|
||||
if (filter.hasOwnProperty(prop) &&
|
||||
filter[prop] &&
|
||||
(prop.startsWith('f_') || prop === 'filter' || prop === 'memberType' || prop === 'memberGroups') &&
|
||||
filter[prop].length > 0) {
|
||||
|
||||
// Add a new dictionary entry.
|
||||
var entry = {};
|
||||
entry[prop] = filter[prop];
|
||||
dict.push(entry);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return dict;
|
||||
|
||||
}
|
||||
|
||||
return memberExtResource;
|
||||
}
|
||||
|
||||
angular.module('umbraco.resources').factory('memberExtResource', memberExtResource);
|
||||
Reference in New Issue
Block a user