import React, { useContext, useEffect, useState } from "react";
import { MaterialCommunityIcons } from '@expo/vector-icons';
import { UserContext } from "../context/UserContext";
import { API } from "../environment/api";
import {
  Box, Button,
  Center, FormControl, Heading, ScrollView, VStack,FlatList, HStack,Avatar,Spacer,Text, Icon
} from "native-base";

export default function Invitados({navigation}) {


  const [isRequesting, setIsRequesting] = useState(false);
  const [invitados, setInvitados] = useState([]);
  const { user } = useContext(UserContext);
  const id = user._id;
  //const id = "6301df20dac7dcf76dcecade";
  const user_type=user.user_type;
  //const user_type="4";
  //const community_id="1";
  const community_id=user.community_id;
  const [invitado, setInvitado] = useState([]);

  useEffect(() => {

    const onRequestInvitadosData = async () => {
      setIsRequesting(true);

      try {
        if(user_type=="4"){
          const jsonResponse = await fetch(`${API.BASE_URL}/guest/findGuestCommunity/`+`${community_id}`, {
            method: "GET",
            headers: {
              'Content-Type': 'application/json'
            }
          })
  
          const response = await jsonResponse.json();
          setInvitados(response.message);
        }else{
          const jsonResponse = await fetch(`${API.BASE_URL}/guest/findGuestUser/`+`${id}`, {
            method: "GET",
            headers: {
              'Content-Type': 'application/json'
            }
          })
  
          const response = await jsonResponse.json();
          setInvitados(response.message);
        }
      } catch (error) {

      }

      setIsRequesting(false)
    }

    onRequestInvitadosData()

  })

  const deleteInvitado = async(pid) => {
    const data = {
      "_id": pid
    }

    try {

      await fetch("http://localhost:4000/guest/updateGuest", {

        cache: 'no-cache', 
        method: 'POST', 
        body: JSON.stringify(data), 
        headers: {
          'Content-Type': 'application/json'
        }
      })
      .then(response => {
        if (response.status != 201){
          console.log('ocurrio un error ');
        }else{
          return response.json(); 
        }
      })
      
    } catch (error) {
      console.log("ERROR: " + error);
    }
  }
  return (
  
       <Box>
      <Heading fontSize="xl" p="4" pb="3">
        Lista de invitados
      </Heading>
      <Button width='200' mb="4"  mt="4" ml='85' backgroundColor='tertiary.600' onPress={() => navigation.navigate('Agregar Invitado')}  icon={<Icon mb="0.5" as={<MaterialCommunityIcons name={'plus'} />} color="white" size="sm" />}>
        Agregar invitado
       </Button>
      <FlatList data={invitados} renderItem={({
      item
    }) => <Box key={item._id} borderBottomWidth="1" _dark={{
      borderColor: "gray.600"
    }} borderColor="coolGray.200" pl="4" pr="5" py="2">
            <HStack space={3} justifyContent="space-between" >
            <MaterialCommunityIcons name="account" size={48} color="#D7A86E" />
              <VStack>
                <Text _dark={{
            color: "warmGray.50"
          }} color="coolGray.800" bold>
                  {item.name+" "+item.last_name}
                </Text>
                <Text color="coolGray.600" _dark={{
            color: "warmGray.200"
          }}>
                  {"Identificación: "+item.dni}
                </Text>
                <Text color="coolGray.600" _dark={{
            color: "warmGray.200"
          }}>
                 {"Teléfono: "+item.phone}
                </Text>
                <Text color="coolGray.600" _dark={{
            color: "warmGray.200"
          }}>
                 {"Número Placa: "+item.number_plate}
                </Text>
                <Text color="coolGray.600" _dark={{
            color: "warmGray.200"
          }}>
                 {"Tipo de acceso: "+item.type_guest}
                </Text>

              </VStack>
              <Spacer />
              {user_type == 3 && <MaterialCommunityIcons name="delete" size={28} color="#7C0808" onPress={() =>{deleteInvitado(item._id)}} />}
            </HStack>
          </Box>} keyExtractor={item => item.id} />
    </Box>
      

  );

  

 
}