import { withPageAuthRequired } from "@auth0/nextjs-auth0/client"; import Grid from '@mui/material/Grid'; import Card from '@mui/material/Card'; import CardActions from '@mui/material/CardActions'; import CardContent from '@mui/material/CardContent'; import CardMedia from '@mui/material/CardMedia'; import Button from '@mui/material/Button'; import Typography from '@mui/material/Typography'; import { useEffect, useState } from "react"; import { DataGrid, GridColDef, GridValueGetterParams } from '@mui/x-data-grid'; import Rating from '@mui/material/Rating'; import Dialog from '@mui/material/Dialog'; import DialogTitle from '@mui/material/DialogTitle'; import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import DialogActions from '@mui/material/DialogActions'; import CurrencyTextField from '@lupus-ai/mui-currency-textfield'; import TextField from '@mui/material/TextField'; import ArtistPortfolio from "../../components/Old/artistPortfolio"; import { RouterNetwork } from "mdi-material-ui"; import { useRouter } from "next/router"; import { profile } from "console"; import FileOpen from "@mui/icons-material/FileOpen"; const Profile = () => { const [profileData, setArtistData] = useState(null); const [description, setDescription] = useState(""); const [guidelines, setGuidelines] = useState(""); const [requestMessage, setRequestMessage] = useState(""); const [requestPrice, setRequestPrice] = useState(100.00); const [file, setFile] = useState(null); const handleFileChange = (event) => { const files = event.target.files; setFile(files); // Set files to state } const handleRequestMessageChange = (event) => { setRequestMessage(event.target.value); } const handleRequestPriceChange = (event) => { setRequestPrice(event.target.value); } const router = useRouter(); const [open, setOpen] = useState(false); const handleClickOpen = () => { setOpen(true); }; const handleClose = () => { setOpen(false); }; const submitRequest = async (payload) => { const formData = new FormData(); formData.append("artistId", payload.artistId); formData.append("message", payload.message); formData.append("amount", payload.amount); formData.append("file", payload.file); // Append the file to FormData const requestResponse = await fetch('/api/box/newRequest', { method: 'POST', body: formData // Pass FormData containing the file }); if(requestResponse.ok){ router.push("/dashboard/requests") } else { alert("Error submitting request") } } const getData = async () => { if(router.query.artistName!=null){ const profileResponse = await fetch('/api/discovery/artist/'+router.query.artistName); const sellerProfile = await profileResponse.json(); setArtistData(sellerProfile); setDescription(sellerProfile["description"]); setGuidelines(sellerProfile["requestGuidelines"]); } } useEffect(() => { getData() }, [router.query.artistName]); const columns: GridColDef[] = [ { field: 'message', headerName: 'Review', flex: 0.75 }, { field: 'rating', headerName: 'Rating', flex: 0.25, renderCell: (params: GridValueGetterParams) => ( ), }, ]; const rows = [ { id: 1, message: 'Great work!', rating: 5 }, { id: 2, message: 'BAD work!', rating: 1 }, { id: 3, message: 'Okay work!', rating: 4 }, { id: 4, message: 'Meh work!', rating: 2 }, { id: 5, message: 'Great work!', rating: 5 }, { id: 6, message: 'Mid work!', rating: 3 }, { id: 7, message: 'HORRIBLE work!', rating: 1 }, ]; return ( <> ) => { event.preventDefault(); const formData = new FormData(event.currentTarget); const email = formData.get("email"); const file = formData.get("file"); // Get the file object const payload = { artistId: profileData["id"], message: requestMessage, amount: requestPrice, file: file // Include the file in the payload }; submitRequest(payload); handleClose(); }, }} > New Request Please read the guidelines of submitting a request before you proceed. You can do that by closing this popup and looking at the page behind. STORE HEADER BIOGRAPHY HEADER {description} GUIDELINES HEADER {guidelines} By clicking "Start New Request" you are agreeing to the terms above and to the terms of service. [TERMS OF SERVICE] REVIEWS HEADER PORTFOLIO HEADER {profileData!=null ? ( ):null} ); }; // Protected route, checking user authentication client-side.(CSR) export default withPageAuthRequired(Profile);