Lala
Lala
useEffect(() => {
if (!userdata && !error) {
fetchUser();
}
}, [userdata, error, fetchUser]);
useEffect(() => {
console.log("Updated userdata:", userdata); // Track updates
}, [userdata]);
if (data) {
notify({
type: 'success',
message: 'Cambios guardados exitosamente',
});
} else if (error) {
notify({
type: error.type || "error",
message: error.message,
});
}
navigate(`/profile/${userId}`);
};
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Nombre:</strong></label>
<input
type="text"
value={userdata.userProfile.name}
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile, name:
e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Apellido:</strong></label>
<input
type="text"
value={userdata.userProfile.lastname}
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile,
lastname: e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>DNI:</strong></label>
<input
text="text"
value={userdata.userProfile.dni}
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile, dni:
e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Teléfono:</strong></label>
<input
type="text"
value={userdata.userProfile.phone || ""}
placeholder="Ingresar número de teléfono"
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile, phone:
e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Celular:</strong></label>
<input
type="text"
value={userdata.userProfile.cellphone || ""}
placeholder="Ingresar numero de celular"
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile,
cellphone: e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Fecha de nacimiento:</strong></label>
<input
type="date"
value={userdata.userProfile.birthDate.split("T")
[0]}
onChange={(e) => {
setIsBirthDateModified(true);
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile,
birthDate: e.target.value },
}))
}}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Nacionalidad:</strong></label>
<input
type="text"
value={userdata.userProfile.nationality}
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile,
nationality: e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Género:</strong></label>
<select
type="text"
value={userdata.userProfile.gender}
onChange={(e) =>
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile, gender:
e.target.value },
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
>
<option value="No asignado" disabled>Seleccionar
género</option>
<option value="Masculino">Masculino</option>
<option value="Femenino">Femenino</option>
<option value="Femenino">Otro</option>
</select>
</li>
{/*<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Tipo de perfil:</strong></label>
<select
type="text"
value={userdata.userProfile.type_profile|| "No
asignado"}
onChange={(e) =>
setUserData((prev) => ({
...prev, //copia el estado previo
userProfile: { ...prev.userProfile,
type_profile: e.target.value }, //cambia el valor de profile_type dentro de
userProfile
}))
}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
>
<option value="No asignado" disabled>Seleccionar
tipo de perfil</option>
<option value="profesional">Profesional</option>
<option value="estudiante">Estudiante</option>
<option value="comunidad">Comunidad</option>
</select>
</li>*/}
<li className="mb-4">
<label className="block text-gray-700 font-semibold mb-
1"><strong>Contraseña:</strong></label>
<input
type="password"
placeholder="Ingresar nueva contraseña"
onChange={(e) => {
setIsPasswordModified(true);
setUserData((prev) => ({
...prev,
userProfile: { ...prev.userProfile,
password: e.target.value },
}))
}}
className="w-full p-3 border border-gray-300
rounded-lg focus:ring focus:ring-blue-200 bg-gray-50"
/>
</li>
</ul>
</div>
{userdata.userProfile.student && (
<>
<h2 className="text-2xl mt-5">Información de
estudiante</h2>
<div className="bg-gray-200 w-full md:w-1/4 text-center
md:rounded-lg">
<ul className="space-y-2 p-2">
<li>
<label><strong>Legajo:</strong></label>
<input
type="text"
value={userdata.userProfile.student.legajo}
onChange={(e) => {
setIsStudentModified(true);
setUserData((prev) => ({
...prev,
userProfile: {
...prev.userProfile,
student: {
...prev.userProfile.student
,
legajo: e.target.value,
},
},
}))
}}
className="bg-gray-50 border border-gray-
300 text-gray-900 rounded-lg w-full p-1"
/>
</li>
<li>
<label><strong>Cátedra:</strong></label>
<input
type="text"
value={userdata.userProfile.student.university}
onChange={(e) => {
setIsStudentModified(true);
setUserData((prev) => ({
...prev,
userProfile: {
...prev.userProfile,
student: {
...prev.userProfile.student
,
university: e.target.value,
},
},
}))
}}
className="bg-gray-50 border border-gray-
300 text-gray-900 rounded-lg w-full p-1"
/>
</li>
</ul>
</div>
</>
)}
{userdata.userProfile.professionalData && (
<>
<h2 className="text-2xl mt-5">Información profesional</h2>
<div className="bg-gray-200 w-full md:w-1/4 text-center
md:rounded-lg">
<ul className="space-y-2 p-2">
<li>
<label><strong>Matrícula:</strong></label>
<input
type="text"
value={userdata.userProfile.professionalData.matricula}
onChange={(e) => {
setIsProfessionalDataModified(true);
setUserData((prev) => ({
...prev,
userProfile: {
...prev.userProfile,
professionalData: {
...prev.userProfile.profess
ionalData,
matricula: e.target.value,
},
},
}))
}}
className="bg-gray-50 border border-gray-
300 text-gray-900 rounded-lg w-full p-1"
/>
</li>
</ul>
</div>
</>
)}
<button style={{ backgroundColor: '#6d0d1d', color: 'white' }}
className="hover:bg-gray-700 font-bold py-2 px-4 rounded mt-5"
onClick={handleSaveChanges}>
Guardar cambios
</button>
</div>
</div>
</>
);
};