%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/public/scripts/controllers/users/
Upload File :
Create Path :
Current File : /var/www/html/news/public/scripts/controllers/users/user.controller.js

'use strict';

angular.module('controllers').controller('userController', function ($scope, user, resource, notification, roles) {

    $scope.isNew = !user;
    $scope.roles = roles;
    $scope.availableRoles = [];

    if ($scope.isNew) {
        $scope.user = {
            roles: []
        };
    } else {
        $scope.user = angular.extend(user);
        $scope.user.birthdate = moment($scope.user.birthdate).toDate();
    }

    var filterRoles = function () {
        angular.forEach($scope.roles, function (value) {
            var hasRole = false;
            for (var i = 0; i < $scope.user.roles.length; i++) {
                if (value.id === $scope.user.roles[i].id) {
                    hasRole = true;
                    break;
                }
            }
            if (!hasRole) {
                $scope.availableRoles.push(value);
            }
        });
    };

    filterRoles();

    $scope.save = function () {
        if ($scope.isNew) {
            resource.forResource('users').save($scope.user).then(function (res) {
                notification.success('User created successfully');
                $scope.back();
            }, function (error) {
                notification.error(error);
            });
        } else {
            delete $scope.user.roles;
            resource.forResource('users').update($scope.user.id, $scope.user).then(function (res) {
                notification.success('User updated successfully');
                $scope.back();
            }, function (error) {
                notification.error(error);
            });
        }
    };

    $scope.attachRole = function (role) {
        var req = {
            roleId: role.id,
            userId: $scope.user.id
        };
        resource.forResource('users/attachRole').save(req).then(function (response) {
            notification.success(response.message);
            $scope.user.roles.push(role);
            $scope.availableRoles.splice($scope.availableRoles.indexOf(role), 1);
        }, function (error) {
            notification.error(error);
        })
    };

    $scope.detachRole = function (role) {
        var req = {
            roleId: role.id,
            userId: $scope.user.id
        };
        resource.forResource('users/detachRole').save(req).then(function (res) {
            notification.success(res.message);
            $scope.availableRoles.push(role);
            $scope.user.roles.splice($scope.user.roles.indexOf(role), 1);
        }, function (error) {
            notification.error(error);
        })
    };

    $scope.back = function () {
        history.back();
    };

    $scope.toggleDatepicker = function () {
        $scope.birthdatePicker = !$scope.birthdatePicker;
    };

});

Zerion Mini Shell 1.0