import React from 'react';
import {
  Card,
  CardHeader,
  CardContent,
  CardActions,
  Button
} from '@material-ui/core';
import { Event } from '../../types';
import { patch } from '../../requests';

interface PropTypes {
  event: Event;
  mutate: () => void;
}

const EventCard: React.FC<PropTypes> = ({ event, mutate }) => {
  const {
    data: {
      name,
      date,
      participants,
      conferenceId,
      attendanceId
    }
  } = event;

  const handleJoin = () => {
    // TODO: add your username to participants list
    const update = { data: { participants: [...participants, Math.random()] }}
    return patch(`/events/${event._id}`, update).then(() => mutate());
  };

  return (
    <Card variant="outlined">
      <CardHeader title={name || `Event #${event._id.slice(-4)}`} subheader={date}  />
      <CardContent>
        {conferenceId && <div> ConferenceID: {conferenceId} </div>}
        {attendanceId && <div> AttendanceID: {attendanceId} </div>}
        <div>
          Participants ({participants?.length || 0} / 3)
          <ul>
            {participants?.map(username => (
              <li> {username} </li>
            ))}
          </ul>
        </div>
      </CardContent>
      {(participants?.length || 0) < 3 && (
        <CardActions>
          <Button
            onClick={handleJoin}
            variant="contained"
            color="primary"
            size="large"
          >
            Join
          </Button>
        </CardActions>
      )}
    </Card>
  );
};

export default EventCard;
