Source: managers/PlanejamentoManager.js

/**
 * @ngdoc managers
 * @name PlanejamentoManager
 * @module s4c.managers.PlanejamentoManager
 *
 * @description
 * `PlanejamentoManager` Componente para comunicação entre uma página html qualquer e o controller da diretiva
 * 
 * 
 */
(function () {
    'use strict';

    function PlanejamentoManager(MainState, PlanejamentoDesenhoService, MapaService) {
        return {
            'ativo': false,
            'zindex': 30,
            'marker': null,
            /**
             * @method abrir
             * @param {*} payload 
             * @param {*} ponto 
             * @param {*} flag 
             */
            'abrir': function (payload, ponto, flag) {
                this.fechar();
                var self = this;

                var planejamento = MainState.getDirective('planejamento');
                var PlanejamentoManager = MainState.getManager('PlanejamentoManager');
                var usuario = MainState.getManager('UserInfo');

                if (this.ativo) {
                    planejamento.fecharPlanejamento();
                }

                if (!ponto && flag) {
                    PlanejamentoManager.ativo = true;
                    planejamento.ativo = true;

                    planejamento.abrirPlanejamento({
                        draggable: function () {
                        },
                        marker: {
                            getLatLng: function () {
                                return L.latLng(
                                    JSON.parse(payload.geojson).coordinates.reverse()
                                );
                            }
                        }
                    }, payload, usuario);

                } else if ((!ponto && !flag) && !payload) {
                    MapaService.colocarIcon(function (obj) {
                        self.marker = obj.marker;
                        PlanejamentoManager.ativo = true;
                        planejamento.ativo = true;
                        planejamento.abrirPlanejamento(obj, payload, usuario);
                    });
                } else {
                    PlanejamentoManager.ativo = true;
                    planejamento.ativo = true;
                    planejamento.abrirPlanejamento(ponto, payload, usuario);
                }
                MainState.detalhamentosAtivos.planejamento = this;
            },
            /**
             * @method fechar
             * @param {*} limpar 
             */
            'fechar': function (limpar) {
                PlanejamentoDesenhoService.state.isVisible = false;
                var planejamento = MainState.getDirective('planejamento');
                var PlanejamentoManager = MainState.getManager('PlanejamentoManager');
                var usuario = MainState.getManager('UserInfo');

                var desenhando = planejamento.fecharPlanejamento();

                if (this.marker) {
                    this.marker._map.removeLayer(this.marker);
                }

                if (desenhando) {
                    MapaService.removerControleDesenho();
                    MapaService.removerPontosPlanejamento();
                }

                this.ativo = false;
                this.marker = null;
                delete MainState.detalhamentosAtivos.planejamento;
            },
            /**
             * @method ativarCamada
             * @param {*} obj 
             * @param {*} cb 
             */
            'ativarCamada': function (obj, cb) {
                MapaService.ativarCamada(obj, cb);
            },
            /**
             * @method desativarCamada
             * @param {*} obj 
             * @param {*} camada 
             */
            'desativarCamada': function (obj, camada) {
                MapaService.desativarCamada(obj, camada);
            },
            /**
             * @method ativarKml
             * @param {*} obj 
             * @param {*} cb 
             */
            'ativarKml': function (obj, cb) {
                MapaService.ativarKml(obj, cb);
            },
            /**
             * @method pegarGeometrias
             */
            'pegarGeometrias': function () {
                return MapaService.pegarGeometrias();
            },
            /**
             * @method pegarPontosDaRota
             */
            'pegarPontosDaRota': function () {
                return MapaService.pegarPontosDaRota()
            }
        };
    }

    PlanejamentoManager.$inject = ['MainState', 'PlanejamentoDesenhoService', 'MapaService'];

    angular.module('s4c.managers')
        .service('PlanejamentoManager', PlanejamentoManager);
})();