import axios from "axios"; import React, { useCallback, useEffect, useState } from "react"; import { API } from "../../data"; import { isAutheticated } from "../../auth"; import ClipLoader from "react-spinners/ClipLoader"; import { useHistory, useParams } from "react-router-dom"; import swal from 'sweetalert'; import { CButton, CCard, CCardBody, CCol, CContainer, CForm, CFormInput, CInputGroup, CInputGroupText, CRow, } from '@coreui/react' import CIcon from '@coreui/icons-react' import { cilPencil, cilSettings, cilLockLocked, cilUser, cilBell, cilLocationPin, cilAudioDescription, cilObjectGroup } from '@coreui/icons' const EditRequirement = () => { const token = isAutheticated(); const { id } = useParams() let history = useHistory(); const [areaOfInterest, setAreaOfInterest] = useState(""); const [description, setDescription] = useState(""); const [title, setTitle] = useState(""); const [imagesPreview, setImagesPreview] = useState([]); const [allimage, setAllImage] = useState([]); const [loading, setLoading] = useState(false); //fetch one requirement useEffect(async () => { const res = await axios.get(`/api/requirement/getOne/${id}`, { headers: { Authorization: `Bearer ${token}`, }, }); // console.log(res.data) setTitle(res.data.Requirement.title) setDescription(res.data.Requirement.description) setAreaOfInterest(res.data.Requirement.areaOfInterest) }, [id]); const handleImage = (e) => { setAllImage([...allimage, ...e.target.files]); // only for file preview------------------------------------ const files = Array.from(e.target.files); files.forEach((file) => { const reader = new FileReader(); reader.onload = () => { if (reader.readyState === 2) { setImagesPreview((old) => [...old, reader.result]); } }; reader.readAsDataURL(file) }); // ----------------------------------------------------------------------------- }; const handleSubmit = async () => { const myForm = new FormData(); myForm.set("title", title); myForm.set("description", description); myForm.set("areaOfInterest", areaOfInterest); allimage.forEach((Singleimage) => { myForm.append("image", Singleimage); }); if (!(title && description && areaOfInterest && allimage[0])) { alert("please fill all fields") return } setLoading(true); try { let res = await axios.put( `/api/requirement/update/${id}`, myForm, { headers: { "Content-Type": 'multipart/form-data', Authorization: `Bearer ${token}`, }, } ); if (res.data.success === true) { swal("success!", "Requirements Updated Successfully!", "success"); history.goBack(); setLoading(false); } } catch (error) { setLoading(false); alert(error) } }; const onCancel = () => { history.goBack() }; return ( <>