
This adds the initial UI functionality for the UI in relations to vendors. Change-Id: I58a3b00a421d2d65d59014e586bacc974aa8637b Co-Authored-By: Andrey Pavlov <andrey-mp@yandex.ru>
186 lines
6.8 KiB
JavaScript
186 lines
6.8 KiB
JavaScript
/*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
(function () {
|
|
'use strict';
|
|
|
|
angular
|
|
.module('refstackApp')
|
|
.controller('VendorController', VendorController);
|
|
|
|
VendorController.$inject = [
|
|
'$rootScope', '$scope', '$http', '$state', '$stateParams', '$window',
|
|
'refstackApiUrl', 'raiseAlert', 'confirmModal'
|
|
];
|
|
|
|
/**
|
|
* RefStack Vendor Controller
|
|
* This controller is for the '/vendor/' details page where owner can
|
|
* view details of the Vendor and manage users.
|
|
*/
|
|
function VendorController($rootScope, $scope, $http, $state, $stateParams,
|
|
$window, refstackApiUrl, raiseAlert, confirmModal) {
|
|
var ctrl = this;
|
|
|
|
ctrl.getVendor = getVendor;
|
|
ctrl.getVendorUsers = getVendorUsers;
|
|
ctrl.registerVendor = registerVendor;
|
|
ctrl.approveVendor = approveVendor;
|
|
ctrl.declineVendor = declineVendor;
|
|
ctrl.deleteVendor = deleteVendor;
|
|
ctrl.removeUserFromVendor = removeUserFromVendor;
|
|
ctrl.addUserToVendor = addUserToVendor;
|
|
|
|
/** The vendor id extracted from the URL route. */
|
|
ctrl.vendorId = $stateParams.vendorID;
|
|
|
|
// Should only be on user-vendors-page if authenticated.
|
|
if (!$scope.auth.isAuthenticated) {
|
|
$state.go('home');
|
|
}
|
|
|
|
/**
|
|
* This will contact the Refstack API to get a vendor information.
|
|
*/
|
|
function getVendor() {
|
|
ctrl.showError = false;
|
|
ctrl.vendor = null;
|
|
// Construct the API URL based on user-specified filters.
|
|
var contentUrl = refstackApiUrl + '/vendors/' + ctrl.vendorId;
|
|
ctrl.vendorRequest =
|
|
$http.get(contentUrl).success(function(data) {
|
|
ctrl.vendor = data;
|
|
var isAdmin = $rootScope.auth.currentUser.is_admin;
|
|
ctrl.vendor.canDelete = ctrl.vendor.type != 0
|
|
&& (ctrl.vendor.can_manage || isAdmin);
|
|
ctrl.vendor.canRegister =
|
|
ctrl.vendor.type == 1;
|
|
ctrl.vendor.canApprove = isAdmin;
|
|
ctrl.vendorProperties = angular.fromJson(data.properties);
|
|
}).error(function(error) {
|
|
ctrl.showError = true;
|
|
ctrl.error =
|
|
'Error retrieving from server: ' +
|
|
angular.toJson(error);
|
|
});
|
|
}
|
|
ctrl.getVendor();
|
|
|
|
/**
|
|
* This will 'send' application for registration.
|
|
*/
|
|
function registerVendor() {
|
|
var url = [refstackApiUrl, '/vendors/', ctrl.vendorId,
|
|
'/action'].join('');
|
|
$http.post(url, {register: null}).success(function() {
|
|
ctrl.getVendor();
|
|
}).error(function(error) {
|
|
raiseAlert('danger', 'Error: ', error.detail);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* This will approve application for registration.
|
|
*/
|
|
function approveVendor() {
|
|
var url = [refstackApiUrl, '/vendors/', ctrl.vendorId,
|
|
'/action'].join('');
|
|
$http.post(url, {approve: null}).success(function() {
|
|
ctrl.getVendor();
|
|
}).error(function(error) {
|
|
raiseAlert('danger', 'Error: ', error.detail);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* This will decline a vendor's application for registration.
|
|
*/
|
|
function declineVendor() {
|
|
confirmModal('Please input decline reason', function(reason) {
|
|
var url = [refstackApiUrl, '/vendors/', ctrl.vendorId,
|
|
'/action'].join('');
|
|
$http.post(url, {deny: null, reason: reason}).success(
|
|
function() {
|
|
ctrl.getVendor();
|
|
}).error(function(error) {
|
|
raiseAlert('danger', 'Error: ', error.detail);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Delete the current vendor.
|
|
*/
|
|
function deleteVendor() {
|
|
var url = [refstackApiUrl, '/vendors/', ctrl.vendorId].join('');
|
|
$http.delete(url).success(function () {
|
|
$window.location.href = '/';
|
|
}).error(function (error) {
|
|
raiseAlert('danger', 'Error: ', error.detail);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Updates list of users in the vendor's group
|
|
*/
|
|
function getVendorUsers() {
|
|
ctrl.showError = false;
|
|
var contentUrl = refstackApiUrl + '/vendors/' + ctrl.vendorId
|
|
+ '/users';
|
|
ctrl.usersRequest =
|
|
$http.get(contentUrl).success(function(data) {
|
|
ctrl.vendorUsers = data;
|
|
ctrl.currentUser = $rootScope.auth.currentUser.openid;
|
|
}).error(function(error) {
|
|
ctrl.showError = true;
|
|
ctrl.error =
|
|
'Error retrieving from server: ' +
|
|
angular.toJson(error);
|
|
});
|
|
}
|
|
ctrl.getVendorUsers();
|
|
|
|
/**
|
|
* Removes user with specific openid from vendor's group
|
|
* @param {Object} openid
|
|
*/
|
|
function removeUserFromVendor(openid) {
|
|
var url = [refstackApiUrl, '/vendors/', ctrl.vendorId,
|
|
'/users/', btoa(openid)].join('');
|
|
$http.delete(url).success(function () {
|
|
ctrl.getVendorUsers();
|
|
}).error(function (error) {
|
|
raiseAlert('danger', 'Error: ', error.detail);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Adds a user to a vendor group given an Open ID.
|
|
* @param {Object} openid
|
|
*/
|
|
function addUserToVendor(openid) {
|
|
var url = [refstackApiUrl, '/vendors/', ctrl.vendorId,
|
|
'/users/', btoa(openid)].join('');
|
|
$http.put(url).success(function() {
|
|
ctrl.userToAdd = '';
|
|
ctrl.getVendorUsers();
|
|
}).error(function(error) {
|
|
raiseAlert('danger', 'Problem adding user. ' +
|
|
'Is the Open ID correct? Error: ',
|
|
error.detail);
|
|
});
|
|
}
|
|
}
|
|
})();
|