From c181fb90f4251b62daef920b6890f27327e8e55c Mon Sep 17 00:00:00 2001 From: lakshan sanjeewa Date: Mon, 30 Sep 2024 21:25:33 +0530 Subject: [PATCH 1/2] editing --- frontend/src/Pages/delivery/DLeditdriver.jsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/frontend/src/Pages/delivery/DLeditdriver.jsx b/frontend/src/Pages/delivery/DLeditdriver.jsx index 472c663a..1774517d 100644 --- a/frontend/src/Pages/delivery/DLeditdriver.jsx +++ b/frontend/src/Pages/delivery/DLeditdriver.jsx @@ -130,6 +130,7 @@ const DLViewDriver = () => { if (name === 'fullName') { if (!/^[A-Za-z\s]*$/.test(value)) { errorMessage = 'Name should only contain alphabets and spaces.'; + return; } } @@ -279,8 +280,8 @@ const DLViewDriver = () => { 0, 10 )} - onChange={handleInputChange} - className="p-2 border border-gray-300 rounded-md" + readOnly // Make field non-editable + className="p-2 border border-gray-300 rounded-md bg-gray-100 cursor-not-allowed" /> @@ -293,8 +294,8 @@ const DLViewDriver = () => { type="text" name="idCardNumber" value={driverDetails.idCardNumber} - onChange={handleInputChange} - className="p-2 border border-gray-300 rounded-md" + readOnly // Make field non-editable + className="p-2 border border-gray-300 rounded-md bg-gray-100 cursor-not-allowed" /> @@ -307,8 +308,8 @@ const DLViewDriver = () => { type="text" name="licenseCardNumber" value={driverDetails.licenseCardNumber} - onChange={handleInputChange} - className="p-2 border border-gray-300 rounded-md" + readOnly // Make field non-editable + className="p-2 border border-gray-300 rounded-md bg-gray-100 cursor-not-allowed" /> From 110362207ef353dba879ec5c18202072205b2dc7 Mon Sep 17 00:00:00 2001 From: lakshan sanjeewa Date: Mon, 30 Sep 2024 21:51:39 +0530 Subject: [PATCH 2/2] done --- frontend/src/Pages/delivery/DLeditdriver.jsx | 72 +++++++++++--------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/frontend/src/Pages/delivery/DLeditdriver.jsx b/frontend/src/Pages/delivery/DLeditdriver.jsx index 1774517d..a4e1eccf 100644 --- a/frontend/src/Pages/delivery/DLeditdriver.jsx +++ b/frontend/src/Pages/delivery/DLeditdriver.jsx @@ -9,6 +9,7 @@ const DLViewDriver = () => { const [driverDetails, setDriverDetails] = useState(null) const [selectedImage, setSelectedImage] = useState(null) // For image pop-up const [isEditing, setIsEditing] = useState(false) + const [errors, setErrors] = useState({}) // Error state for validation const navigate = useNavigate() @@ -119,9 +120,22 @@ const DLViewDriver = () => { }) } - // Handlers to update driver details - + // Function to calculate age from birth date + const calculateAge = (birthDate) => { + const today = new Date() + const birthDateObj = new Date(birthDate) + let age = today.getFullYear() - birthDateObj.getFullYear() + const monthDifference = today.getMonth() - birthDateObj.getMonth() + if ( + monthDifference < 0 || + (monthDifference === 0 && today.getDate() < birthDateObj.getDate()) + ) { + age-- + } + return age + } + // Handler for input changes with validation const handleInputChange = (e) => { const { name, value } = e.target; let errorMessage = ''; @@ -135,37 +149,12 @@ const DLViewDriver = () => { } // Validate Contact Number - if (name === 'contactNumber') { + if (name === 'phone') { if (!/^0\d{9}$/.test(value)) { errorMessage = 'Contact number must be 10 digits and start with 0.'; } } - // Validate Birthday and Age - if (name === 'dateOfBirth') { - const age = calculateAge(value); - if (age < 18) { - errorMessage = 'You must be at least 18 years old to register.'; - } - - // Ensure NIC year matches Birthday year - const birthYear = new Date(value).getFullYear(); - if (driverDetails.NIC && !driverDetails.NIC.startsWith(birthYear.toString())) { - errorMessage = 'Please Enter valid NIC'; - } - } - - // Validate NIC - if (name === 'NIC') { - const nicRegex = /^\d{11}[0-9Vv]$/; - const birthYear = new Date(driverDetails.dateOfBirth).getFullYear().toString(); - - if (!nicRegex.test(value)) { - errorMessage = 'Please Enter valid NIC'; - } else if (!value.startsWith(birthYear)) { - errorMessage = 'Please Enter valid NIC'; - } - } setDriverDetails((prevDetails) => ({ ...prevDetails, @@ -238,6 +227,9 @@ const DLViewDriver = () => { onChange={handleInputChange} className="p-2 border border-gray-300 rounded-md" /> + {errors.fullName && ( +

{errors.fullName}

+ )} {/* Email */} @@ -266,6 +258,9 @@ const DLViewDriver = () => { onChange={handleInputChange} className="p-2 border border-gray-300 rounded-md" /> + {errors.phone && ( +

{errors.phone}

+ )} {/* Date of Birth */} @@ -280,9 +275,11 @@ const DLViewDriver = () => { 0, 10 )} - readOnly // Make field non-editable + readOnly // Make email field non-editable className="p-2 border border-gray-300 rounded-md bg-gray-100 cursor-not-allowed" + /> + {/* ID Card Number */} @@ -294,9 +291,11 @@ const DLViewDriver = () => { type="text" name="idCardNumber" value={driverDetails.idCardNumber} - readOnly // Make field non-editable + readOnly // Make email field non-editable className="p-2 border border-gray-300 rounded-md bg-gray-100 cursor-not-allowed" + /> + {/* License Card Number */} @@ -308,9 +307,11 @@ const DLViewDriver = () => { type="text" name="licenseCardNumber" value={driverDetails.licenseCardNumber} - readOnly // Make field non-editable + readOnly // Make email field non-editable className="p-2 border border-gray-300 rounded-md bg-gray-100 cursor-not-allowed" + /> + {/* Address */} @@ -325,6 +326,9 @@ const DLViewDriver = () => { onChange={handleInputChange} className="p-2 border border-gray-300 rounded-md" /> + {errors.address && ( +

{errors.address}

+ )} {/* Vehicle Number */} @@ -339,6 +343,9 @@ const DLViewDriver = () => { onChange={handleInputChange} className="p-2 border border-gray-300 rounded-md" /> + {errors.vehicleNumber && ( +

{errors.vehicleNumber}

+ )} {/* Vehicle Type */} @@ -358,6 +365,9 @@ const DLViewDriver = () => { + {errors.vehicleType && ( +

{errors.vehicleType}

+ )}