Validation added on HBFormPage

also remove console.log checking
This commit is contained in:
ZacTohZY
2024-07-22 15:30:04 +08:00
parent 93c26478d3
commit e59b5142ab
2 changed files with 35 additions and 23 deletions

View File

@@ -10,10 +10,26 @@ import axios from "axios";
import InsertImage from '../components/InsertImage'; import InsertImage from '../components/InsertImage';
const validationSchema = Yup.object({ const validationSchema = Yup.object({
electricalBill: Yup.number().positive().required(), electricalBill: Yup.number()
waterBill: Yup.number().positive().required(), .typeError('Must be a number')
totalBill: Yup.number().positive().required(), .positive("Must be a positive value")
noOfDependents: Yup.number().integer().positive().required(), .max(99999.99, "Value is too large")
.required(),
waterBill: Yup.number()
.typeError('Must be a number')
.positive("Must be a positive value")
.max(99999.99, "Value is too large")
.required(),
totalBill: Yup.number()
.typeError('Must be a number')
.positive("Must be a positive value")
.max(99999.99, "Value is too large")
.required(),
noOfDependents: Yup.number()
.typeError('Must be a number')
.integer("Must be a whole number")
.positive("Must be a positive value")
.required(),
}); });
export default function HBFormPage() { export default function HBFormPage() {
@@ -40,7 +56,7 @@ export default function HBFormPage() {
const handleSubmit = async ( const handleSubmit = async (
values: any, values: any,
{ setSubmitting, resetForm, setFieldError }: any { setSubmitting, resetForm, setFieldError, setFieldValue }: any
) => { ) => {
const formData = new FormData(); const formData = new FormData();
formData.append('electricalBill', values.electricalBill); formData.append('electricalBill', values.electricalBill);
@@ -48,18 +64,12 @@ export default function HBFormPage() {
formData.append('totalBill', values.totalBill); formData.append('totalBill', values.totalBill);
formData.append('noOfDependents', values.noOfDependents); formData.append('noOfDependents', values.noOfDependents);
// Convert image files to blobs if (values.ebPicture) {
const ebPictureFile = values.ebPicture; formData.append('ebPicture', values.ebPicture);
const wbPictureFile = values.wbPicture;
if (ebPictureFile) {
const ebPictureBlob = ebPictureFile.slice(0, ebPictureFile.size, ebPictureFile.type);
formData.append('ebPicture', ebPictureBlob);
} }
if (wbPictureFile) { if (values.wbPicture) {
const wbPictureBlob = wbPictureFile.slice(0, wbPictureFile.size, wbPictureFile.type); formData.append('wbPicture', values.wbPicture);
formData.append('wbPicture', wbPictureBlob);
} }
try { try {
@@ -71,13 +81,18 @@ export default function HBFormPage() {
if (response.status === 200) { if (response.status === 200) {
console.log("Form created successfully:", response.data); console.log("Form created successfully:", response.data);
resetForm(); // Clear form after successful submit resetForm(); // Clear form after successful submit
setFieldValue('ebPicture', null);
setFieldValue('wbPicture', null);
navigate("/contest"); navigate("/contest");
} else { } else {
console.error("Error creating form:", response.statusText); console.error("Error creating form:", response.statusText);
} }
} catch (error: any) { } catch (error: any) {
if (error.response && error.response.data && error.response.data.field) { if (error.response && error.response.data && error.response.data.errors) {
setFieldError(error.response.data.field, error.response.data.error); const errors = error.response.data.errors;
Object.keys(errors).forEach((key) => {
setFieldError(key, errors[key]);
});
} else { } else {
console.error("Unexpected error:", error); console.error("Unexpected error:", error);
} }
@@ -88,7 +103,7 @@ export default function HBFormPage() {
return ( return (
<DefaultLayout> <DefaultLayout>
<section className="w-8/12 mx-auto"> <section className="w-7/12 mx-auto">
<Button <Button
variant="light" variant="light"
onPress={() => navigate(-1)} onPress={() => navigate(-1)}
@@ -96,7 +111,7 @@ export default function HBFormPage() {
<ArrowUTurnLeftIcon /> <ArrowUTurnLeftIcon />
</Button> </Button>
</section> </section>
<section className="w-7/12 mx-auto p-5 bg-red-100 border border-none rounded-2xl max-h-m"> <section className="w-7/12 mx-auto p-5 bg-red-100 border border-none rounded-2xl h-600px">
<Formik <Formik
initialValues={initialValues} initialValues={initialValues}
validationSchema={validationSchema} validationSchema={validationSchema}
@@ -136,7 +151,7 @@ export default function HBFormPage() {
labelPlacement="inside" labelPlacement="inside"
/> />
</div> </div>
<div className="flex flex-row gap-10 max-w-xs max-h-xs"> <div className="flex flex-row gap-8 max-w-xs h-[500px]">
<InsertImage <InsertImage
onImageSelected={(file) => { onImageSelected={(file) => {
setFieldValue('ebPicture', file); setFieldValue('ebPicture', file);

View File

@@ -13,8 +13,6 @@ router.post("/", upload.fields([
{ name: 'ebPicture', maxCount: 1 }, { name: 'ebPicture', maxCount: 1 },
{ name: 'wbPicture', maxCount: 1 } { name: 'wbPicture', maxCount: 1 }
]), async (req, res) => { ]), async (req, res) => {
console.log("Request Body:", req.body);
console.log("Request Files:", req.files);
let data = req.body; let data = req.body;
let files = req.files; let files = req.files;
@@ -28,7 +26,6 @@ router.post("/", upload.fields([
}); });
try { try {
data = await validationSchema.validate(data, { abortEarly: false }); data = await validationSchema.validate(data, { abortEarly: false });
console.log("Validated data:", data);
// Process valid data // Process valid data
let ebPicture = files.ebPicture[0].buffer; let ebPicture = files.ebPicture[0].buffer;