import React, { useState, useContext } from "react"; import { MaterialIcons } from "@expo/vector-icons"; import { StyleSheet, Text, View } from "react-native"; import { Form, SubmitButton } from "../components/forms"; import { showMessage } from "react-native-flash-message"; import { dimensions, scaleDimsFromWidth } from "../config/dimensions"; import FormDatePicker from "../components/forms/FormDatePicker"; import colors from "../config/colors/"; import moment from "moment"; import { TouchableOpacity } from "react-native-gesture-handler"; import { FontAwesome5 } from "@expo/vector-icons"; import { MaterialCommunityIcons } from "@expo/vector-icons"; import { AuthContext } from "../auth/context"; import { Shadow } from "react-native-shadow-2"; import { AssembleIngestionPluvRegistration } from "../components/forms/AssembleIngestionObject"; import OnSubmitAwaitModal from "../components/forms/OnSubmitAwaitModal"; import OnSubmitMessageModal from "../components/forms/OnSubmitMessageModal"; const dims = scaleDimsFromWidth(85, 85, 25); function Institution({ user }) { const institutionMap = { E: "Escola", D: "Defesa Civil", N: "Não governamental", O: "Outra", N: "Nenhuma", }; return ( Tipo de instituição: {user.institutiontype ? institutionMap[user.institutiontype] : "Tipo de instituição não informado"} Nome da instituição: {user.institution ? user.institution : "Nome da instituição não informado"} ); } function LocationPicker({ navigation, location, setLocationAddr, setGeoLocation, pluviometer, }) { return ( {pluviometer && ( {pluviometer?.address ? pluviometer.address : "Erro ao carregar endereço"} )} {!pluviometer && ( navigation.navigate("FormMap", { setLocationAddr: setLocationAddr, setGeoLocation: setGeoLocation, }) } > {location} )} ); } function PluvDateTimePicker({ onDateChange, onTimeChange, date, time, formTypeFace, pluviometer, }) { return ( {!pluviometer && ( )} {pluviometer && ( {pluviometer.regiterDate ? pluviometer.regiterDate : "Erro ao carregar a data"} )} ); } function PluviometerRegisterScreen(props) { const [date, setDate] = useState(moment()); const [time, setTime] = useState(moment()); const [location, setLocationAddr] = useState("Defina o endereço no mapa"); const [coordinates, setCoordinates] = useState(null); const { user, _ } = useContext(AuthContext); const [showAwaitModal, setShowAwaitModal] = useState(false); const [showMessageModal, setShowMessageModal] = useState(false); const [apiMessage, setApiMessage] = useState(null); const sendForm = async (date, time, user, address, coordinates) => { const isSent = await AssembleIngestionPluvRegistration( date, time, user, address, coordinates ); if (isSent) { setApiMessage(isSent.ok); } return apiMessage; }; return (
{ setShowAwaitModal(true); sendForm(date, time, user, location, coordinates).then((isSent) => { setShowAwaitModal(false); setShowMessageModal(true); }); }} > Cadastro do Pluviômetro Data do cadastro: setDate(value)} onTimeChange={(value) => setTime(value)} date={date} time={time} formTypeFace={"pluviometerRegister"} pluviometer={user.pluviometer} /> Endereço do pluviômetro*: {!user.pluviometer && ( )}
); } const styles = StyleSheet.create({ image: { width: dims.width * 0.8, height: dims.height * 0.8, justifyContent: "center", alignItems: "center", }, label: { fontSize: dimensions.text.secondary, marginBottom: 12, fontWeight: "bold", textAlign: "left", color: colors.secondary, }, subText: { color: colors.subText, fontSize: 16, alignSelf: "center", fontWeight: "500", paddingLeft: 16, }, title: { marginVertical: 24, fontSize: 18, fontWeight: "bold", textAlign: "center", color: colors.primary, }, date: { paddingLeft: 12, flexDirection: "column", justifyContent: "center", }, }); export default PluviometerRegisterScreen;