import Input from "@/components/Forms/Input";
import InputGroup from "@/components/Forms/InputGroup";
import InputSelectComponent from "@/components/Forms/InputSelect";
import { GetForm } from "@/utils";

const FormTiposReclamacoes = ({
  onSubmitFunction,
  defaultValues,
  disabledFields,
  children,
  prioridades,
  usuarios,
  ...rest
}: any) => {
  const { handleSubmit, ...form } = GetForm();

  return (
    <form onSubmit={handleSubmit(onSubmitFunction)} {...rest}>
      <InputGroup>
        <Input
          name="nome_tipo_reclamacao"
          label="Nome"
          formulario={form}
          error={"Informe o Nome"}
          required
          defaultValue={defaultValues && defaultValues["nome_tipo_reclamacao"]}
          disabled={disabledFields?.some(
            (field: string) => field == "nome_tipo_reclamacao"
          )}
        />
        <InputSelectComponent
          name="cod_prioridade_reclamacao"
          label="Prioridade"
          formulario={form}
          options={prioridades.map((prioridade: any) => ({
            label: prioridade?.nome_prioridade,
            value: prioridade?.id_prioridade,
          }))}
          error={"Informe a Prioridade"}
          required
          defaultValue={defaultValues && defaultValues["cod_prioridade_reclamacao"]}
          disabled={disabledFields?.some(
            (field: string) => field == "cod_prioridade_reclamacao"
          )}
        />
        <InputSelectComponent
          name="cod_responsavel_reclamacao"
          label="Responsável"
          formulario={form}
          options={usuarios.map((usuario: any) => ({
            label: usuario?.nome_usuario,
            value: usuario?.id_usuario,
          }))}
          error={"Informe o Responsável"}
          required
          defaultValue={defaultValues && defaultValues["cod_responsavel_reclamacao"]}
          disabled={disabledFields?.some(
            (field: string) => field == "cod_responsavel_reclamacao"
          )}
        />
      </InputGroup>
      {children}
    </form>
  );
};

export default FormTiposReclamacoes;
