Commit 87f7e3dc authored by Omar Luna Hernández's avatar Omar Luna Hernández
Browse files

Se le da formato y se agrega un mensaje cuando un admin ya existe

parent 5d2a1cde
Loading
Loading
Loading
Loading
+62 −48
Original line number Diff line number Diff line
import { FieldErrors, Resolver, SubmitHandler, useForm } from "react-hook-form";
import { AdminDatasourceProd } from "../data/datasources/prod/admin_datasource";
import { AdminRepositoryProd } from "../data/repositories/prod/admin_repository";
import { Admin, AdminFormValues } from "../infraestructure/entities/admin_form_values";
import {
  Admin,
  AdminFormValues,
} from "../infraestructure/entities/admin_form_values";
import { toast } from "react-toastify";
import axios, { AxiosError } from "axios";
import { useState } from "react";
@@ -16,28 +19,28 @@ const resolver: Resolver<AdminFormValues> = async (data) => {
  if (!data.name) {
    errors.name = {
      type: "required",
      message: "El nombre del administrador es requerido"
      message: "El nombre del administrador es requerido",
    };
  }

  if (!data.lastName) {
    errors.lastName = {
      type: "required",
      message: "El apellido del administrador es requerido"
      message: "El apellido del administrador es requerido",
    };
  }

  if (!data.email) {
    errors.email = {
      type: "required",
      message: "El correo electronico es requerido"
      message: "El correo electronico es requerido",
    };
  } else {
    const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    if (!emailPattern.test(data.email)) {
      errors.email = {
        type: "validate",
        message: "El correo electronico no es válido"
        message: "El correo electronico no es válido",
      };
    }
  }
@@ -45,26 +48,26 @@ const resolver: Resolver<AdminFormValues> = async (data) => {
  if (!data.password) {
    errors.password = {
      type: "required",
      message: "La contraseña es requerida"
      message: "La contraseña es requerida",
    };
  } else if (data.confirmPassword !== data.password) {
    errors.confirmPassword = {
      type: "validate",
      message: "Las contraseñas deben coincidir"
      message: "Las contraseñas deben coincidir",
    };
  }

  if (!data.confirmPassword) {
    errors.confirmPassword = {
      type: "required",
      message: "La contraseña es requerida"
      message: "La contraseña es requerida",
    };
  }

  if (!data.townAdmin) {
    errors.townAdmin = {
      type: "required",
      message: "Elija el pueblo al que va a representar"
      message: "Elija el pueblo al que va a representar",
    };
  }

@@ -74,11 +77,15 @@ const resolver: Resolver<AdminFormValues> = async (data) => {
  };
};

export const useAdmin = (forceRenderList?: () => void, handleClickToClose?: () => void) => {
export const useAdmin = (
  forceRenderList?: () => void,
  handleClickToClose?: () => void
) => {
  const {
    register,
    handleSubmit,
    formState: { errors },
    setError,
  } = useForm<AdminFormValues>({ resolver });
  const [adminList, setAdminList] = useState<Admin[]>([]);

@@ -95,32 +102,31 @@ export const useAdmin = (forceRenderList?: () => void, handleClickToClose?: () =
        if (axios.isAxiosError(error)) {
          error as AxiosError;
          switch (error.code) {
            case(axios.AxiosError.ERR_BAD_REQUEST):
            case axios.AxiosError.ERR_BAD_REQUEST:
              errorMessage = "Acceso no autorizado";
              setError("email", { type: "validate", message: "El email ya existe" });
              break;
            case(axios.AxiosError.ERR_NETWORK):
            case axios.AxiosError.ERR_NETWORK:
              errorMessage = "Conexión con el servidor fallida";
              break;
          }
        }
        throw new Error(errorMessage);
      }
    }
    toast.promise(
      fetch(),{
    };
    toast.promise(fetch(), {
      pending: "Subiendo datos...",
      success: "Los datos se han subido correctamente",
      error: {
        render({ data }) {
          return (data as Error).message;
          }
        }
      }
    )
  }
        },
      },
    });
  };

  const getAdminInfo = async (): Promise<Admin | null> => {
    const token = localStorage.getItem('token');
    const token = localStorage.getItem("token");
    if (token) {
      try {
        const actualAdmin = await adminRepository.getAdminInfo(token);
@@ -134,7 +140,7 @@ export const useAdmin = (forceRenderList?: () => void, handleClickToClose?: () =
      return null;
    }
    return null;
  }
  };

  const getAdminListByTown = async (idTown: number) => {
    try {
@@ -146,7 +152,15 @@ export const useAdmin = (forceRenderList?: () => void, handleClickToClose?: () =
        showErrorAxios(error);
      }
    }
  }
  };

  return {register, handleSubmit, errors, onSubmit, getAdminInfo, adminList, getAdminListByTown};
}
 No newline at end of file
  return {
    register,
    handleSubmit,
    errors,
    onSubmit,
    getAdminInfo,
    adminList,
    getAdminListByTown,
  };
};