Add user management

This commit is contained in:
2016-09-23 15:12:46 -04:00
parent 9f50a4635c
commit 0b5dde065a
53 changed files with 1046 additions and 690 deletions
@@ -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>
+42
View File
@@ -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);
});
}
});
})();