Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4707 | Rev 4981 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useEffect, useState } from 'react'
import axios from '../../utils/axios'
import { useDispatch } from 'react-redux'
import { addNotification } from '../../redux/notification/notification.actions'

const EventsList = () => {
    const [events, setEvents] = useState([])
    const [tasks, setTasks] = useState([])
    const dispatch = useDispatch()

    const getEvents = async () => {
        try {
            const { data: response } = await axios.get('/helpers/next-events')

            if (!response.success) {
                dispatch(addNotification({ style: 'danger', message: response.data }))
                return
            }

            const nextTasks = response.data.filter(event => event.type === 'task')
            const nextEvents = response.data.filter(event => event.type === 'event')

            setTasks(nextTasks)
            setEvents(nextEvents)

        } catch (error) {
            dispatch(addNotification({ style: 'danger', message: 'Ha ocurrido un error' }))
            console.log(`Error: ${error.message}`)
        }
    }

    useEffect(() => {
        getEvents()
    }, [])

    return (
        <>
            <div className='peopleYouMayKnow'>
                <div className="sd-title d-flex align-items-center justify-content-between">
                    <h3>Proximos eventos</h3>
                </div>
                <div className="d-flex flex-column" style={{ gap: '.5rem' }}>
                    {events.length
                        ? events.map((event) => {
                            const eventStart = new Date(event.start).toLocaleString()
                            const eventEnd = new Date(event.end).toLocaleString()

                            return (
                                <a
                                    key={event.id}
                                    href={event.url}
                                    target='_blank'
                                    rel="noreferrer"
                                >
                                    <div className='calendar-event' style={{ color: event.textColor, background: event.backgroundColor }}>
                                        <h4>
                                            <b>Evento: </b> {event.title}
                                        </h4>
                                        <span>
                                            <b>Inicio: </b>{eventStart}
                                        </span>
                                        <span>
                                            <b>Fin: </b>{eventEnd}
                                        </span>
                                    </div>
                                </a>
                            )
                        })
                        : <div className="view-more">No hay eventos</div>
                    }
                </div>
            </div>
            <div className='peopleYouMayKnow mt-2'>
                <div className="sd-title d-flex align-items-center justify-content-between">
                    <h3>Proximas tareas</h3>
                </div>
                <div className="d-flex flex-column" style={{ gap: '.5rem' }}>
                    {tasks.length
                        ? tasks.map((task) => {
                            const taskStart = new Date(task.start).toLocaleString()
                            const taskEnd = new Date(task.end).toLocaleString()

                            return (
                                <a
                                    key={task.id}
                                    href={task.url}
                                    target='_blank'
                                    rel="noreferrer"
                                >
                                    <div className='calendar-event' style={{ color: task.textColor, background: task.backgroundColor }}>
                                        <h4>
                                            <b>Tarea: </b> {task.title}
                                        </h4>
                                        <span>
                                            <b>Inicio: </b>{taskStart}
                                        </span>
                                        <span>
                                            <b>Fin: </b>{taskEnd}
                                        </span>
                                    </div>
                                </a>
                            )
                        })
                        : <div className="view-more">No hay tareas</div>
                    }
                </div>
            </div>
        </>
    )
}

export default EventsList