Commit 42a03290 authored by Leonardo Mello's avatar Leonardo Mello
Browse files

corrigindo comentarios sobre tratamento de erro na pagina de cadastro

parent 9ddf5eaa
Showing with 222 additions and 98 deletions
+222 -98
......@@ -25,7 +25,7 @@
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"@vitejs/plugin-react-swc": "^3.3.2",
"eslint": "^8.45.0",
"eslint": "^8.52.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"typescript": "^5.0.2",
......@@ -582,6 +582,35 @@
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/js": {
"version": "8.52.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
"integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.13",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
"integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.1",
"debug": "^4.1.1",
"minimatch": "^3.0.5"
},
"engines": {
"node": ">=10.10.0"
}
},
"node_modules/@humanwhocodes/object-schema": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
"integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
"dev": true
},
"node_modules/@mui/icons-material": {
"version": "5.14.11",
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.11.tgz",
......@@ -2287,6 +2316,12 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
"dev": true
},
"node_modules/@vitejs/plugin-react-swc": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.4.0.tgz",
......@@ -2309,6 +2344,22 @@
"proxy-from-env": "^1.1.0"
}
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/clsx": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
......@@ -2317,6 +2368,12 @@
"node": ">=6"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"node_modules/cpf": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/cpf/-/cpf-2.0.1.tgz",
......@@ -2351,18 +2408,19 @@
"dev": true
},
"node_modules/eslint": {
"version": "8.50.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz",
"integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==",
"version": "8.52.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
"integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.2",
"@eslint/js": "8.50.0",
"@humanwhocodes/config-array": "^0.11.11",
"@eslint/js": "8.52.0",
"@humanwhocodes/config-array": "^0.11.13",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
......@@ -2472,29 +2530,6 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/@eslint/js": {
"version": "8.50.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz",
"integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/eslint/node_modules/@humanwhocodes/config-array": {
"version": "0.11.11",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
"integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
"minimatch": "^3.0.5"
},
"engines": {
"node": ">=10.10.0"
}
},
"node_modules/eslint/node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
......@@ -2508,12 +2543,6 @@
"url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/eslint/node_modules/@humanwhocodes/object-schema": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"node_modules/eslint/node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
......@@ -2616,22 +2645,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"node_modules/eslint/node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/eslint/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/eslint/node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
......@@ -2675,12 +2688,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/eslint/node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"node_modules/eslint/node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
......@@ -3087,18 +3094,6 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
"node_modules/eslint/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/eslint/node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
......@@ -3532,6 +3527,18 @@
"node": ">=10"
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
......
......@@ -17,26 +17,67 @@ export const CadastroMedico = () => {
const [password, setPassword] = useState<string>('');
const [confirmPassword, setConfirmPassword] = useState<string>('');
const [validPassword, setValidPassaword] = useState<boolean>(true);
const [pswTouched, setpswTouched] = useState<boolean>(false);
const [data, setData] = useState<String>();
const [dataStatus, setDataStatus] = useState<Number>();
const [erro, setErro] = useState<string>('');
const [isValidCrm, setIsValidCrm] = useState<boolean>(true);
const [isValidEmail, setIsValidEmail] = useState<boolean>(true);
const [isValidName, setIsValidName] = useState<boolean>(true);
const [isValidCell, setIsValidCell] = useState<boolean>(true);
const [isValidPsw, setIsValidPsw] = useState<boolean>(true);;
const navigate = useNavigate();
const buttonCLick = () => {
fetchData(email, name, password, telefone, "DOCTOR", crm, state);
if (password === confirmPassword) {
if (password == confirmPassword) {
setValidPassaword(true);
} else {
setValidPassaword(false);
}
if (pswTouched && (dataStatus == 201 || dataStatus == 200)) {
if (crm == '') {
setIsValidCrm(false);
} else {
setIsValidCrm(true);
}
if (name == ''){
setIsValidName(false);
} else {
setIsValidName(true);
}
if (email == '') {
setIsValidEmail(false);
} else {
setIsValidEmail(true);
}
if (telefone == ''){
setIsValidCell(false);
} else {
setIsValidCell(true);
}
if (password == ''){
setIsValidPsw(false);
} else {
setIsValidPsw(true);
}
console.log(isValidName)
console.log(isValidEmail)
console.log(validPassword)
console.log(isValidCrm)
console.log(dataStatus)
if (isValidName && isValidEmail && validPassword && isValidCrm && (dataStatus == 201 || dataStatus == 200)) {
fetchData(email, name, password, telefone, "DOCTOR", crm, state);
navigate(ROUTES.HOME_MEDICO());
return;
}
};
const validateEmail = (input: string) => {
const emailRegex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
setIsValidEmail(emailRegex.test(input));
};
async function fetchData(email: String, name: String, password: String, cellPhone: String, userType: String, crm: String, uf: String) {
await registerDoctor(email, name, password, cellPhone, userType, crm, uf).then( (result) => {
......@@ -45,7 +86,6 @@ export const CadastroMedico = () => {
console.log("Status " + result.status);
if (result.status == 201 || result.status == 200) {
console.log('cadastro realizado com sucesso');
// navigate(ROUTES.CADASTRO_MEDICO());
}
})
.catch((erro) => {
......@@ -73,12 +113,23 @@ export const CadastroMedico = () => {
setState(targetValue);
};
const validateCrm = (input: string) => {
if (input.length === 6){
setIsValidCrm(true);
} else {
setIsValidCrm(false);
}
}
const handleCrm = (newCrm: string) => {
setCrm(newCrm);
validateCrm(newCrm);
setCrm(newCrm);
};
const handleEmail = (newEmail: string) => {
setEmail(newEmail);
const inputValue = newEmail;
setEmail(inputValue);
validateEmail(inputValue);
};
const handleTelefone = (newTelefone: string) => {
......@@ -90,9 +141,9 @@ export const CadastroMedico = () => {
};
const handleConfirmPassword = (newConfirmPassword: string) => {
setpswTouched(true);
setConfirmPassword(newConfirmPassword);
};
const handleClickFazerLogin = () => {
navigate(ROUTES.LOGIN());
};
......@@ -107,7 +158,9 @@ export const CadastroMedico = () => {
label="Nome Completo"
value={name}
type="name"
error={!isValidName}
onChange={handleName}
helperText={!isValidName ? 'Insira um nome' : ''}
/>
<div className="crm-state-container">
<SelectComponent label="UF" value={state} onChange={handleState} />
......@@ -115,6 +168,8 @@ export const CadastroMedico = () => {
label="CRM"
type="text"
value={crm}
error = {!isValidCrm}
helperText={!isValidCrm ? 'Insira um CRM correto' : ''}
onChange={handleCrm}
width="233px"
/>
......@@ -123,26 +178,32 @@ export const CadastroMedico = () => {
label="Email"
type="email"
onChange={handleEmail}
error={!isValidEmail}
helperText= {!isValidEmail ? 'Email inválido' : ''}
value={email}
/>
<Textfield
label="Telefone"
type="text"
onChange={handleTelefone}
error={!isValidCell}
helperText= {!isValidCell ? 'Telefone inválido' : ''}
value={telefone}
/>
<Textfield
label="Senha"
type="password"
onChange={handlePassword}
error={!isValidPsw}
value={password}
helperText={!isValidPsw ? 'Insira uma senha' : ''}
/>
<Textfield
label="Confirmar Senha"
type="password"
onChange={handleConfirmPassword}
error={!validPassword}
helperText={!validPassword ? 'Senha não correspondentes' : ''}
helperText={ !isValidPsw ? 'Insira uma senha' : !validPassword ? 'Senha não correspondentes' : ''}
value={confirmPassword}
/>
<Button
......
......@@ -17,40 +17,62 @@ export const CadastroPaciente = () => {
const [validPassword, setValidPassaword] = useState<boolean>(true);
const [cpfValue, setCpfValue] = useState<string>('');
const [isValidCpf, setIsValidCpf] = useState<boolean>(true);
const [cpfTouched, setCpfTouched] = useState<boolean>(false);
const [pswTouched, setPswTouched] = useState<boolean>(false);
const [isValidEmail, setIsValidEmail] = useState<boolean>(true);
const [isValidName, setIsValidName] = useState<boolean>(true);
const [isValidDate, setIsValidDate] = useState<boolean>(true);
const [isValidPsw, setIsValidPsw] = useState<boolean>(true);;
const [data, setData] = useState<String>();
const [dataStatus, setDataStatus] = useState<Number>();
const [erro, setErro] = useState<string>('');
const navigate = useNavigate();
const buttonCLick = () => {
if (password === confirmPassword) {
setValidPassaword(true);
} else {
setValidPassaword(false);
}
if (cpf.isValid(cpfValue)) {
setIsValidCpf(true);
} else {
setIsValidCpf(false);
}
console.log('psw touched ' + pswTouched);
console.log('cpf touched ' + cpfTouched);
console.log('cpf correct ' + isValidCpf);
console.log('psw correct ' + validPassword);
if (validPassword && pswTouched && cpf.isValid(cpfValue) && (dataStatus == 201 || dataStatus == 200)) {
fetchData(email, name, password, "111111111", cpfValue, "123456789123456", "23/10/2000");
if (name == ''){
setIsValidName(false);
} else {
setIsValidName(true);
}
if (email == '') {
setIsValidEmail(false);
} else {
setIsValidEmail(true);
}
if (date == ''){
setIsValidDate(false);
} else {
setIsValidDate(true);
}
if (password == ''){
setIsValidPsw(false);
} else {
setIsValidPsw(true);
}
if (isValidName && isValidEmail && validPassword && cpf.isValid(cpfValue) && (dataStatus == 201 || dataStatus == 200)) {
fetchData(email, name, password, "111111111", cpfValue, "123456789123456", date);
return;
}
};
async function fetchData(email: String, name: String, password: String, cellPhone: String, cpf: String, numSus: String, birthDate: String) {
const validateEmail = (input: string) => {
const emailRegex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
setIsValidEmail(emailRegex.test(input));
};
await await registerUser(email, name, password, cellPhone, "PATIENT", cpf, numSus, birthDate).then((result) => {
async function fetchData(email: String, name: String, password: String, cellPhone: String, cpf: String, numSus: String, birthDate: String) {
await registerUser(email, name, password, cellPhone, "PATIENT", cpf, numSus, birthDate).then((result) => {
setData(result.data);
setDataStatus(result.status);
console.log(result.data);
......@@ -68,40 +90,66 @@ export const CadastroPaciente = () => {
//componente de erro abaixo:
console.error('Erro 400: O servidor encontrou um erro interno.');
console.error(erro);
setErro('Cpf ja existe.');
}
else {
console.error('Erro inesperado:', erro);
}
})
}
const validateDate = (input: string) => {
const parts = input.split('-');
if (parts.length === 3) {
const year = parts[0];
const month = parts[1];
const day = parts[2];
const formattedDate = `${day}/${month}/${year}`;
const dateRegex = /^(\d{2})\/(\d{2})\/(\d{4})$/;
const match = formattedDate.match(dateRegex);
if (match) {
setIsValidDate(true);
} else {
setIsValidDate(false);
}
} else {
setIsValidDate(false);
}
};
const handleName = (newName: string) => {
setName(newName);
};
const handleEmail = (newEmail: string) => {
setEmail(newEmail);
const inputValue = newEmail;
setEmail(inputValue);
validateEmail(inputValue);
};
const handleDate = (newDate: string) => {
setDate(newDate);
const inputValue = newDate;
validateDate(inputValue);
setDate(inputValue);
};
const handleCpf = (newCpf: string) => {
setCpfTouched(true);
setCpfValue(newCpf);
};
const handlePassword = (newPassoword: string) => {
setPswTouched(true);
setPassword(newPassoword);
};
const handleConfirmPassword = (newConfirmPassword: string) => {
setConfirmPassword(newConfirmPassword);
};
const handleClickFazerLogin = () => {
navigate(ROUTES.LOGIN());
};
......@@ -116,13 +164,17 @@ export const CadastroPaciente = () => {
label="Nome Completo"
value={name}
type="name"
error={!isValidName}
onChange={handleName}
helperText={!isValidName ? 'Insira um nome' : ''}
/>
<Textfield
label="Email"
type="email"
onChange={handleEmail}
value={email}
error={!isValidEmail}
helperText= {!isValidEmail ? 'Email inválido' : ''}
/>
<Textfield
label="CPF"
......@@ -137,19 +189,23 @@ export const CadastroPaciente = () => {
type="date"
onChange={handleDate}
value={date}
error={!isValidDate}
helperText={!isValidDate ? 'Data inválida' : ''}
/>
<Textfield
label="Senha"
type="password"
onChange={handlePassword}
error={!isValidPsw}
value={password}
helperText={!isValidPsw ? 'Insira uma senha' : ''}
/>
<Textfield
label="Confirmar Senha"
type="password"
onChange={handleConfirmPassword}
error={!validPassword}
helperText={!validPassword ? 'Senha não correspondentes' : ''}
helperText={ !isValidPsw ? 'Insira uma senha' : !validPassword ? 'Senha não correspondentes' : ''}
value={confirmPassword}
/>
<Button
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment