|
@@ -3,9 +3,11 @@ import { useCallback } from 'react';
|
|
|
import { useTranslation } from 'next-i18next';
|
|
import { useTranslation } from 'next-i18next';
|
|
|
import { Modal, ModalBody } from 'reactstrap';
|
|
import { Modal, ModalBody } from 'reactstrap';
|
|
|
|
|
|
|
|
|
|
+import { GuestQuestionnaireAnswerStatusService } from '~/client/services/guest-questionnaire-answer-status';
|
|
|
import { apiv3Put } from '~/client/util/apiv3-client';
|
|
import { apiv3Put } from '~/client/util/apiv3-client';
|
|
|
import { toastSuccess, toastError } from '~/client/util/toastr';
|
|
import { toastSuccess, toastError } from '~/client/util/toastr';
|
|
|
import { IAnswer } from '~/interfaces/questionnaire/answer';
|
|
import { IAnswer } from '~/interfaces/questionnaire/answer';
|
|
|
|
|
+import { StatusType } from '~/interfaces/questionnaire/questionnaire-answer-status';
|
|
|
import { IQuestionnaireOrderHasId } from '~/interfaces/questionnaire/questionnaire-order';
|
|
import { IQuestionnaireOrderHasId } from '~/interfaces/questionnaire/questionnaire-order';
|
|
|
import { useCurrentUser } from '~/stores/context';
|
|
import { useCurrentUser } from '~/stores/context';
|
|
|
import { useQuestionnaireModal } from '~/stores/modal';
|
|
import { useQuestionnaireModal } from '~/stores/modal';
|
|
@@ -36,6 +38,9 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
|
|
|
questionnaireOrderId: questionnaireOrder._id,
|
|
questionnaireOrderId: questionnaireOrder._id,
|
|
|
answers,
|
|
answers,
|
|
|
});
|
|
});
|
|
|
|
|
+ if (currentUser == null) {
|
|
|
|
|
+ GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.answered);
|
|
|
|
|
+ }
|
|
|
toastSuccess(
|
|
toastSuccess(
|
|
|
<>
|
|
<>
|
|
|
<div className="font-weight-bold">{t('questionnaire.thank_you_for_answering')}</div>
|
|
<div className="font-weight-bold">{t('questionnaire.thank_you_for_answering')}</div>
|
|
@@ -51,7 +56,7 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
|
|
|
logger.error(e);
|
|
logger.error(e);
|
|
|
toastError(t('questionnaire.failed_to_send'));
|
|
toastError(t('questionnaire.failed_to_send'));
|
|
|
}
|
|
}
|
|
|
- }, [questionnaireOrder._id, t]);
|
|
|
|
|
|
|
+ }, [questionnaireOrder._id, t, currentUser]);
|
|
|
|
|
|
|
|
const submitHandler = useCallback(async(event) => {
|
|
const submitHandler = useCallback(async(event) => {
|
|
|
event.preventDefault();
|
|
event.preventDefault();
|
|
@@ -63,8 +68,8 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
|
|
|
|
|
|
|
|
sendAnswer(answers);
|
|
sendAnswer(answers);
|
|
|
|
|
|
|
|
- const shouldCloseToastor = true;
|
|
|
|
|
- closeQuestionnaireModal(shouldCloseToastor);
|
|
|
|
|
|
|
+ const shouldCloseToast = true;
|
|
|
|
|
+ closeQuestionnaireModal(shouldCloseToast);
|
|
|
}, [closeQuestionnaireModal, questionnaireOrder.questions, sendAnswer]);
|
|
}, [closeQuestionnaireModal, questionnaireOrder.questions, sendAnswer]);
|
|
|
|
|
|
|
|
const denyBtnClickHandler = useCallback(async() => {
|
|
const denyBtnClickHandler = useCallback(async() => {
|
|
@@ -72,30 +77,36 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
|
|
|
apiv3Put('/questionnaire/deny', {
|
|
apiv3Put('/questionnaire/deny', {
|
|
|
questionnaireOrderId: questionnaireOrder._id,
|
|
questionnaireOrderId: questionnaireOrder._id,
|
|
|
});
|
|
});
|
|
|
|
|
+ if (currentUser == null) {
|
|
|
|
|
+ GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.denied);
|
|
|
|
|
+ }
|
|
|
toastSuccess(t('questionnaire.denied'));
|
|
toastSuccess(t('questionnaire.denied'));
|
|
|
}
|
|
}
|
|
|
catch (e) {
|
|
catch (e) {
|
|
|
logger.error(e);
|
|
logger.error(e);
|
|
|
}
|
|
}
|
|
|
- const shouldCloseToastor = true;
|
|
|
|
|
- closeQuestionnaireModal(shouldCloseToastor);
|
|
|
|
|
- }, [closeQuestionnaireModal, questionnaireOrder._id, t]);
|
|
|
|
|
|
|
+ const shouldCloseToast = true;
|
|
|
|
|
+ closeQuestionnaireModal(shouldCloseToast);
|
|
|
|
|
+ }, [closeQuestionnaireModal, questionnaireOrder._id, t, currentUser]);
|
|
|
|
|
|
|
|
// No showing toasts since not important
|
|
// No showing toasts since not important
|
|
|
- const closeBtnClickHandler = useCallback(async(shouldCloseToastor: boolean) => {
|
|
|
|
|
- closeQuestionnaireModal(shouldCloseToastor);
|
|
|
|
|
|
|
+ const closeBtnClickHandler = useCallback(async(shouldCloseToast: boolean) => {
|
|
|
|
|
+ closeQuestionnaireModal(shouldCloseToast);
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
await apiv3Put('/questionnaire/skip', {
|
|
await apiv3Put('/questionnaire/skip', {
|
|
|
questionnaireOrderId: questionnaireOrder._id,
|
|
questionnaireOrderId: questionnaireOrder._id,
|
|
|
});
|
|
});
|
|
|
|
|
+ if (currentUser == null) {
|
|
|
|
|
+ GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.skipped);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
catch (e) {
|
|
catch (e) {
|
|
|
logger.error(e);
|
|
logger.error(e);
|
|
|
}
|
|
}
|
|
|
- }, [closeQuestionnaireModal, questionnaireOrder._id]);
|
|
|
|
|
|
|
+ }, [closeQuestionnaireModal, questionnaireOrder._id, currentUser]);
|
|
|
|
|
|
|
|
- const closeBtnClickHandlerClosingToastor = useCallback(async() => {
|
|
|
|
|
|
|
+ const closeBtnClickHandlerClosingToast = useCallback(async() => {
|
|
|
closeBtnClickHandler(true);
|
|
closeBtnClickHandler(true);
|
|
|
}, [closeBtnClickHandler]);
|
|
}, [closeBtnClickHandler]);
|
|
|
|
|
|
|
@@ -104,7 +115,7 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
|
|
|
return (<Modal
|
|
return (<Modal
|
|
|
size="lg"
|
|
size="lg"
|
|
|
isOpen={isOpened}
|
|
isOpen={isOpened}
|
|
|
- toggle={closeBtnClickHandlerClosingToastor}
|
|
|
|
|
|
|
+ toggle={closeBtnClickHandlerClosingToast}
|
|
|
centered
|
|
centered
|
|
|
>
|
|
>
|
|
|
<form onSubmit={submitHandler}>
|
|
<form onSubmit={submitHandler}>
|