katoikia-app/mobile-ui/components/Invitados.js

146 lines
4.2 KiB
JavaScript

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>
);
}