﻿(function () {
    var module = appStatisticsPlugin.getAngularModule();
    module.controller('app.statistics.userDetailsCtrl',
        ['$scope', '$stateParams', '$interval', 'app.statistics.userService', 'app.statistics.jobService',
        function ($scope, $stateParams, $interval, userService, jobService) {
            $scope.interval = defaultPageUpdateInterval;
            $scope.completedJobCurPage = 1;
            $scope.completedJobPageSize = 20;

            var getUserDetails = function () {
                userService.getUser({ id: $stateParams.id }, function(user) {
                    $scope.user = user;

                    var length = user.TasksStates.length;
                    var total = 0;
                    for (var i = 0; i < length; ++i) {
                        total += user.TasksStates[i].Count;
                    }
                    $scope.totalUserTasks = total;
                });
            };

            var getAllJobs = function () {
                jobService.getAllJobsByUserId({ id: $stateParams.id, completed: false }, function (jobs) {
                    $scope.jobs = jobs;
                });
            };

            var getCompletedJobs = function () {
                jobService.getJobsByUserId({ id: $stateParams.id, page: $scope.completedJobCurPage, size: $scope.completedJobPageSize, completed: true },
                    function (jobPage) {
                        $scope.completedJobPage = jobPage;
                    }
                );
            };

            $scope.changeCompletedJobPage = function () {
                update();
            };

            var update = function () {
                getUserDetails();
                getAllJobs();
                getCompletedJobs();
            };

            $scope.updateInterval = $interval(update, $scope.interval);
            var cancelInterval = $scope.$on('$locationChangeSuccess', function () {
                $interval.cancel($scope.updateInterval);
                cancelInterval();
            });
            update(); // init page
        }]
    );
})();