All files / lib/pages/Campaign/Modal MappingQuestionModal.tsx

0% Statements 0/13
0% Branches 0/4
0% Functions 0/3
0% Lines 0/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70                                                                                                                                           
import { usePostMappingCampaignQuestionGroupMutation } from '@lib/api/mutations';
import { useGetAllQuestionGroupsQuery } from '@lib/api/queries';
import { Form, ModalProps, Select, message } from 'antd';
import Modal from 'antd/es/modal/Modal';
import axios from 'axios';
import React from 'react';
 
interface CreateModalProps {
  modalData: ModalProps;
  closeModal: () => unknown;
  campaignId: string;
}
 
export default function MappingQuestionModal({
  modalData,
  closeModal,
  campaignId
}: CreateModalProps) {
  const [form] = Form.useForm();
 
  const { data: questionGroups } = useGetAllQuestionGroupsQuery();
  const { mutateAsync: mappingCampaignQuestionGroup } = usePostMappingCampaignQuestionGroupMutation(
    { campaignId }
  );
 
  const handleSubmit = async (values: { questionGroupId: string }) => {
    try {
      const data = await mappingCampaignQuestionGroup(values.questionGroupId);
 
      if (data.success) {
        message.success('랜덤 문제 그룹이 연결되었습니다.');
 
        closeModal();
      }
    } catch (e) {
      if (axios.isAxiosError(e)) {
        message.error(e.response?.data.message);
      }
    }
  };
 
  return (
    <Modal
      {...modalData}
      title="랜덤 문제 그룹 연결"
      onOk={form.submit}
      okText="확인"
      cancelText="닫기"
      afterClose={form.resetFields}
    >
      <Form
        form={form}
        labelCol={{ span: 24 }}
        wrapperCol={{ span: 24 }}
        onFinish={handleSubmit}
        // eslint-disable-next-line no-template-curly-in-string
        validateMessages={{ required: '${label}을(를) 입력해주세요.' }}
      >
        <Form.Item name="questionGroupId">
          <Select placeholder="연결할 랜덤 문제 그룹을 선택해주세요." style={{ width: '100%' }}>
            {questionGroups?.map((questionGroup) => (
              <Select.Option value={questionGroup.id}>{questionGroup.title}</Select.Option>
            ))}
          </Select>
        </Form.Item>
      </Form>
    </Modal>
  );
}