Source: components/admin/controllers/camadas.controller.js

/**
 * @ngdoc controllers
 * @name Camadas
 * @module s4c.components.admin.controllers.Camadas
 *
 * @description
 * `AdminCamadasCtrl` Controller da tela de Camadas do módulo de administração
 * 
 * 
 */
(function () {
    'use strict';

    function AdminCamadasCtrl($scope, $state, Acervo, Grupo, Categoria, $mdDialog, CSS_SLIDER, AcervoTipo, $rootScope, Base) {

        $scope.res = $rootScope.res;

        Base.obter('representacoes').then(function (reps) {
            $scope.representacoes = reps;
        });

        Base.obter('categoriaCluster').then(function (result) {
            $scope.clusters = result;
        });

        $scope.representacaoSelecionada;
        /**
         * @method selecionarRepresentacao
         * @param {*} representacaoSelecionada 
         */
        function selecionarRepresentacao(representacaoSelecionada) {
            $scope.editandoCategoria.representacaoId = representacaoSelecionada;
            $scope.representacaoSelecionada = representacaoSelecionada;
        }

        /**
         * @method salvarAcervo
         * @param {*} form 
         */
        function salvarAcervo(form) {
            if (form.$valid) {
                Acervo.save($scope.editandoAcervo)
                    .$promise.then(function () {
                        $scope.grupos = Grupo.query();
                        $state.go('admin.camadas');
                    });
            }
        }

        /**
         * @method salvarCategoria
         * @param {*} form 
         */
        function salvarCategoria(form) {
            if (form.$valid) {
                if ($scope.editandoCategoria.monitorar == null) {
                    $scope.editandoCategoria.monitorar = false;
                }
                Categoria.save($scope.editandoCategoria)
                    .$promise.then(function () {
                        $scope.grupos = Grupo.query();
                        $state.go('admin.camadas');
                    });
            }
        }

        /**
         * @method salvarGrupo
         * @param {*} form 
         */
        function salvarGrupo(form) {
            if (form.$valid) {
                Grupo.save($scope.editandoGrupo)
                    .$promise.then(function () {
                        $scope.grupos = Grupo.query();
                        $state.go('admin.camadas');
                    });
            }
        }

        /**
         * @method ativarGrupo
         * @param {*} grupo 
         */
        function ativarGrupo(grupo) {

            if (grupo.ativo) {
                return;
            }

            $scope.grupos = _.map($scope.grupos, function (grupo) {
                grupo.ativo = false;
                return grupo;
            });

            $scope.acervos = _.map(grupo.Acervos, function (acervo) {
                acervo.ativo = false;
                return acervo;
            });

            grupo.ativo = true;
            $scope.categorias = [];

        }

        /**
         * @method ativarAcervo
         * @param {*} acervo 
         */
        function ativarAcervo(acervo) {

            $scope.acervos = _.map($scope.acervos, function (acervo) {
                acervo.ativo = false;
                return acervo;
            });

            acervo.ativo = true;

            $scope.categorias = acervo.Categoria;
        }

        AcervoTipo.obter().then(function (acervoTipos) {
            $scope.acervoTipos = acervoTipos;
        });

        angular.extend($scope, {
            listaAcervos: Acervo.query(),
            grupos: Grupo.query(),
            acervoTipos: [],
            representacoes: $scope.representacoes,
            representacaoSelecionada: $scope.representacaoSelecionada,
            editandoAcervo: {
                'manutencao': false,
                'distancia_max': 0,
                'atualiza_kml': 0,
                'tam_icone': 24,
                'tam_label': 16
            },
            editandoGrupo: {},
            editandoCategoria: {},
            // Funções:
            salvarAcervo: salvarAcervo,
            salvarCategoria: salvarCategoria,
            salvarGrupo: salvarGrupo,
            ativarAcervo: ativarAcervo,
            ativarGrupo: ativarGrupo,
            selecionarRepresentacao: selecionarRepresentacao
        });


    }

    angular.module('s4c.controllers.AdminCamadasCtrl', [
        's4c.services.Acervo',
        's4c.services.Grupo',
        's4c.services.Categoria'
    ])
        .controller('AdminCamadasCtrl', AdminCamadasCtrl);

    AdminCamadasCtrl.$inject = ['$scope', '$state', 'Acervo', 'Grupo', 'Categoria',
        '$mdDialog', 'CSS_SLIDER', 'AcervoTipo', '$rootScope', 'Base'];
}());