angular.module("unlMainApp").controller('cloudmgmtController', function cloudmgmtController($scope, $http, $rootScope, $uibModal, $log, $location) {
    $scope.testAUTH("/cloudmgmt"); // Проверка авторизации

    const waitForRole = $scope.$watch(function () {
        return $rootScope.role;
    }, function (newRole) {
        if (!newRole) return; // Ждём, пока роль появится

        if (newRole !== 'admin') {
            showAccessDeniedModal();
            return;
        }

        // ✅ Если роль admin, инициализируем
        init();
        waitForRole(); // Отключаем watch
    });

    function showAccessDeniedModal() {
        $uibModal.open({
            animation: true,
            template: `
                <div class="modal-header">
                    <h4 class="modal-title">Доступ запрещён</h4>
                </div>
                <div class="modal-body">
                    У вас нет доступа к этой странице. Вы будете перенаправлены на главную.
                </div>
                <div class="modal-footer">
                    <button class="btn btn-primary" ng-click="$close()">Ок</button>
                </div>
            `,
            size: 'sm',
            backdrop: 'static',
            keyboard: false
        }).result.finally(function () {
            $location.path('/');
            $scope.$apply(); // Обновляем Angular после $location.path
        });
    }

    function init() {
        $scope.clouddata = [];
        $scope.cloudId = 0;

        // Получение списка cloud
        $scope.getCloudsInfo = function () {
            $http.get('/api/clouds').then(
                function successCallback(response) {
                    $scope.clouddata = response.data.data;

                    // Проверяем, есть ли облака в ответе, и выбираем первое
                    if ($scope.clouddata.length > 0) {
                        $scope.cloudId = $scope.clouddata[0].id;  // Устанавливаем cloudId первого облака
                    }

                    $.unblockUI();
                },
                function errorCallback(response) {
                    $.unblockUI();
                    console.log("Unknown Error. Why did API doesn't respond?");
                    $location.path("/login");
                }
            );
        };
        $scope.getCloudsInfo();

        $scope.deleteCloud = function (cloudId) {
            if (!confirm("Are you sure you want to delete this cloud?")) return;

            $http.delete('/api/clouds/' + cloudId).then(
                function successCallback(response) {
                    console.log('Cloud deleted:', response.data);
                    $scope.getCloudsInfo(); // Обновить список
                },
                function errorCallback(response) {
                    console.error("Failed to delete cloud", response.data);
                }
            );
        };

        // Применяем стили
        $('body').removeClass().addClass('hold-transition skin-blue layout-top-nav');

        // Подключение модальных контроллеров
        ModalCtrl($scope, $uibModal, $log);
    }
});
