logman.factory('$user',['$resource',function($resource){

var User = $resource('/api/users/:id',{id:'@id'},{
        save:{method:'PUT'},
        create:{method:'POST'}
});
var collection = User.query();

return{
        Class: User,
        collection: collection,
        reload: function(){
                User.query({},function(ls){
                        collection.length = 0;
                        for (var i=0; i < ls.length; i++)collection.push(ls[i]); 
                });
        },
        byId: function(id){
                for (var i=0; i < this.collection.length; i++) {
                 if(this.collection[i].id == id) return this.collection[i];
                };      
        }
}

}]);

var UsersListCtl = function($scope, $user, $modal){

$scope.users = $user.collection;
$scope.is_admin = user.admin;

$scope.remove = function(user){
        if(confirm('Are you sure?')){
                user.$delete($user.reload);
        }
}

$scope.addEdit = function(user){

        var modalInstance = $modal.open({
      templateUrl: '/app/user/user-modal.html',
      controller: UserModalCtl,
      resolve: {active_user: function(){return user; }}
    });
}

$scope.userProfile = function(){
        var me = $user.Class.get({id: window.user.id});
        $scope.addEdit(me);
}

}

var UserModalCtl = function($scope, $modalInstance, $user, active_user){

$scope.user = active_user;
if(!$scope.user)$scope.user = new $user.Class();
$scope.is_admin = window.user.admin;

$scope.addEdit = function(){
       function success(){
               $user.reload();
               $modalInstance.dismiss();
       }

       if($scope.user.id)$scope.user.$save(success);
       else $scope.user.$create(success)
}

$scope.cancel = function () {
   $modalInstance.dismiss('cancel');
 };

}