Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2858 | Autoría | Ultima modificación | Ver Log |

import React from "react";
import { useDispatch } from "react-redux";
import { useForm } from "react-hook-form";

import { axios } from "@app/utils";
import { useFetchHelper } from "@hooks";
import { addNotification } from "@app/redux/notification/notification.actions";

import Modal from "@components/UI/modal/Modal";
import Input from "@components/UI/inputs/Input";
import Select from "@components/UI/inputs/Select";

const AddGroupModal = ({ show, onHide, fetchGroups }) => {
  const { data: groupTypes } = useFetchHelper("group-types");
  const { data: industries } = useFetchHelper("industries");
  const dispatch = useDispatch();

  const {
    control,
    handleSubmit,
    formState: { errors },
  } = useForm();

  const onSubmit = handleSubmit((data) => {
    const formData = new FormData();
    Object.entries(data).forEach(([key, value]) => formData.append(key, value));

    axios
      .post(`/group/my-groups/add`, formData)
      .then((response) => {
        const { success } = response.data;

        if (!success) throw new Error("Error al crear el grupo");
        fetchGroups();
        onHide();
      })
      .catch((err) => {
        dispatch(addNotification({ style: "danger", msg: err.message }));
      });
  });

  return (
    <Modal title="Nuevo Grupo" show={show} onClose={onHide} onAccept={onSubmit}>
      <Input
        label="Nombre"
        name="name"
        placeholder="Nombre del grupo"
        control={control}
        rules={{ required: "Este campo es requerido" }}
        error={errors.name?.message}
      />

      <Select
        label="Industria"
        name="type_id"
        control={control}
        rules={{ required: "Por favor eliga un tipo" }}
        error={errors.type_id?.message}
        options={groupTypes}
      />

      <Select
        label="Tipo"
        name="industry_id"
        control={control}
        rules={{ required: "Por favor eliga un tipo" }}
        error={errors.industry_id?.message}
        options={industries}
      />
    </Modal>
  );
};

export default AddGroupModal;