(function () {
    'use strict';

    angular
        .module('contestacaoApp')
        .factory('justificativaFactory', justificativaFactory);

    justificativaFactory.$inject = ['__env', 'mapsSingletonService', 'infowindowTemplates'];

    /* @ngInject */
    function justificativaFactory(__env, mapsSingletonService, infowindowTemplates) {
        let service = {
            criarMarkers: criarMarkers
        };

        return service;

        ////////////////

        function criarMarkers(listaJustificativas) {
            listaJustificativas.forEach(justificativa => {
                const latLng = [justificativa.Latitude / 1000000, justificativa.Longitude / 1000000];

                const options = new InlogMaps.MarkerOptions(latLng, true);
                options.object = justificativa;
                options.icon = new InlogMaps.MarkerIcon(`${__env.baseUrl}/${__env.appPath}images/ico_justificativa.png`, [27, 27]);
                mapsSingletonService.getMap().drawMarker('justificativa', options,
                    (event, object) => clickJustificativa(object))
            });
        }

        function clickJustificativa(justificativa) {
            if (event.type !== 'click')
                return;

            const options = new InlogMaps.PopupOptions();
            options.marker = 'justificativa';
            options.conditionMarker = item => item.Codigo === justificativa.Codigo;
            options.content = montarInfoWindowPontoJustificado(justificativa);
            mapsSingletonService.getMap().drawPopup('justificativa', options);
        }

        function montarInfoWindowPontoJustificado(justificativa) {
            //Todo: arquivo de templates para infowindow
            return infowindowTemplates.montarInfoWindowJustificativa(justificativa, montarLinkAnexo);
        }

        function montarLinkAnexo(anexo, datahora, codigoJustificativa) {
            return `${__env.relativeUrl}Setores/Setores/DownloadAnexoJustificativa?arquivo=${anexo}` +
            `&data=${datahora}&codigoJustificativa=${codigoJustificativa}`;
        }
    }

})();

