Sindbad~EG File Manager
{"version":3,"file":"static/js/824.0bcf08ea.chunk.js","mappings":"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","sources":["features/product/productActions.js","pages/Products/AddProducts.js"],"sourcesContent":["import axios from 'axios';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { baseURL } from 'src/constants/baseURL';\nimport secureLocalStorage from 'react-secure-storage';\n\nconst token = secureLocalStorage.getItem('userToken');\n\nexport const createProduct = createAsyncThunk(\n 'products/create',\n async (data, { rejectWithValue }) => {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n };\n\n axios.post(`${baseURL}/product`, data, config).then((res) => {\n console.log('Product Action', res?.data);\n });\n } catch (error) {\n if (error.response && error.response.data.message) {\n return rejectWithValue(error.response.data.message);\n }\n }\n }\n);\n\nexport const getProductsForBrand = createAsyncThunk(\n 'products/get',\n async ({ id }, { rejectWithValue }) => {\n console.log('[getProductsForBrand]', id);\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n };\n\n const { data } = await axios.get(`${baseURL}/product/${id}`, config);\n if (data) {\n console.log('[getProductsForBrand]', data);\n return data;\n }\n } catch (error) {\n if (error.response && error.response.data.message) {\n return rejectWithValue(error.response.data.message);\n }\n }\n }\n);\n\nexport const getAllProducts = createAsyncThunk(\n 'products/getAll',\n async ({}, { rejectWithValue }) => {\n // console.log(\"Product Action\", data, new Date());\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n };\n\n const { data } = await axios.get(`${baseURL}/products`, config);\n if (data) {\n // console.log(\"[getAllProducts admin]\", data.products);\n return data.products;\n }\n } catch (error) {\n if (error.response && error.response.data.message) {\n return rejectWithValue(error.response.data.message);\n }\n }\n }\n);\n\nexport const editProduct = createAsyncThunk(\n 'product/edit',\n async ({ id, values }, { rejectWithValue }) => {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n };\n console.log('Action', id, values);\n const res = await axios.put(`${baseURL}/product/${id}`, values, config);\n\n if (res?.data) {\n console.log('Product edit payload', res?.data);\n }\n return res?.data;\n } catch (error) {\n if (error.response) {\n return rejectWithValue(error?.response?.data?.error?.message);\n } else {\n return rejectWithValue(error.message);\n }\n }\n }\n);\n\nexport const deleteProduct = createAsyncThunk('product/delete', async (id, { rejectWithValue }) => {\n try {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n };\n const { data } = await axios.delete(`${baseURL}/product/${id}`, config);\n\n if (data) {\n // console.log(\"Product delete payload\", data);\n return data;\n }\n } catch (error) {\n if (error.response) {\n return rejectWithValue(error?.response?.data?.error?.message);\n } else {\n return rejectWithValue(error.message);\n }\n }\n});\n\nexport const sortProducts = createAsyncThunk(\n 'product/sort',\n async ({ sortBy, sort }, { rejectWithValue }) => {\n try {\n let url = baseURL + '/product/filter';\n\n if (sortBy) {\n url = baseURL + `/product/filter?sortBy=${sortBy}&sort=${sort}`;\n }\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n };\n const { data } = await axios.get(`${url}`, config);\n\n if (data) {\n console.log('Product sort payload', data);\n return data;\n }\n } catch (error) {\n if (error.response) {\n return rejectWithValue(error?.response?.data?.error?.message);\n } else {\n return rejectWithValue(error.message);\n }\n }\n }\n);\n","import { useRef, useState, useEffect } from 'react';\nimport {\n ButtonGroup,\n Button,\n Container,\n Stack,\n Grid,\n InputLabel,\n MenuItem,\n Select,\n Typography,\n FormControl,\n TextField,\n Card,\n CardContent,\n IconButton,\n Checkbox,\n FormControlLabel\n} from '@mui/material';\nimport { Form, Field } from 'react-final-form';\nimport { toast } from 'react-toastify';\nimport TextInput from '../../components/TextInput/TextInput';\nimport Iconify from '../../components/iconify';\nimport { useNavigate } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createProduct } from 'src/features/product/productActions';\n\nimport { baseURL } from 'src/constants/baseURL';\nimport axios from 'axios';\nimport secureLocalStorage from 'react-secure-storage';\n\n// import awsS3 from \"react-s3\";\n\nwindow.Buffer = window.Buffer || require('buffer').Buffer;\n\n// const ReactS3Client = new S3(S3_BUCKET_CONFIG);\n\nconst sizeTypes = {\n upper: ['XS', 'S', 'M', 'L', 'XL'],\n lower: [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40],\n feet: [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]\n};\n\nconst AddProducts = () => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const [brandData, setBrandData] = useState([]);\n const [categoryData, setCategoryData] = useState([]);\n const [sizeChartImage, setSizeChartImage] = useState('');\n\n const { brandInfo, userInfo } = useSelector((state) => state.auth);\n\n const role = userInfo?.user_role;\n\n const brandId = brandInfo?.brand_id;\n\n const token = secureLocalStorage.getItem('userToken');\n\n useEffect(() => {\n axios\n .get(`${baseURL}/brands/`, {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n })\n .then((res) => {\n setBrandData(res.data);\n })\n .catch((err) => {\n console.log('[Error]', err);\n });\n }, [token]);\n\n useEffect(() => {\n axios\n .get(`${baseURL}/category/`, {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`\n }\n })\n .then((res) => {\n setCategoryData(res?.data);\n })\n .catch((err) => {\n console.log('[Error]', err);\n });\n }, [token]);\n\n const fileInput = useRef();\n const fileSizeChartInput = useRef();\n const [selectedImages, setSelectedImages] = useState([]);\n\n const onSubmit = () => {\n console.log('Submit');\n };\n\n // const onSubmit = async (data) => {\n // if (data) {\n // let images = [];\n // let sizeCharImg = \"\";\n // if (sizeChartImage) {\n // sizeCharImg = await fileToS3Upload(\n // sizeChartImage,\n // \"SizeCharts\"\n // );\n // }\n // await Promise.all(\n // selectedImages.map(async (file) => {\n // try {\n // await fileToS3Upload(file, \"products\").then(\n // async ({ url, key }) => {\n // images.push(url);\n // }\n // );\n // } catch (error) {\n // console.log(\"error\" + error);\n // }\n // })\n // );\n\n // if (images.length > 0) {\n // await dispatch(\n // createProduct({\n // ...data,\n // sizeChart: sizeCharImg.url,\n // imgUrl: images,\n // })\n // ).unwrap();\n // }\n // toast.success(\"Product created!\");\n // navigate(`/dashboard/${role}/products`, { replace: true });\n // } else {\n // toast.error(\"Product can't be created!!\");\n // }\n // };\n\n const handleRemove = (item) => {\n const filter = selectedImages.filter((i) => i !== item);\n setSelectedImages(filter);\n };\n\n return (\n <Container>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n <Typography variant=\"h4\" sx={{ mb: 5 }}>\n Create Products\n </Typography>\n\n <Button\n variant=\"contained\"\n onClick={() =>\n navigate(`/dashboard/${role}/products`, {\n replace: true\n })\n }\n >\n Back To Product\n </Button>\n </Stack>\n\n <Form\n onSubmit={onSubmit}\n initialValues={{\n name: '',\n category: '',\n brand: userInfo?.user_role === 'brand' ? brandId : '',\n productCode: '',\n color: '',\n size: [],\n price: 0,\n quantity: 1,\n discount: 0,\n description: '',\n imgUrl: []\n }}\n validate={(values) => {\n console.log('[validate]', values.size);\n const errors = {};\n if (!values.name) {\n errors.name = 'Name is required!';\n }\n if (!values.category) {\n errors.category = 'Category is required!';\n }\n if (!values.brand && userInfo?.user_role !== 'brand') {\n errors.brand = 'Brand name is required!';\n }\n if (values.price === 0) {\n errors.price = 'Price is required!';\n }\n if (!values.description) {\n errors.description = 'Description is required!';\n }\n if (!values.quantity) {\n errors.quantity = 'Quantity is required!';\n }\n if (!values.productCode) {\n errors.productCode = 'ProductCode is required!';\n }\n if (!values.color) {\n errors.color = 'Color is required!';\n }\n console.log('ere', errors);\n\n return errors;\n }}\n mutators={{\n onChangeQuantity: (args, state, utils) => {\n const calculateQty = (prev) => {\n if (prev > 1 || (prev === 1 && args == 1)) {\n const qty = Number(prev ?? 1) + Number(args);\n\n return qty;\n }\n\n return 1;\n };\n utils.changeValue(state, 'quantity', (prev) => calculateQty(prev));\n },\n onChangeCheckBox: (args, state, utils) => {\n const sizeHandler = (values) =>\n values.indexOf(args[0]) !== -1\n ? values.filter((value) => value !== args[0])\n : [...values, args[0]];\n utils.changeValue(state, 'size', (prev) => sizeHandler(prev));\n }\n }}\n render={({ handleSubmit, errors, form }) => (\n <form onSubmit={handleSubmit}>\n <Grid container spacing={4}>\n <Grid item xs={6}>\n <Field fullWidth name=\"name\">\n {(props) => <TextInput label={'Product Name'} {...props} />}\n </Field>\n </Grid>\n\n {/* <Grid item xs={6}>\n <Field fullWidth name=\"category\">\n {(props) => (\n <TextInput\n label={\"Product Category\"}\n type={\"text\"}\n {...props}\n />\n )}\n </Field>\n </Grid> */}\n\n <Grid item xs={6}>\n <Field fullWidth component=\"select\" name=\"category\">\n {({ input, meta, options }) => (\n <FormControl fullWidth>\n <InputLabel id=\"brand-label\">Product Category</InputLabel>\n <Select\n labelId=\"brand-label\"\n name=\"category\"\n options={categoryData}\n MenuProps={{\n style: {\n maxHeight: 300\n }\n }}\n {...input}\n >\n {categoryData?.map((x, index) => {\n return (\n <MenuItem key={index} value={x._id}>\n {x.categoryName}\n </MenuItem>\n );\n })}\n </Select>\n </FormControl>\n )}\n </Field>\n </Grid>\n\n {userInfo?.user_role !== 'brand' && (\n <Grid item xs={4} mt={3}>\n <Field fullWidth name=\"brand\">\n {({ input, meta, options }) => (\n <FormControl fullWidth>\n <InputLabel id=\"brand-label\">Brand Name</InputLabel>\n <Select\n labelId=\"brand-label\"\n name=\"brand\"\n options={brandData}\n onChange={(val) => input.onChange(val)}\n MenuProps={{\n style: {\n maxHeight: 300\n }\n }}\n >\n {brandData?.brands?.map((x, index) => {\n return (\n <MenuItem key={index} value={x._id}>\n {x.brandName}\n </MenuItem>\n );\n })}\n </Select>\n </FormControl>\n )}\n </Field>\n </Grid>\n )}\n\n <Grid item xs={4} mt={3}>\n <Field fullWidth name=\"productCode\">\n {(props) => <TextInput label={'Product Code'} {...props} />}\n </Field>\n </Grid>\n\n <Grid item xs={4} mt={3}>\n <Field fullWidth name=\"color\">\n {(props) => <TextInput label={'Product Color'} {...props} />}\n </Field>\n </Grid>\n\n <Grid item xs={userInfo?.user_role !== 'brand' ? 4 : 6} mt={3}>\n <Field fullWidth name=\"price\">\n {(props) => (\n <TextInput\n label={'Price'}\n type={'number'}\n style={{ paddingRight: 0 }}\n InputProps={{\n inputProps: {\n min: 0\n }\n }}\n {...props}\n />\n )}\n </Field>\n </Grid>\n\n <Grid item xs={userInfo?.user_role !== 'brand' ? 4 : 6} mt={3}>\n <Field fullWidth name=\"quantity\">\n {(props) => (\n <TextInput\n label={'Available Quantity'}\n type={'number'}\n style={{ paddingRight: 0 }}\n InputProps={{\n inputProps: {\n max: 100,\n min: 0\n },\n endAdornment: (\n <ButtonGroup\n size=\"small\"\n aria-label=\"small button group\"\n orientation=\"vertical\"\n >\n <Button\n color=\"primary\"\n variant=\"text\"\n onClick={() => form.mutators.onChangeQuantity(1)}\n >\n <Iconify icon=\"eva:plus-fill\" />\n </Button>\n <Button\n color=\"error\"\n variant=\"text\"\n onClick={() => form.mutators.onChangeQuantity(-1)}\n >\n <Iconify icon=\"eva:minus-fill\" />\n </Button>\n </ButtonGroup>\n )\n }}\n {...props}\n />\n )}\n </Field>\n </Grid>\n {/* <Grid item xs={userInfo?.user_role !== \"brand\" ? 4 : 6} mt={0}>\n <Field fullWidth name=\"size\" type=\"checkbox\" mt={3}>\n {(props) => {\n const sizeTypeVal = categoryData?.find(\n (item) => item._id === form.getState().values[\"category\"]\n );\n return (\n <FormControl fullWidth>\n Available Size:\n <div\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n // justifyContent: \"space-evenly\",\n flexWrap: \"wrap\",\n padding: 10,\n }}\n >\n {categoryData.find(\n (item) =>\n item._id === form.getState().values[\"category\"]\n ) !== \"\" &&\n sizeTypes[sizeTypeVal?.sizeType]?.map(\n (size, index) => (\n <FormControlLabel\n control={\n <Checkbox\n name={size}\n onChange={(event) => {\n form.mutators.onChangeCheckBox(size);\n }}\n {...props}\n />\n }\n label={size}\n key={index}\n />\n )\n )}\n </div>\n </FormControl>\n );\n }}\n </Field>\n </Grid> */}\n\n <Grid item xs={userInfo?.user_role !== 'brand' ? 4 : 6} mt={3}>\n <Field fullWidth name=\"discount\">\n {(props) => (\n <TextInput\n label={'Discount'}\n type={'number'}\n style={{ paddingRight: 0 }}\n InputProps={{\n inputProps: {\n min: 0\n }\n }}\n {...props}\n />\n )}\n </Field>\n </Grid>\n\n {categoryData.find((item) => item._id === form.getState().values['category']) && (\n <Grid item xs={userInfo?.user_role !== 'brand' ? 12 : 6}>\n <Field fullWidth name=\"size\" type=\"checkbox\">\n {(props) => (\n <FormControl fullWidth>\n Available Size:\n <Grid\n item\n lg={12}\n // style={{\n // display: \"flex\",\n // flexDirection: \"row\",\n // justifyContent: \"space-evenly\",\n // padding: 10,\n // marginRight: 0,\n // }}\n >\n {categoryData.find(\n (item) => item._id === form.getState().values['category']\n ) !== '' &&\n sizeTypes[\n categoryData.find(\n (item) => item._id === form.getState().values['category']\n )?.sizeType\n ]?.map((size, index) => (\n <FormControlLabel\n control={\n <Checkbox\n name={size}\n onChange={(event) => {\n form.mutators.onChangeCheckBox(size);\n }}\n {...props}\n />\n }\n label={size}\n key={index}\n />\n ))}\n </Grid>\n </FormControl>\n )}\n </Field>\n </Grid>\n )}\n\n <Grid item xs={12}>\n <Field\n name=\"description\"\n render={({ input }) => (\n <TextField\n fullWidth\n {...input}\n label=\"Product Description\"\n multiline\n rows={6}\n />\n )}\n />\n </Grid>\n\n <Typography variant=\"h4\" sx={{ marginTop: 5, marginLeft: 5 }}>\n Upload Images:\n </Typography>\n <Grid\n item\n xs={12}\n style={{\n flexDirection: 'row',\n display: 'flex'\n }}\n >\n {selectedImages?.length > 0 &&\n selectedImages?.map((item) => (\n <>\n <Card\n sx={{\n width: 150,\n height: 150,\n justifyContent: 'center',\n alignContent: 'center',\n display: 'grid',\n marginRight: 5\n }}\n >\n <Iconify\n icon=\"mdi:close-circle-outline\"\n sx={{\n width: 25,\n height: 25,\n position: 'absolute',\n right: 5,\n top: 5,\n zIndex: 9999\n }}\n onClick={() => handleRemove(item)}\n />\n <CardContent>\n <img src={URL.createObjectURL(item)} alt=\"\" />\n </CardContent>\n </Card>\n </>\n ))}\n <Card\n sx={{\n width: 150,\n height: 150,\n justifyContent: 'center',\n alignContent: 'center'\n }}\n >\n <CardContent style={{ justifyContent: 'center' }}>\n <input\n ref={fileInput}\n style={{ display: 'none' }}\n type=\"file\"\n accept=\"image/*\"\n onChange={(e) => setSelectedImages((prev) => [...prev, e.target.files[0]])}\n multiple={true}\n />\n <IconButton onClick={() => fileInput.current.click()}>\n <Iconify icon=\"mdi:file-image-plus-outline\" sx={{ width: 80, height: 80 }} />\n </IconButton>\n </CardContent>\n </Card>\n </Grid>\n\n <Typography variant=\"h4\" sx={{ marginTop: 5, marginLeft: 5 }}>\n Upload Size Chart <span style={{ color: '#b2b2b2' }}>(optional)</span>:\n </Typography>\n <Grid\n item\n xs={12}\n style={{\n flexDirection: 'row',\n display: 'flex'\n }}\n >\n {sizeChartImage && (\n <Card\n sx={{\n width: 150,\n height: 150,\n justifyContent: 'center',\n alignContent: 'center',\n display: 'grid',\n marginRight: 5\n }}\n >\n <Iconify\n icon=\"mdi:close-circle-outline\"\n sx={{\n width: 25,\n height: 25,\n position: 'absolute',\n right: 5,\n top: 5,\n zIndex: 9999\n }}\n onClick={() => setSizeChartImage('')}\n />\n <CardContent>\n <img src={URL.createObjectURL(sizeChartImage)} />\n </CardContent>\n </Card>\n )}\n <Card\n sx={{\n width: 150,\n height: 150,\n justifyContent: 'center',\n alignContent: 'center'\n }}\n >\n <CardContent style={{ justifyContent: 'center' }}>\n <input\n ref={fileSizeChartInput}\n style={{ display: 'none' }}\n type=\"file\"\n accept=\"image/*\"\n onChange={(e) => setSizeChartImage(() => e.target.files[0])}\n />\n <IconButton onClick={() => fileSizeChartInput.current.click()}>\n <Iconify icon=\"mdi:file-image-plus-outline\" sx={{ width: 80, height: 80 }} />\n </IconButton>\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n <Grid container direction=\"row\" justifyContent=\"center\" alignItems=\"center\" m={4}>\n <Button variant=\"contained\" size=\"large\" type=\"submit\">\n Save\n </Button>\n </Grid>\n </form>\n )}\n />\n </Container>\n );\n};\n\nexport default AddProducts;\n"],"names":["token","secureLocalStorage","createAsyncThunk","async","data","rejectWithValue","config","headers","Accept","Authorization","axios","baseURL","then","res","console","log","error","response","message","id","products","values","sortBy","sort","url","window","Buffer","require","sizeTypes","upper","lower","feet","navigate","useNavigate","brandData","setBrandData","useDispatch","useState","categoryData","setCategoryData","sizeChartImage","setSizeChartImage","brandInfo","userInfo","useSelector","state","auth","role","user_role","brandId","brand_id","useEffect","catch","err","fileInput","useRef","fileSizeChartInput","selectedImages","setSelectedImages","direction","alignItems","justifyContent","mb","variant","sx","onClick","replace","onSubmit","initialValues","name","category","brand","productCode","color","size","price","quantity","discount","description","imgUrl","validate","errors","mutators","onChangeQuantity","args","utils","changeValue","prev","Number","calculateQty","onChangeCheckBox","sizeHandler","indexOf","filter","value","render","handleSubmit","form","container","spacing","item","xs","fullWidth","props","label","component","input","meta","options","labelId","MenuProps","style","maxHeight","map","x","index","_id","categoryName","mt","onChange","val","brands","brandName","type","paddingRight","InputProps","inputProps","min","max","endAdornment","orientation","icon","find","getState","lg","sizeType","control","event","multiline","rows","marginTop","marginLeft","flexDirection","display","length","width","height","alignContent","marginRight","position","right","top","zIndex","i","handleRemove","src","URL","createObjectURL","alt","ref","accept","e","target","files","multiple","current","click","m"],"sourceRoot":""}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists