[FE] Fix error display for person search

master
Araozu 2023-10-04 07:29:36 -05:00
parent 9ba5a71928
commit b5c6f9caca
3 changed files with 17 additions and 23 deletions

View File

@ -27,17 +27,6 @@ pub struct Person {
}
impl Person {
pub fn default() -> Person {
Person {
person_id: -1,
person_dni: "".to_string(),
person_names: "".to_string(),
person_paternal_surname: "".to_string(),
person_maternal_surname: "".to_string(),
person_classroom_id: None,
}
}
pub async fn get_by_dni(dni: i32) -> Result<Person, sqlx::Error> {
let db = db();

View File

@ -22,7 +22,9 @@ export function OnlineClassroom() {
/>
</Show>
<Show when={person() !== null && person()!.person_classroom_id !== null}>
<p>Person has classroom_id</p>
<p>
Esta persona tiene un usuario en el aula virtual.
</p>
</Show>
</div>
@ -71,7 +73,7 @@ function ClassroomTabs(props: {active: TabType, setActive: (v: TabType) => void}
class={`py-2 border-b-4 ${presetsClasses()}`}
onclick={() => props.setActive("Vinculate")}
>
Vincular
Buscar
</button>
<button
class={`py-2 border-b-4 ${manualClasses()}`}

View File

@ -9,6 +9,7 @@ import { PersonRegister } from "./PersonRegister";
import { backend, wait } from "../../utils/functions";
import { JsonResult } from "../../types/JsonResult";
import { LoadingIcon } from "../../icons/LoadingIcon";
import { AxiosError } from "axios";
type HTMLButtonEvent = JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent>;
@ -50,6 +51,7 @@ export function Search(props: {setPerson: (p: Person | null) => void}) {
const search = async() => {
setLoading(true);
setError("");
setManualCreate(false);
if (import.meta.env.DEV) await wait(1500);
@ -58,21 +60,22 @@ export function Search(props: {setPerson: (p: Person | null) => void}) {
if (response.status === 200) {
setPerson(response.data.Ok);
props.setPerson(response.data.Ok);
setManualCreate(false);
} else if (response.status === 404) {
console.error(response.data);
setError("No encontrado. Ingresar datos manualmente.");
setManualCreate(true);
props.setPerson(null);
} else {
setError(response.data.Err.reason);
setManualCreate(false);
}
})
.catch((err) => {
setError(`Error fatal: ${err.message}`);
console.error(err);
.catch((err: AxiosError<JsonResult<Person>>) => {
if (err.response?.status === 404) {
console.error(err.response.data);
setError("No encontrado. Ingresar datos manualmente.");
setManualCreate(true);
props.setPerson(null);
} else {
setError(`Error fatal: ${err.message}`);
console.error(err.response?.status);
}
})
.finally(() => {
setLoading(false);