/**
 * @ngdoc object
 * @name  Bastion.activation-keys.controller:ActivationKeyAssociationsController
 *
 * @requires $scope
 * @requires $location
 * @requires translate
 * @requires Nutupane
 * @requires ActivationKey
 * @requires ContentHostsHelper
 * @requires CurrentOrganization
 * @requires newHostDetailsUI
 *
 * @description
 *   Provides the functionality for activation key associations.
 */
angular.module('Bastion.activation-keys').controller('ActivationKeyAssociationsController',
    ['$scope', '$location', 'translate', 'Nutupane', 'ActivationKey', 'ContentHostsHelper', 'CurrentOrganization', 'Host', 'newHostDetailsUI',
    function ($scope, $location, translate, Nutupane, ActivationKey, ContentHostsHelper, CurrentOrganization, Host, newHostDetailsUI) {
        var contentHostsNutupane, nutupaneParams, params = {
            'organization_id': CurrentOrganization,
            'search': $location.search().search || "",
            'page': 1,
            'sort_by': 'name',
            'sort_order': 'ASC',
            'paged': true
        };

        nutupaneParams = {
            'disableAutoLoad': true
        };

        // Labels so breadcrumb strings can be translated
        $scope.label = translate('Content Hosts');


        contentHostsNutupane = new Nutupane(Host, params, undefined, nutupaneParams);
        $scope.controllerName = 'hosts';
        contentHostsNutupane.searchTransform = function (term) {
            var searchQuery, addition = "activation_key_id=" + $scope.$stateParams.activationKeyId;
            if (term === "" || angular.isUndefined(term)) {
                searchQuery = addition;
            } else {
                searchQuery = term + " and " + addition;
            }
            return searchQuery;
        };

        contentHostsNutupane.primaryOnly = true;
        contentHostsNutupane.setSearchKey('contentHostSearch');

        $scope.table = contentHostsNutupane.table;
        $scope.table.working = true;
        $scope.newHostDetailsUI = newHostDetailsUI;

        if ($scope.contentHosts) {
            $scope.table.working = false;
        }

        $scope.activationKey.$promise.then(function () {
            contentHostsNutupane.setParams(params);
            contentHostsNutupane.load();
        });

        $scope.getHostStatusIcon = ContentHostsHelper.getHostStatusIcon;

        $scope.memory = ContentHostsHelper.memory;
    }]
);