276 lines
8.3 KiB
JavaScript
276 lines
8.3 KiB
JavaScript
import React, { useState, useEffect } from "react";
|
|
import Dialog from "@mui/material/Dialog";
|
|
import DialogContent from "@mui/material/DialogContent";
|
|
import DialogContentText from "@mui/material/DialogContentText";
|
|
import DialogTitle from "@mui/material/DialogTitle";
|
|
import { Button, Box } from "@mui/material";
|
|
import TextField from "@mui/material/TextField";
|
|
import { NavLink, Link } from "react-router-dom";
|
|
import TextInputField from "./TextInputField";
|
|
import { Height } from "@mui/icons-material";
|
|
import HighlightOffIcon from "@mui/icons-material/HighlightOff";
|
|
import LoadingContainer from "./LoadingContainer";
|
|
//import { toast } from "react-toastify";
|
|
import { updatePlayGroundAttendence } from "./Utilities/AttendencePlaygroundUtilities";
|
|
import { updateAttendenceBlank } from "./Utilities/AttendencePlaygroundUtilities";
|
|
|
|
|
|
const PlayGroundEditContainer = ({
|
|
data,
|
|
s3Path,
|
|
imageName,
|
|
tableName,
|
|
setShowEditContainer,
|
|
rotateAngle,
|
|
type,
|
|
}) => {
|
|
// const type = "PartC";
|
|
// const type = type;
|
|
const dialogText = "This is dialog text";
|
|
const [marks, setMarks] = useState(null);
|
|
const [registerNumber, setRegisterNumber] = useState(null);
|
|
const [totalStudents, setTotalStudents] = useState(null);
|
|
const [totalPresent, setTotalPresent] = useState(null);
|
|
const [totalAbsent, setTotalAbsent] = useState(null);
|
|
const [barcode, setBarcode] = useState(null);
|
|
const [isLoading, setIsLoading] = useState(false);
|
|
const [qrcode, setQrcode] = useState(null);
|
|
const [subjectCode, setSubjectCode] = useState(null);
|
|
const [open, setOpen] = useState(true); // Set open state to true by default
|
|
const handleClose = () => {
|
|
setOpen(false);
|
|
};
|
|
console.log("image_name ======================= ", imageName)
|
|
useEffect(() => {
|
|
if (data) {
|
|
setQrcode(data?.qrcode);
|
|
setBarcode(data?.barcode);
|
|
setMarks(data?.marks);
|
|
setSubjectCode(data?.subject_code);
|
|
setRegisterNumber(data?.register_number);
|
|
setTotalAbsent(data?.total_absent)
|
|
setTotalPresent(data?.total_present)
|
|
setTotalStudents(data?.total_students)
|
|
}
|
|
console.log("the currect editor type: ", type);
|
|
}, [data]);
|
|
|
|
const updateRecordPartC = async () => {
|
|
if (!marks) {
|
|
return;
|
|
}
|
|
setIsLoading(true);
|
|
try {
|
|
const payload = {
|
|
qrcode,
|
|
barcode,
|
|
table: tableName,
|
|
s3Path,
|
|
subjectCode,
|
|
marks,
|
|
imageName,
|
|
rotateAngle,
|
|
};
|
|
const response = await fetch(
|
|
`${import.meta.env.VITE_REACT_APP_BACKEND_URL}/editPartCdata`,
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(payload),
|
|
}
|
|
);
|
|
const responseData = await response.json();
|
|
setIsLoading(false);
|
|
console.log("response data ========= ", responseData);
|
|
if (responseData?.status === "success") {
|
|
//toast.success("Record Updated Successfully ...");
|
|
setShowEditContainer(false);
|
|
}
|
|
} catch (error) {
|
|
setIsLoading(false);
|
|
//toast.error("Something Went Wrong ...");
|
|
throw new Error(error);
|
|
}
|
|
};
|
|
|
|
const updateRecordPartA = async () => {
|
|
console.log(registerNumber);
|
|
console.log(subjectCode);
|
|
console.log(barcode, qrcode);
|
|
console.log("image_name = ", imageName)
|
|
console.log(!registerNumber && !subjectCode && (!barcode || !qrcode));
|
|
if (!registerNumber && !subjectCode && (!barcode || !qrcode)) {
|
|
return;
|
|
}
|
|
setIsLoading(true);
|
|
try {
|
|
const payload = {
|
|
qrcode,
|
|
barcode,
|
|
table: tableName,
|
|
s3Path,
|
|
subjectCode,
|
|
registerNumber,
|
|
imageName,
|
|
rotateAngle,
|
|
};
|
|
const response = await fetch(
|
|
`${import.meta.env.VITE_REACT_APP_BACKEND_URL}/editPartAdata`,
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(payload),
|
|
}
|
|
);
|
|
const responseData = await response.json();
|
|
setIsLoading(false);
|
|
console.log("response data ========= ", responseData);
|
|
if (responseData?.status === "success") {
|
|
toast.success("Record Updated Successfully ...");
|
|
setShowEditContainer(false);
|
|
}
|
|
} catch (error) {
|
|
setIsLoading(false);
|
|
//toast.error("Something Went Wrong ...");
|
|
throw new Error(error);
|
|
}
|
|
};
|
|
|
|
const imageStyle = {
|
|
transform: `rotate(${rotateAngle})deg !important`,
|
|
};
|
|
|
|
console.log("Image style ====== ", imageStyle);
|
|
|
|
return (
|
|
<Dialog
|
|
open={open}
|
|
sx={{ zIndex: "fab" }}
|
|
onClose={handleClose}
|
|
maxWidth="xl"
|
|
style={{ zIndex: 100 }}
|
|
fullWidth
|
|
>
|
|
<DialogContent>
|
|
<Box className="d-flex justify-content-between align-items-start gap-4">
|
|
<Box className="d-flex flex-column" style={imageStyle}>
|
|
<img
|
|
src={`https://docs.exampaper.vidh.ai/${s3Path}`}
|
|
height={"100%"}
|
|
width={"100%"}
|
|
/>
|
|
</Box>
|
|
<Box className="py-3 d-flex flex-column justify-content-end w-100 gap-3">
|
|
{type !== "Attendence" ? (
|
|
<>
|
|
<TextInputField
|
|
value={qrcode}
|
|
setValue={setQrcode}
|
|
placeholder={"QR code"}
|
|
/>
|
|
<TextInputField
|
|
value={barcode}
|
|
setValue={setBarcode}
|
|
placeholder={"BarCode"}
|
|
/>
|
|
<TextInputField
|
|
value={subjectCode}
|
|
setValue={setSubjectCode}
|
|
placeholder={"Subject code"}
|
|
/>
|
|
</>
|
|
) : (
|
|
<>
|
|
<TextInputField
|
|
value={qrcode}
|
|
setValue={setQrcode}
|
|
placeholder={"QR code"}
|
|
/>
|
|
<TextInputField
|
|
value={subjectCode}
|
|
setValue={setSubjectCode}
|
|
placeholder={"Subject Code"}
|
|
/>
|
|
<TextInputField
|
|
value={totalStudents}
|
|
setValue={setTotalStudents}
|
|
placeholder={"Total Students"}
|
|
/>
|
|
<TextInputField
|
|
value={totalPresent}
|
|
setValue={setTotalPresent}
|
|
placeholder={"Total Present"}
|
|
/>
|
|
<TextInputField
|
|
value={totalAbsent}
|
|
setValue={setTotalAbsent}
|
|
placeholder={"Total Absent"}
|
|
/>
|
|
</>
|
|
)}
|
|
{type == "PartC" ? (
|
|
<TextInputField
|
|
value={marks}
|
|
setValue={setMarks}
|
|
placeholder={"Marks"}
|
|
/>
|
|
) : type == "PartA" ? (
|
|
<TextInputField
|
|
value={registerNumber}
|
|
setValue={setRegisterNumber}
|
|
placeholder={"Register no"}
|
|
/>
|
|
) : null}
|
|
{type == "PartC" ? (
|
|
<Button
|
|
className="bg-primary text-white p-3"
|
|
onClick={() => updateRecordPartC()}
|
|
>
|
|
Update
|
|
</Button>
|
|
) : type == "PartA" ? (
|
|
<Button
|
|
className="bg-primary text-white p-3"
|
|
onClick={() => updateRecordPartA()}
|
|
>
|
|
Update
|
|
</Button>
|
|
) : type == "Attendence" ? (
|
|
<Button
|
|
className="bg-primary text-white p-3"
|
|
onClick={() =>
|
|
updatePlayGroundAttendence(
|
|
setIsLoading,
|
|
qrcode,
|
|
subjectCode,
|
|
totalStudents,
|
|
totalPresent,
|
|
totalAbsent,
|
|
data,
|
|
setShowEditContainer
|
|
)
|
|
}
|
|
>
|
|
Update
|
|
</Button>
|
|
) : null}
|
|
<Button
|
|
className="bg-primary text-white p-3"
|
|
onClick={() => setShowEditContainer(false)}
|
|
>
|
|
Close
|
|
</Button>
|
|
</Box>
|
|
</Box>
|
|
</DialogContent>
|
|
{isLoading && <LoadingContainer />}
|
|
</Dialog>
|
|
);
|
|
};
|
|
|
|
export default PlayGroundEditContainer;
|