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

Se agrega las funciones para obtener la información de un admin y registrar uno nuevo

parent 6ba92cbc
Loading
Loading
Loading
Loading
+38 −8
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 { 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";
import { showErrorAxios } from "../utils/Messages";

const adminDatasource = new AdminDatasourceProd();
const adminRepository = new AdminRepositoryProd(adminDatasource);
@@ -37,7 +40,7 @@ const resolver: Resolver<AdminFormValues> = async (data) => {
      type: "required",
      message: "La contraseña es requerida"
    };
  }else if(data.confirmPassword!=data.password){
  }else if(data.confirmPassword!==data.password){
    errors.confirmPassword = {
      type: "validate",
      message: "Las contraseñas deben coincidir"
@@ -69,26 +72,53 @@ export const useAdmin = () => {
    register,
    handleSubmit,
    formState: {errors},
    setValue
  } = useForm<AdminFormValues>({resolver});
  const [errorMessage, setErrorMessage] = useState('');

  const onSubmit: SubmitHandler<AdminFormValues> = (data: AdminFormValues) => {
    const fetch = async () => {
      try{
        //await adminRepository.registerAdmin(data);
        console.log(data);
        await adminRepository.registerAdmin(data);
      }catch(error: any){

        if(axios.isAxiosError(error)){
          error as AxiosError;
          switch(error.code){
            case(axios.AxiosError.ERR_BAD_REQUEST):
              setErrorMessage("Acceso no autorizado");
              break;
            case(axios.AxiosError.ERR_NETWORK):
              setErrorMessage("Conexión con el servidor fallida");
              break;
          }
        }
        throw new Error();
      }
    }
    toast.promise(
      fetch(),{
        pending: "Subiendo datos...",
        success: "Los datos se han subido correctamente",
        error: "Sucedio un error"
        error: errorMessage
      }
    )
  }

  return {register, handleSubmit, errors, onSubmit};
  const getAdminInfo = async (): Promise<Admin | null> => {
    const token = localStorage.getItem('token');
    if(token){
      try{
        const actualAdmin = await adminRepository.getAdminInfo(token);
        return actualAdmin;
      }catch(error: any){
        if(axios.isAxiosError(error)){
          error as AxiosError;
          showErrorAxios(error);
        }
      }
      return null;
    }
    return null;
  }

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