Add user management
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
window.app.controller('UserController',
|
||||
function($uibModal, userSvc, downloadSvc) {
|
||||
var vm = this;
|
||||
|
||||
vm.users = userSvc.users;
|
||||
|
||||
vm.create = function() {
|
||||
$uibModal.open({
|
||||
template: '<user-create />',
|
||||
backdrop: 'static'
|
||||
});
|
||||
}
|
||||
|
||||
vm.edit = function() {
|
||||
$uibModal.open({
|
||||
template: '<user-edit />',
|
||||
backdrop: 'static'
|
||||
});
|
||||
}
|
||||
|
||||
vm.export = function() {
|
||||
userSvc.exportUsers()
|
||||
.success(downloadSvc.success);
|
||||
}
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1,37 @@
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
window.app.directive('userCreate', function() {
|
||||
return {
|
||||
templateUrl: '/user/template/userCreate.tmpl.cshtml',
|
||||
controller: controller,
|
||||
controllerAs: 'vm'
|
||||
}
|
||||
});
|
||||
|
||||
function controller($scope, userSvc){
|
||||
var vm = this;
|
||||
|
||||
vm.saving = false;
|
||||
vm.user = {};
|
||||
|
||||
vm.statusMessage = "Create a user";
|
||||
vm.errorMessages = [];
|
||||
|
||||
vm.create = function() {
|
||||
vm.statusMessage = null;
|
||||
vm.saving = true;
|
||||
userSvc.create(vm.user)
|
||||
.success(function() {
|
||||
//Close the modal
|
||||
$scope.$close();
|
||||
})
|
||||
.error(function(data) {
|
||||
vm.errorMessages = angular.copy(data.errorMessages, vm.errorMessages);
|
||||
})
|
||||
.finally(function() {
|
||||
vm.saving = false;
|
||||
});
|
||||
};
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,42 @@
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
window.app.directive('userEdit', function (){
|
||||
return {
|
||||
scope: {
|
||||
user: "="
|
||||
},
|
||||
templateUrl: '/user/template/userEdit.tmpl.cshtml',
|
||||
controller: controller,
|
||||
controllerAs: 'vm'
|
||||
}
|
||||
});
|
||||
|
||||
function controller($scope, userSvc) {
|
||||
var vm = this;
|
||||
vm.user = angular.copy($scope.user);
|
||||
vm.save = save;
|
||||
|
||||
vm.saving = false;
|
||||
vm.userSvc = userSvc;
|
||||
|
||||
vm.statusMessage = "Edit this user";
|
||||
vm.errorMessages = [];
|
||||
|
||||
function save() {
|
||||
vm.statusMessage = null;
|
||||
vm.saving = true;
|
||||
userSvc.edit($scope.user, vm.user)
|
||||
.success(function () {
|
||||
//Close the modal
|
||||
$scope.$parent.$close();
|
||||
})
|
||||
.error(function(data) {
|
||||
vm.errorMessages = angular.copy(data.errorMessages, vm.errorMessages);
|
||||
})
|
||||
.finally(function() {
|
||||
vm.saving = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,27 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
window.app.directive('userList', function () {
|
||||
return {
|
||||
scope: { "users": "=" },
|
||||
templateUrl: '/user/template/userList.tmpl.cshtml',
|
||||
controller: controller,
|
||||
controllerAs: 'vm'
|
||||
}
|
||||
});
|
||||
|
||||
controller.$inject = ['$scope', '$uibModal'];
|
||||
function controller($scope, $uibModal) {
|
||||
var vm = this;
|
||||
|
||||
vm.users = $scope.users;
|
||||
vm.edit = edit;
|
||||
|
||||
function edit(user) {
|
||||
$uibModal.open({
|
||||
template: '<user-edit user="user" />',
|
||||
scope: angular.extend($scope.$new(true), { user: user })
|
||||
});
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,27 @@
|
||||
@using InventoryTraker.Web.Helpers
|
||||
@model InventoryTraker.Web.Models.UserEditForm
|
||||
|
||||
<form novalidate
|
||||
name="vm.form"
|
||||
ng-submit="vm.form.$valid && vm.create()">
|
||||
<fieldset ng-disabled="vm.saving">
|
||||
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title"><i class="fa fa-user"></i> Create User</h3>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<status-message message="vm.statusMessage"></status-message>
|
||||
<error-list errors="vm.errorMessages"></error-list>
|
||||
|
||||
@Html.Angular().FormForModel("vm.user")
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-success">Create</button>
|
||||
<button type="button" class="btn" ng-click="$dismiss()">Cancel</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
@@ -0,0 +1,27 @@
|
||||
@using InventoryTraker.Web.Helpers
|
||||
@model InventoryTraker.Web.Models.UserEditForm
|
||||
<form novalidate
|
||||
name="vm.form"
|
||||
ng-submit="vm.form.$valid && vm.save()">
|
||||
<fieldset ng-disabled="vm.saving">
|
||||
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title"><i class="fa fa-user"></i> Edit User</h3>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
|
||||
<status-message message="vm.statusMessage"></status-message>
|
||||
<error-list errors="vm.errorMessages"></error-list>
|
||||
|
||||
@Html.Angular().FormForModel("vm.user")
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-success">Save</button>
|
||||
<button type="button" class="btn" ng-click="$parent.$dismiss()">Cancel</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
@@ -0,0 +1,16 @@
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="control-column"></th>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="user in vm.users | orderBy:'name'">
|
||||
<td><a href="" ng-click="vm.edit(user)"><i class="fa fa-edit"></i></a></td>
|
||||
<td>{{user.userName}}</td>
|
||||
<td>{{user.email}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -0,0 +1,42 @@
|
||||
(function () {
|
||||
window.app.factory('userSvc',
|
||||
function($http) {
|
||||
var users = [];
|
||||
|
||||
loadUsers();
|
||||
|
||||
var svc = {
|
||||
create: create,
|
||||
edit: edit,
|
||||
users: users,
|
||||
exportusers: exportusers
|
||||
};
|
||||
|
||||
return svc;
|
||||
|
||||
function loadUsers() {
|
||||
$http.post('/User/All')
|
||||
.success(function(data) {
|
||||
users.addRange(data);
|
||||
});
|
||||
}
|
||||
|
||||
function exportusers() {
|
||||
return $http.post('/User/Export', {}, { responseType: 'arraybuffer' });
|
||||
}
|
||||
|
||||
function create(user) {
|
||||
return $http.post('/User/Create', user)
|
||||
.success(function(user) {
|
||||
users.unshift(user);
|
||||
});
|
||||
}
|
||||
|
||||
function edit(existingUser, editedUser) {
|
||||
return $http.post('/User/Edit', editedUser)
|
||||
.success(function(user) {
|
||||
angular.copy(user, existingUser);
|
||||
});
|
||||
}
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user