(function () { "use strict"; var serviceId = "usersAdminDataContext"; var userServiceUsersEndPoint = "UserService/api/myusers/"; angular .module("usersAdmin") .factory(serviceId, ["$q", "$http", "usersAdminConfig", datacontext]); function datacontext($q, $http, config) { var service = { createUser: createUser, getUserIdByEmail: getUserIdByEmail, updateUsers: updateUsers, updateUser: updateUser, deleteUser: deleteUser, deleteUsers: deleteUsers, isEmailAvailable: isEmailAvailable, isUsernameAvailable: isUsernameAvailable, addUsersToOrg: addUsersToOrg, moveUsersToOrg: moveUsersToOrg, copyUsersToOrg: copyUsersToOrg, createUsers: createUsers, getAdminUsers: getAdminUsers, getDeployments: getDeployments, sendVerificationLink: sendVerificationLink, importUsers: importUsers, getUsersInRoles: getUsersInRoles, getSystemSettings: getSystemSettings, getCurrentStatusByTenant: getCurrentStatusByTenant, saveCurrentUserStatus: saveCurrentUserStatus, verifyUserEmail: verifyUserEmail, deleteUserStatusesForUser: deleteUserStatusesForUser }; return service; function handleError(response) { // The API response from the server should be returned in a // nomralized format. However, if the request was not handled by the // server (or what not handles properly - ex. server error), then we // may have to normalize it on our end, as best we can. if (!angular.isObject(response.data) || !response.data.message) { return $q.reject("An unknown error occurred."); } // Otherwise, use expected error message. return $q.reject(response.data.message); } // I transform the successful response, unwrapping the application data // from the API response payload. function handleSuccess(response) { return response.data; } function getSystemSettings(organisationId) { var request = $http({ method: "get", url: config.tenantUrl + 'uisettings', headers: { ownerId: organisationId.toUpperCase(), tenantId: organisationId.toUpperCase() } }); return (request.then(handleSuccess, handleError)); } function getUserIdByEmail(email) { var request = $http({ method: "get", url: config.myusersUrl + 'api/myusers/email?email=' + email, }); return (request.then(handleSuccess, handleError)); } function getCurrentStatusByTenant(tenantId, userId) { var request = $http({ method: "get", url: config.myusersUrl + "api/myusers/"+ tenantId+"/status/" +userId, }); return request.then(handleSuccess, handleError); } function saveCurrentUserStatus(tenantId, userId, userStatus) { var request = $http({ method: "post", url: config.myusersUrl + "api/myusers/" + tenantId + "/status/" + userId, data: userStatus, }); return request.then(handleSuccess, handleError); } //Delete all the user statuses for the given userId function deleteUserStatusesForUser(userId) { var request = $http({ method: "delete", url: config.myusersUrl + "api/myusers/" + userId + "/statuses" }); return request.then(handleSuccess, handleError); } function updateUser(user, status, comment) { var request = $http({ method: "put", url: config.apigatewayUrl + userServiceUsersEndPoint + user.id, data: user, }); return request.then(handleSuccess, handleError); } function getDeployments(ids) { var request = $http({ method: "get", url: config.myusersUrl + "/AssignmentDeployedToUser/ids?ids=" + ids, }); return request.then(handleSuccess, handleError); } function createUser(user) { var request = $http({ method: "post", url: config.myusersUrl + "api/myusers", data: user, }); return request.then(handleSuccess, handleError); } function createUsers(users, organisationId) { var request = $http({ method: "post", url: config.myusersUrl + "api/bulkmyusers/" + organisationId, data: users, }); return request.then(handleSuccess, handleError); } function updateUsers(userOrganisationModels) { var request = $http({ method: "put", url: config.myusersUrl + "api/myusers", data: userOrganisationModels, }); return request.then(handleSuccess, handleError); } function updateUser(user) { var request = $http({ method: "put", url: config.myusersUrl + "api/myusers/" + user.id, data: user, }); return request.then(handleSuccess, handleError); } function deleteUser(user) { var request = $http({ method: "delete", url: config.myusersUrl + "api/myusers/" + user.id, }); return request.then(handleSuccess, handleError); } function deleteUsers(userIds) { var request = $http({ method: "delete", headers: { "Content-Type": "application/json; charset=UTF-8" }, url: config.myusersUrl + "api/myusers/" + config.appCode, data: userIds, }); return request.then(handleSuccess, handleError); } function sendVerificationLink( emailToVerify, userId, applicationId, appCode, applicationUrl ) { var request = $http({ method: "post", headers: { "Content-Type": "application/json; charset=UTF-8" }, url: config.myusersUrl + "api/emailverifications", data: { emailToVerify: emailToVerify, userId: userId, applicationId: applicationId, applicationUrl: applicationUrl, applicationTemplateUrl: applicationUrl, appCode: appCode, isSetPassword: true, }, }); return request.then(handleSuccess, handleError); } function getAdminUsers() { var request = $http({ method: "get", url: config.apigatewayUrl + userServiceUsersEndPoint + "api/adminusers/", }); return request.then(handleSuccess, handleError); } function isEmailAvailable(email) { var request = $http({ method: "get", url: config.userProfileServiceUrl + "emailavailable?email=" + email, }); return request.then(handleSuccess, handleError); } function isUsernameAvailable(username) { var request = $http({ method: "get", url: config.myusersUrl + "api/Account/usernameavailable?username=" + username, }); return request.then(handleSuccess, handleError); } function addUsersToOrg(model) { var request = $http({ method: "put", url: config.myusersUrl + "api/myusers/organisations/added", data: model, }); return request.then(handleSuccess, handleError); } function moveUsersToOrg(model) { var request = $http({ method: "put", url: config.myusersUrl + "api/myusers/organisations/moved", data: model, }); return request.then(handleSuccess, handleError); } function copyUsersToOrg(model) { var request = $http({ method: "put", url: config.myusersUrl + "api/myusers/organisations/copied", data: model, }); return request.then(handleSuccess, handleError); } function importUsers(file) { var payload = new FormData(); payload.append("name", file.name); payload.append("users", file); var request = $http({ method: "put", headers: { "Content-Type": undefined, }, url: config.apigatewayUrl + "csvimport/users", data: payload, }); return request.then(handleSuccess, handleError); } function getUsersInRoles(model) { var request = $http({ method: "post", url: config.apigatewayUrl + "users/groups/roles?ignoreParentGroups=true", data: model, }); return request.then(handleSuccess, handleError); } function verifyUserEmail(userId){ var request = $http({ method: "put", url: config.myusersUrl + "api/myusers/verifyEmail/" + userId, }); return request.then(handleSuccess, handleError); } } })();