import $ from "jquery";
import moment from "moment";
import format from "date-fns/format";
export const token = {
    data() {
        return {
            imagenesData: [],
            estantes: [],
            secciones: [],
            usuarios: [],
            categorias: [],
            archivos: [],
            archivosPublicos: [],
            config_header: [],
            strError: '',
            loading: false,
            filtroFecha: {
                filtroSeleccionado: "Cualquier fecha",
                fechaLimiteCalendario: moment().format("YYYY-MM-DD"),
                fechaInicial: "",
                fechaFinal: "",
                buscarFechaDias: 0,
                activar: false,
                verFiltrosBusqueda: false,
                verModalBusqueda: false
            },
            configuracionDragg: {
                animation: 200,
                ghostClass: "ghost"
            },
            clickedFiltro: {
                IDES: '',
                IDSE: '',
                IDCA: ''
            }

        }
    },
    created() {
        const token = localStorage.getItem('access_token')
        if (token) {
            this.config_header = {
                headers: {
                    Authorization: 'Bearer ' + token
                }
            }
        }
    },
    methods: {
        async getImages(tipo) {
            this.imagenesData = await this.getDataApi(
                '/imagenes/' + tipo,
                'Se ha producido un error al cargar las imagenes.'
            )
        },
        async getEstantes() {
            this.loading = true
            this.estantes = await this.getDataApi(
                '/estantes',
                'Se ha producido un error al cargar los estantes.'
            )
            this.loading = false
        },
        async getSecciones() {
            this.loading = true
            this.secciones = await this.getDataApi(
                '/secciones',
                'Se ha producido un error al cargar las secciones.'
            )
            this.loading = false
        },
        async getCategorias() {
            this.loading = true
            this.categorias = await this.getDataApi(
                '/categorias',
                'Se ha producido un error al cargar las categorías.'
            )
            this.loading = false
        },
        async getUsuarios() {
            const id = this.$store.getters.user.id;
            this.loading = true
            this.usuarios = await this.getDataApi(
                '/usuarios/' + id,
                'Se ha producido un error al cargar los usuarios.'
            )
            this.loading = false
        },
        async getArchivos(id, perfil) {
            this.loading = true
            this.archivos = await this.getDataApi(
                '/archivos/' + id + '|' + perfil,
                'Se ha producido un error al cargar los archivos desde el servidor.'
            )
            this.loading = false
        },
        async getArchivosPublicos() {
            this.loading = true
            this.archivosPublicos = await this.getDataApi(
                '/archivosPublicos',
                'Se ha producido un error al cargar los archivos publicos desde el servidor.'
            )
            this.loading = false
        },
        getPermisos(id) {
            return this.$http
                .get(this.url_api + "/usuario/permiso/" + id, this.config_header)
                .then(response => {
                    if (response.data.response) {
                        this.permisosDatos = JSON.parse(response.data.result);

                    } else {
                        this.strError = response.data.message;
                    }
                })
                .catch(error => {
                    if (!error.status) {
                        this.strError =
                            "Whoops, parece que tenemos problemas al obtener los permisos, Network error...";
                    } else {
                        this.strError = msjError;
                    }
                });
        },
        getDataApi(ruta, msjError) {
            return new Promise((resolve, reject) => {
                this.$http
                    .get(this.url_api + ruta, this.config_header)
                    .then(response => {
                        if (response.data.response) {
                            resolve(response.data.result)
                        } else {
                            this.strError = response.data.message
                        }
                    })
                    .catch(error => {
                        // network error
                        if (!error.status) {
                            this.strError = 'Whoops, parece que tenemos problemas al obtener la información, Network error.'
                        } else {
                            this.strError = msjError

                        }
                        // reject(error)
                        console.log(error);
                    })
            })
        },
        removeModal: function (nombre) {
            $("#" + nombre).modal('hide');
        },
        toFormData(obj) {
            var formData = new FormData()
            for (var key in obj) {
                formData.append(key, obj[key])
            }
            return formData
        },
        formatoFechaCalendario(fechaInicial, fechaFinal) {
            let formattedDates = "";
            if (fechaInicial) {
                formattedDates = format(fechaInicial, "DD/MMM/YYYY");
            }
            if (fechaFinal) {
                formattedDates += " - " + format(fechaFinal, "DD/MMM/YYYY");
            }
            return formattedDates;
        }
    },
    filters: {
        // Fitrar la fecha en formato 19 jul 2019
        formatDate(value, fmt = "D MMM YYYY") {
            return value == null ? "" : moment(value, "DD-MMM-YY").format(fmt);
        }
    }
}