Validation added on HBFormPage
also remove console.log checking
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user