import React, { useEffect, useState } from 'react';
import { Row, Col, Table, Divider, Tooltip } from "antd";
import {
RedoOutlined,
FileExcelOutlined,
ArrowLeftOutlined,
CheckCircleOutlined,
} from "@ant-design/icons";
import 'moment/locale/es-mx';
import { useQuery } from "../../../hooks";
import { firestore } from "../../../services/firebase";
import { useHistory } from 'react-router-dom';
import { ViewLoading } from '../../../components';
import exportarExcelJS from '../../../services/exportarExcel';
import { doc, getDoc } from "firebase/firestore";
import { SimpleTableLayout } from '../../../components/layouts';
const ResultadoEventoAccion = () => {
const query = useQuery();
const id = query.get("id");
const url = "/administracion/eventos";
const history = useHistory();
const [ evento, setEvento ] = useState(null);
const [ filteredResults, setFilteredResults ] = useState([])
const [ searchInput, setSearchInput ] = useState('');
const defaultText = prop => prop || ---;
const RenderAccion = (item, val) => {
const urlEvento = `https://laud-red.web.app/evento-laud?id=${id}&uid=${item?.uid}`;
const tel = '+52'+item?.telefono;
const waParams1 = `Hola, aún falta tu participación en el siguiente evento en ${evento?.redSocial}: ${urlEvento}`;
const waParams2 = `Hola, gracias por haber participado en el evento de ${evento?.redSocial }: *"${evento?.nombre}"*`;
const url1 = `https://wa.me/${tel}?text=${encodeURIComponent(waParams1)}`;
const url2 = `https://wa.me/${tel}?text=${encodeURIComponent(waParams2)}`;
if( evento?.resultado[item?.uid]?.includes(val) ) {
return (
window.open(url2, '_blank')}
>
)
} else {
return (
window.open(url1, '_blank')}
>
)
}
};
const columns = [
{
title: "Usuario",
dataIndex: "nombre",
key: "nombre",
render: defaultText,
},
{
title: "Recibió",
dataIndex: "recibio",
key: "recibio",
align: 'center',
render: (_, item )=> RenderAccion(item, "recibio")
},
{
title: "Click",
dataIndex: "click",
key: "click",
align: 'center',
render: (_, item )=> RenderAccion(item, "click")
},
{
title: "Me gusta",
dataIndex: "likes",
key: "likes",
align: 'center',
render: (_, item )=> RenderAccion(item, "likes")
},
{
title: "Compartir",
dataIndex: "shares",
key: "shares",
align: 'center',
render: (_, item )=> RenderAccion(item, "shares")
},
{
title: "Comentario",
dataIndex: "comments",
key: "comments",
align: 'center',
render: (_, item )=> RenderAccion(item, "comments")
},
{
title: "Retweets",
dataIndex: "retweets",
key: "retweets",
align: 'center',
render: (_, item )=> RenderAccion(item, "retweets")
},
];
const multipleButtonData = [
{
text: "Volver",
to: () => history.push(url),
icon: ,
props: { disabled: false, type: 'primary', }
},
{
text: "Generar reporte",
to: () => generarReporte(),
icon: ,
props: { disabled: false, style: { background: '#107038', color: '#fff', border: 'none' } }
}
];
const onSearch = (searchValue) => {
setSearchInput(searchValue);
if( searchValue !== '' ) {
const filteredData = evento?.usuarios?.filter((item) => {
return Object.values(item).join('').toLowerCase().includes(searchValue.toLowerCase());
})
setFilteredResults(filteredData)
} else {
setFilteredResults(evento?.usuarios)
}
};
const generarReporte = async () => {
try {
const datos = [];
const usuarios = evento?.usuarios;
for( let i = 0; i < usuarios.length; i++ ) {
datos.push({
nombre: usuarios[i]?.nombre,
recibio: evento?.resultado[usuarios[i].uid]?.includes('recibio') ? 1 : 0,
click: evento?.resultado[usuarios[i].uid]?.includes('click') ? 1 : 0,
likes: evento?.resultado[usuarios[i].uid]?.includes('likes') ? 1 : 0,
shares: evento?.resultado[usuarios[i].uid]?.includes('shares') ? 1 : 0,
comments: evento?.resultado[usuarios[i].uid]?.includes('comments') ? 1 : 0,
retweets: evento?.resultado[usuarios[i].uid]?.includes('retweets') ? 1 : 0,
})
}
await exportarExcelJS(
columns,
datos,
'reporte evento acción',
evento?.nombre,
`Descripción: ${evento?.descripcion} - Red social: ${evento?.redSocial} `,
'/LAUD-Logotipo.png',
""
)
} catch (error) {
console.log('error al generar reporte: ', error)
}
};
// Obtener detalles del evento.
useEffect(() => {
let mounted = true;
if( mounted ) {
try {
setTimeout( async () => {
const docRef = doc(firestore, "eventos", id);
const docSnap = await getDoc(docRef);
setEvento(docSnap.data());
}, 0);
} catch (error) {
console.log('error al obtener evento: ', error);
}
};
return () => mounted = false;
}, [id] );
if( !evento ) return ;
return (
<>
{evento?.nombre}
1 ? filteredResults : evento?.usuarios?.sort((a, b) => a?.nombre > b?.nombre ? 1 : -1) }
/>
>
)
}
export default ResultadoEventoAccion