Skip to content

Commit

Permalink
Merge branch '10.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
himeshr committed Nov 13, 2024
2 parents 9d0ebb2 + b67f48b commit fac4cb4
Show file tree
Hide file tree
Showing 11 changed files with 88 additions and 25 deletions.
6 changes: 5 additions & 1 deletion src/adminApp/EncounterType/EncounterTypeCreate.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { getMessageTemplates, saveMessageRules } from "../service/MessageService
import MessageRules from "../../formDesigner/components/MessageRule/MessageRules";
import { connect } from "react-redux";
import Save from "@material-ui/icons/Save";
import { getDBValidationError } from "../../formDesigner/common/ErrorUtil";

const EncounterTypeCreate = ({ organisationConfig }) => {
const [encounterType, dispatch] = useReducer(encounterTypeReducer, encounterTypeInitialState);
Expand All @@ -28,6 +29,7 @@ const EncounterTypeCreate = ({ organisationConfig }) => {
const [allPrograms, setAllPrograms] = useState([]);
const [formMappings, setFormMappings] = useState([]);
const [error, setError] = useState("");
const [msgError, setMsgError] = useState("");
const [alert, setAlert] = useState(false);
const [id, setId] = useState();
const [formList, setFormList] = useState([]);
Expand Down Expand Up @@ -97,14 +99,15 @@ const EncounterTypeCreate = ({ organisationConfig }) => {
.then(response => {
if (response.status === 200) {
setError("");
setMsgError("");
setAlert(true);
setId(response.data.id);
return response.data;
}
})
.then(encounterType => saveMessageRules(entityType, encounterType.encounterTypeId, rules))
.catch(error => {
setError(error.response.data.message);
error.response.data.message ? setError(error.response.data.message) : setMsgError(getDBValidationError(error));
});
};

Expand Down Expand Up @@ -169,6 +172,7 @@ const EncounterTypeCreate = ({ organisationConfig }) => {
onChange={onRulesChange}
entityType={entityType}
entityTypeId={encounterType.encounterTypeId}
msgError={msgError}
/>
) : (
<></>
Expand Down
9 changes: 8 additions & 1 deletion src/adminApp/EncounterType/EncounterTypeEdit.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@ import { MessageReducer } from "../../formDesigner/components/MessageRule/Messag
import { getMessageRules, getMessageTemplates, saveMessageRules } from "../service/MessageService";
import MessageRules from "../../formDesigner/components/MessageRule/MessageRules";
import { connect } from "react-redux";
import { getDBValidationError } from "../../formDesigner/common/ErrorUtil";

const EncounterTypeEdit = ({ organisationConfig, ...props }) => {
const [encounterType, dispatch] = useReducer(encounterTypeReducer, encounterTypeInitialState);
const [nameValidation, setNameValidation] = useState(false);
const [error, setError] = useState("");
const [msgError, setMsgError] = useState("");
const [redirectShow, setRedirectShow] = useState(false);
const [encounterTypeData, setEncounterTypeData] = useState({});
const [deleteAlert, setDeleteAlert] = useState(false);
Expand Down Expand Up @@ -127,10 +129,14 @@ const EncounterTypeEdit = ({ organisationConfig, ...props }) => {
.then(response => {
if (response.status === 200) {
setError("");
setMsgError("");
}
})
.then(() => saveMessageRules(entityType, encounterType.encounterTypeId, rules))
.then(() => setRedirectShow(true));
.then(() => setRedirectShow(true))
.catch(error => {
error.response.data.message ? setError(error.response.data.message) : setMsgError(getDBValidationError(error));
});
};

const onDelete = () => {
Expand Down Expand Up @@ -207,6 +213,7 @@ const EncounterTypeEdit = ({ organisationConfig, ...props }) => {
onChange={onRulesChange}
entityType={entityType}
entityTypeId={encounterType.encounterTypeId}
msgError={msgError}
/>
) : (
<></>
Expand Down
13 changes: 10 additions & 3 deletions src/adminApp/Program/ProgramCreate.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ import MessageRules from "../../formDesigner/components/MessageRule/MessageRules
import { identity } from "lodash";
import { connect } from "react-redux";
import Save from "@material-ui/icons/Save";
import { getDBValidationError } from "../../formDesigner/common/ErrorUtil";

const ProgramCreate = ({ organisationConfig }) => {
const [program, dispatch] = useReducer(programReducer, programInitialState);
const [errors, setErrors] = useState(new Map());
const [msgError, setMsgError] = useState("");
const [saved, setSaved] = useState(false);
const [id, setId] = useState();
const [subjectTypes, setSubjectTypes] = useState([]);
Expand Down Expand Up @@ -62,11 +64,15 @@ const ProgramCreate = ({ organisationConfig }) => {
.then(saveResponse => {
setErrors(saveResponse.errors);
setSaved(saveResponse.status === 200);
if (saveResponse.errors.size === 0) setId(saveResponse.id);
if (saveResponse.errors.size === 0) {
setId(saveResponse.id);
setMsgError("");
}
return saveResponse.programId;
})
.then(programId => {
saveMessageRules(entityType, programId, rules);
.then(programId => saveMessageRules(entityType, programId, rules))
.catch(error => {
!error.response.data.message && setMsgError(getDBValidationError(error));
});
};

Expand Down Expand Up @@ -95,6 +101,7 @@ const ProgramCreate = ({ organisationConfig }) => {
onChange={onRulesChange}
entityType={entityType}
entityTypeId={program.programId}
msgError={msgError}
/>
) : (
<></>
Expand Down
13 changes: 11 additions & 2 deletions src/adminApp/Program/ProgramEdit.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@ import { getMessageRules, getMessageTemplates, saveMessageRules } from "../servi
import { identity } from "lodash";
import MessageRules from "../../formDesigner/components/MessageRule/MessageRules";
import { connect } from "react-redux";
import { getDBValidationError } from "../../formDesigner/common/ErrorUtil";

const ProgramEdit = ({ organisationConfig, ...props }) => {
const [program, dispatch] = useReducer(programReducer, programInitialState);
const [errors, setErrors] = useState(new Map());
const [msgError, setMsgError] = useState("");
const [redirectShow, setRedirectShow] = useState(false);
const [deleteAlert, setDeleteAlert] = useState(false);
const [subjectType, setSubjectType] = useState(null);
Expand Down Expand Up @@ -82,9 +84,15 @@ const ProgramEdit = ({ organisationConfig, ...props }) => {
return ProgramService.saveProgram(program, subjectType, props.match.params.id)
.then(saveResponse => {
setErrors(saveResponse.errors);
setRedirectShow(saveResponse.status === 200);
if (saveResponse.errors.size === 0) {
setMsgError("");
}
})
.then(() => saveMessageRules(entityType, program.programId, rules));
.then(() => saveMessageRules(entityType, program.programId, rules))
.then(() => setRedirectShow(true))
.catch(error => {
!error.response.data.message && setMsgError(getDBValidationError(error));
});
};

const onDelete = () => {
Expand Down Expand Up @@ -136,6 +144,7 @@ const ProgramEdit = ({ organisationConfig, ...props }) => {
onChange={onRulesChange}
entityType={entityType}
entityTypeId={program.programId}
msgError={msgError}
/>
) : (
<></>
Expand Down
14 changes: 8 additions & 6 deletions src/adminApp/SubjectType/SubjectTypeCreate.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ import { getMessageTemplates, saveMessageRules } from "../service/MessageService
import MessageRules from "../../formDesigner/components/MessageRule/MessageRules";
import { connect } from "react-redux";
import Save from "@material-ui/icons/Save";
import { getDBValidationError } from "../../formDesigner/common/ErrorUtil";

const SubjectTypeCreate = ({ organisationConfig }) => {
const [subjectType, dispatch] = useReducer(subjectTypeReducer, subjectTypeInitialState);
const [nameValidation, setNameValidation] = useState(false);
const [groupValidationError, setGroupValidationError] = useState(false);
const [error, setError] = useState("");
const [msgError, setMsgError] = useState("");
const [alert, setAlert] = useState(false);
const [id, setId] = useState();
const [formList, setFormList] = useState([]);
Expand Down Expand Up @@ -71,7 +73,7 @@ const SubjectTypeCreate = ({ organisationConfig }) => {
if (!groupValidationError) {
const [s3FileKey, error] = await uploadImage(subjectType.iconFileS3Key, file, MediaFolder.ICONS);
if (error) {
alert(error);
setAlert(false);
return;
}
let subjectTypeSavePromise = () =>
Expand All @@ -84,18 +86,17 @@ const SubjectTypeCreate = ({ organisationConfig }) => {
.then(response => {
if (response.status === 200) {
setError("");
setMsgError("");
setAlert(true);
setId(response.data.id);
return response;
}
})
.then(response => {
saveMessageRules(entityType, response.data.subjectTypeId, rules);
})
.then(response => saveMessageRules(entityType, response.data.subjectTypeId, rules))
.catch(error => {
setError(error.response.data.message);
setAlert(false);
error.response.data.message ? setError(error.response.data.message) : setMsgError(getDBValidationError(error));
});

return subjectTypeSavePromise();
}
};
Expand Down Expand Up @@ -124,6 +125,7 @@ const SubjectTypeCreate = ({ organisationConfig }) => {
onChange={onRulesChange}
entityType={entityType}
entityTypeId={subjectType.subjectTypeId}
msgError={msgError}
/>
) : (
<></>
Expand Down
6 changes: 5 additions & 1 deletion src/adminApp/SubjectType/SubjectTypeEdit.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@ import { getMessageRules, getMessageTemplates, saveMessageRules } from "../servi
import MessageRules from "../../formDesigner/components/MessageRule/MessageRules";
import { connect } from "react-redux";
import { SubjectTypeType } from "./Types";
import { getDBValidationError } from "../../formDesigner/common/ErrorUtil";

const SubjectTypeEdit = ({ organisationConfig, ...props }) => {
const [subjectType, dispatch] = useReducer(subjectTypeReducer, subjectTypeInitialState);
const [nameValidation, setNameValidation] = useState(false);
const [groupValidationError, setGroupValidationError] = useState(false);
const [error, setError] = useState("");
const [msgError, setMsgError] = useState("");
const [redirectShow, setRedirectShow] = useState(false);
const [subjectTypeData, setSubjectTypeData] = useState({});
const [deleteAlert, setDeleteAlert] = useState(false);
Expand Down Expand Up @@ -115,12 +117,13 @@ const SubjectTypeEdit = ({ organisationConfig, ...props }) => {
.then(response => {
if (response.status === 200) {
setError("");
setMsgError("");
}
})
.then(() => saveMessageRules(entityType, subjectType.subjectTypeId, rules))
.then(() => setRedirectShow(true))
.catch(error => {
setError(error.response.data.message);
error.response.data.message ? setError(error.response.data.message) : setMsgError(getDBValidationError(error));
});

return subjectTypeSavePromise();
Expand Down Expand Up @@ -181,6 +184,7 @@ const SubjectTypeEdit = ({ organisationConfig, ...props }) => {
onChange={onRulesChange}
entityType={entityType}
entityTypeId={subjectType.subjectTypeId}
msgError={msgError}
/>
) : (
<></>
Expand Down
10 changes: 9 additions & 1 deletion src/formDesigner/common/ErrorUtil.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { find, get, isEmpty, isNil, replace, split } from "lodash";
import { find, get, isEmpty, isNil, join, replace, split } from "lodash";
import FormLabel from "@material-ui/core/FormLabel";
import React from "react";

Expand All @@ -14,6 +14,7 @@ export const getErrorByKey = (errors, errorKey) => {
const ServerErrorKey = "SERVER_ERROR";

const SERVER_ERROR_STACKTRACE_STARTING_PATTERN = /^org\..*: /;
const DB_ERROR_STACKTRACE_STARTING_PATTERN = /^javax\..*: /;
const EMPTY_STRING = "";
const NEW_LINE_SEPARATOR = /\n|\r/;
export const createServerError = function(serverError, defaultMessage) {
Expand All @@ -35,3 +36,10 @@ export const hasServerError = function(errors) {
export const removeServerError = function(errors) {
return errors.filter(({ key }) => key !== ServerErrorKey);
};

export const getDBValidationError = function(serverError, defaultMessage) {
const formError = {};
formError.key = ServerErrorKey;
let errorMessage = `${get(serverError, "response.data") || get(serverError, "message") || defaultMessage}`;
return join(split(replace(errorMessage, DB_ERROR_STACKTRACE_STARTING_PATTERN, EMPTY_STRING), NEW_LINE_SEPARATOR, 3));
};
8 changes: 7 additions & 1 deletion src/formDesigner/components/MessageRule/MessageRules.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ const MessageRules = ({
entityTypeId,
readOnly = false,
fixedReceiverType = null,
templateFetchError
templateFetchError,
msgError
}) => {
const updateRules = index => newRule => {
const newState = [...rules];
Expand Down Expand Up @@ -78,6 +79,11 @@ const MessageRules = ({
disabled={false}
/>
)}
{msgError && msgError !== "" && (
<FormLabel error style={{ marginTop: "10px", fontSize: "12px" }}>
{msgError}
</FormLabel>
)}
</>
)}
</>
Expand Down
7 changes: 5 additions & 2 deletions src/formDesigner/components/UserMessagingConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { DocumentationContainer } from "../../common/components/DocumentationCon
import MessageRules from "./MessageRule/MessageRules";
import { MessageReducer } from "./MessageRule/MessageReducer";
import { getMessageRules, getMessageTemplates, saveMessageRules } from "../../adminApp/service/MessageService";
import { setError } from "../../dataEntryApp/reducers/serverSideRulesReducer";
import { getDBValidationError } from "../common/ErrorUtil";

export const UserMessagingConfig = () => {
const entityType = "User";
Expand Down Expand Up @@ -42,6 +42,7 @@ export const UserMessagingConfig = () => {

const [enableMessagingConfigSave, setEnableMessagingConfigSave] = React.useState(false);
const [notificationAlert, setNotificationAlert] = useState(false);
const [msgError, setMsgError] = useState("");

const emptyOrgSettings = {
enableMessaging: false
Expand All @@ -68,9 +69,10 @@ export const UserMessagingConfig = () => {
.then(response => {
setNotificationAlert(true);
setEnableMessagingConfigSave(false);
setMsgError("");
})
.catch(error => {
setError(error.response.data.message);
setMsgError(getDBValidationError(error));
});
};

Expand All @@ -94,6 +96,7 @@ export const UserMessagingConfig = () => {
entityType={entityType}
entityTypeId={entityTypeId}
fixedReceiverType={receiverType}
msgError={msgError}
/>
) : (
<div>
Expand Down
24 changes: 18 additions & 6 deletions src/formDesigner/views/CreateEditConcept.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import PropTypes from "prop-types";
import Box from "@material-ui/core/Box";
import { Title } from "react-admin";
import KeyValues from "../components/KeyValues";
import { filter, find, isEmpty, replace, sortBy, toLower, trim } from "lodash";
import { filter, find, isEmpty, remove, replace, sortBy, toLower, trim } from "lodash";
import { SaveComponent } from "../../common/components/SaveComponent";
import { DocumentationContainer } from "../../common/components/DocumentationContainer";
import { AvniTextField } from "../../common/components/AvniTextField";
Expand Down Expand Up @@ -74,11 +74,13 @@ const checkForEmptyAnswerNames = answers => {

const checkForDuplicateAnswers = answers => {
const uniqueCodedAnswerNames = new Set();
answers.forEach(answer => {
if (uniqueCodedAnswerNames.size === uniqueCodedAnswerNames.add(answer.name).size) {
answer["isAnswerHavingError"] = { isErrored: true, type: "duplicate" };
}
});
answers
.filter(answer => answer && !answer.voided)
.forEach(answer => {
if (uniqueCodedAnswerNames.size === uniqueCodedAnswerNames.add(answer.name).size) {
answer["isAnswerHavingError"] = { isErrored: true, type: "duplicate" };
}
});
};

class CreateEditConcept extends Component {
Expand Down Expand Up @@ -198,6 +200,7 @@ class CreateEditConcept extends Component {
http
.get(encodedURL)
.then(response => {
this.removeDuplicateNonVoidedAnswers(answers, index, answers[index].name);
this.setState({
answers
});
Expand Down Expand Up @@ -237,11 +240,20 @@ class CreateEditConcept extends Component {
onChangeAnswerName = (answerName, index) => {
const answers = [...this.state.answers];
answers[index].name = answerName;
this.removeDuplicateVoidedAnswers(answers, index, answerName);
this.setState({
answers
});
};

removeDuplicateVoidedAnswers(answers, index, answerName) {
remove(answers, (answer, idx) => idx !== index && answer.voided && answer.name === answerName);
}

removeDuplicateNonVoidedAnswers(answers, index, answerName) {
remove(answers, (answer, idx) => idx !== index && !answer.voided && answer.name === answerName);
}

onMoveUp = index => {
this.setState({
answers: moveUp(this.state.answers, index)
Expand Down
Loading

0 comments on commit fac4cb4

Please sign in to comment.