in study-builder/fdahpStudyDesigner/src/main/java/com/fdahpstudydesigner/dao/StudyQuestionnaireDAOImpl.java [3998:4291]
public QuestionnaireBo saveORUpdateQuestionnaire(
QuestionnaireBo questionnaireBo, SessionObject sessionObject, String customStudyId) {
logger.entry("begin saveORUpdateQuestionnaire()");
Session session = null;
try {
session = hibernateTemplate.getSessionFactory().openSession();
transaction = session.beginTransaction();
session.saveOrUpdate(questionnaireBo);
if (questionnaireBo.getType().equalsIgnoreCase(FdahpStudyDesignerConstants.SCHEDULE)) {
if ((questionnaireBo != null) && (questionnaireBo.getId() != null)) {
if ((questionnaireBo.getQuestionnairesFrequenciesList() != null)
&& !questionnaireBo.getQuestionnairesFrequenciesList().isEmpty()) {
query =
session
.createSQLQuery("CALL deleteQuestionnaireFrequencies(:questionnaireId)")
.setString("questionnaireId", questionnaireBo.getId());
query.executeUpdate();
for (QuestionnairesFrequenciesBo questionnairesFrequenciesBo :
questionnaireBo.getQuestionnairesFrequenciesList()) {
if (questionnairesFrequenciesBo.getFrequencyTime() != null) {
questionnairesFrequenciesBo.setFrequencyTime(
FdahpStudyDesignerUtil.getFormattedDate(
questionnairesFrequenciesBo.getFrequencyTime(),
FdahpStudyDesignerConstants.SDF_TIME,
FdahpStudyDesignerConstants.UI_SDF_TIME));
if (questionnairesFrequenciesBo.getQuestionnairesId() == null) {
questionnairesFrequenciesBo.setId(null);
questionnairesFrequenciesBo.setQuestionnairesId(questionnaireBo.getId());
}
session.saveOrUpdate(questionnairesFrequenciesBo);
}
}
}
if (questionnaireBo.getQuestionnairesFrequenciesBo() != null) {
QuestionnairesFrequenciesBo questionnairesFrequenciesBo =
questionnaireBo.getQuestionnairesFrequenciesBo();
if (!questionnaireBo
.getFrequency()
.equalsIgnoreCase(FdahpStudyDesignerConstants.FREQUENCY_TYPE_DAILY)
&& !questionnaireBo
.getFrequency()
.equalsIgnoreCase(questionnaireBo.getPreviousFrequency())) {
query =
session
.createSQLQuery("CALL deleteQuestionnaireFrequencies(:questionnaireId)")
.setString("questionnaireId", questionnaireBo.getId());
query.executeUpdate();
}
if ((questionnairesFrequenciesBo.getFrequencyDate() != null)
|| (questionnairesFrequenciesBo.getFrequencyTime() != null)
|| questionnaireBo
.getFrequency()
.equalsIgnoreCase(FdahpStudyDesignerConstants.FREQUENCY_TYPE_ONE_TIME)) {
if (questionnairesFrequenciesBo.getQuestionnairesId() == null) {
questionnairesFrequenciesBo.setQuestionnairesId(questionnaireBo.getId());
}
if ((questionnaireBo.getStudyLifetimeStart() != null)
&& !questionnaireBo.getStudyLifetimeStart().isEmpty()) {
questionnairesFrequenciesBo.setFrequencyDate(
questionnaireBo.getStudyLifetimeStart());
} else {
questionnairesFrequenciesBo.setFrequencyDate(
StringUtils.isNotEmpty(questionnairesFrequenciesBo.getFrequencyDate())
? FdahpStudyDesignerUtil.getFormattedDate(
questionnairesFrequenciesBo.getFrequencyDate(),
FdahpStudyDesignerConstants.UI_SDF_DATE,
FdahpStudyDesignerConstants.DB_SDF_DATE)
: null);
}
if ((questionnaireBo.getQuestionnairesFrequenciesBo().getFrequencyTime() != null)
&& !questionnaireBo
.getQuestionnairesFrequenciesBo()
.getFrequencyTime()
.isEmpty()) {
questionnaireBo
.getQuestionnairesFrequenciesBo()
.setFrequencyTime(
FdahpStudyDesignerUtil.getFormattedDate(
questionnaireBo.getQuestionnairesFrequenciesBo().getFrequencyTime(),
FdahpStudyDesignerConstants.SDF_TIME,
FdahpStudyDesignerConstants.UI_SDF_TIME));
}
session.saveOrUpdate(questionnairesFrequenciesBo);
}
}
if ((questionnaireBo.getQuestionnaireCustomScheduleBo() != null)
&& !questionnaireBo.getQuestionnaireCustomScheduleBo().isEmpty()) {
query =
session
.createSQLQuery("CALL deleteQuestionnaireFrequencies(:questionnaireId)")
.setString("questionnaireId", questionnaireBo.getId());
query.executeUpdate();
for (QuestionnaireCustomScheduleBo questionnaireCustomScheduleBo :
questionnaireBo.getQuestionnaireCustomScheduleBo()) {
if (questionnaireCustomScheduleBo.getQuestionnairesId() == null) {
questionnaireCustomScheduleBo.setQuestionnairesId(questionnaireBo.getId());
}
if ((questionnaireCustomScheduleBo.getFrequencyEndDate() != null)
&& !questionnaireCustomScheduleBo.getFrequencyEndDate().isEmpty()) {
questionnaireCustomScheduleBo.setFrequencyEndDate(
FdahpStudyDesignerUtil.getFormattedDate(
questionnaireCustomScheduleBo.getFrequencyEndDate(),
FdahpStudyDesignerConstants.UI_SDF_DATE,
FdahpStudyDesignerConstants.SD_DATE_FORMAT));
}
if ((questionnaireCustomScheduleBo.getFrequencyStartDate() != null)
&& !questionnaireCustomScheduleBo.getFrequencyStartDate().isEmpty()) {
questionnaireCustomScheduleBo.setFrequencyStartDate(
FdahpStudyDesignerUtil.getFormattedDate(
questionnaireCustomScheduleBo.getFrequencyStartDate(),
FdahpStudyDesignerConstants.UI_SDF_DATE,
FdahpStudyDesignerConstants.SD_DATE_FORMAT));
}
if ((questionnaireCustomScheduleBo.getFrequencyEndTime() != null)
&& !questionnaireCustomScheduleBo.getFrequencyEndTime().isEmpty()) {
questionnaireCustomScheduleBo.setFrequencyEndTime(
FdahpStudyDesignerUtil.getFormattedDate(
questionnaireCustomScheduleBo.getFrequencyEndTime(),
FdahpStudyDesignerConstants.SDF_TIME,
FdahpStudyDesignerConstants.UI_SDF_TIME));
}
if ((questionnaireCustomScheduleBo.getFrequencyStartTime() != null)
&& !questionnaireCustomScheduleBo.getFrequencyStartTime().isEmpty()) {
questionnaireCustomScheduleBo.setFrequencyStartTime(
FdahpStudyDesignerUtil.getFormattedDate(
questionnaireCustomScheduleBo.getFrequencyStartTime(),
FdahpStudyDesignerConstants.SDF_TIME,
FdahpStudyDesignerConstants.UI_SDF_TIME));
}
questionnaireCustomScheduleBo.setxDaysSign(
questionnaireCustomScheduleBo.isxDaysSign());
if (questionnaireCustomScheduleBo.getTimePeriodFromDays() != null) {
questionnaireCustomScheduleBo.setTimePeriodFromDays(
questionnaireCustomScheduleBo.getTimePeriodFromDays());
}
questionnaireCustomScheduleBo.setyDaysSign(
questionnaireCustomScheduleBo.isyDaysSign());
if (questionnaireCustomScheduleBo.getTimePeriodToDays() != null) {
questionnaireCustomScheduleBo.setTimePeriodToDays(
questionnaireCustomScheduleBo.getTimePeriodToDays());
}
session.saveOrUpdate(questionnaireCustomScheduleBo);
}
}
}
}
// updating the anchor date of an study while change the
// questionnaire frequency in schedule part
if (!questionnaireBo
.getFrequency()
.equalsIgnoreCase(FdahpStudyDesignerConstants.FREQUENCY_TYPE_ONE_TIME)) {
String updateFromQuery =
"update questions QBO,form_mapping f,questionnaires_steps QSBO SET QBO.use_anchor_date = 0 where "
+ " QBO.id=f.question_id and f.form_id=QSBO.instruction_form_id and QSBO.questionnaires_id=:questionnaireId "
+ " and QSBO.active=1 "
+ " and QSBO.step_type=:stepType "
+ " and QBO.active=1";
query =
session
.createSQLQuery(updateFromQuery)
.setString("questionnaireId", questionnaireBo.getId())
.setString("stepType", FdahpStudyDesignerConstants.FORM_STEP);
query.executeUpdate();
String updateQuestionSteps =
"Update questions QBO,questionnaires_steps QSBO SET QBO.use_anchor_date = 0 where QBO.id=QSBO.instruction_form_id"
+ " and QSBO.questionnaires_id=:questionnaireId "
+ " and QSBO.active=1 and "
+ " QSBO.step_type=:stepType "
+ " and QBO.active=1";
query =
session
.createSQLQuery(updateQuestionSteps)
.setString("questionnaireId", questionnaireBo.getId())
.setString("stepType", FdahpStudyDesignerConstants.QUESTION_STEP);
query.executeUpdate();
}
// updating the stastic option of dashboard while change the
// questionnaire frequency
if ((questionnaireBo.getFrequency() != null)
&& questionnaireBo
.getFrequency()
.equalsIgnoreCase(FdahpStudyDesignerConstants.FREQUENCY_TYPE_DAILY)) {
if ((questionnaireBo.getCurrentFrequency() != null)
&& (questionnaireBo.getPreviousFrequency() != null)
&& !questionnaireBo
.getCurrentFrequency()
.equalsIgnoreCase(questionnaireBo.getPreviousFrequency())) {
updateLineChartSchedule(
questionnaireBo.getId(),
questionnaireBo.getCurrentFrequency(),
sessionObject,
session,
transaction,
customStudyId);
}
} else if ((questionnaireBo.getPreviousFrequency() != null)
&& !questionnaireBo
.getFrequency()
.equalsIgnoreCase(questionnaireBo.getPreviousFrequency())) {
updateLineChartSchedule(
questionnaireBo.getId(),
questionnaireBo.getFrequency(),
sessionObject,
session,
transaction,
customStudyId);
}
if ((questionnaireBo != null) && questionnaireBo.getStatus()) {
auditLogDAO.updateDraftToEditedStatus(
session,
transaction,
sessionObject.getUserId(),
FdahpStudyDesignerConstants.DRAFT_QUESTIONNAIRE,
questionnaireBo.getStudyId());
// Notification Purpose needed Started
queryString = " From StudyBo where customStudyId=:customStudyId and live=1";
StudyBo studyBo =
(StudyBo)
session
.createQuery(queryString)
.setString("customStudyId", customStudyId)
.uniqueResult();
if (studyBo != null) {
queryString = " From StudyBo where id=:studyId";
StudyBo draftStudyBo =
(StudyBo)
session
.createQuery(queryString)
.setString("studyId", questionnaireBo.getStudyId())
.uniqueResult();
NotificationBO notificationBO = null;
queryString =
"From NotificationBO where questionnarieId=:questionnarieId "
+ "and studyId=:studyId ";
notificationBO =
(NotificationBO)
session
.createQuery(queryString)
.setMaxResults(1)
.setString("studyId", questionnaireBo.getStudyId())
.setString("questionnarieId", questionnaireBo.getId())
.uniqueResult();
if (!questionnaireBo.getScheduleType().equalsIgnoreCase("AnchorDate")) {
if (notificationBO == null) {
notificationBO = new NotificationBO();
notificationBO.setStudyId(questionnaireBo.getStudyId());
notificationBO.setCustomStudyId(studyBo.getCustomStudyId());
String platform = FdahpStudyDesignerUtil.getStudyPlatform(studyBo);
notificationBO.setPlatform(platform);
if (StringUtils.isNotEmpty(studyBo.getAppId())) {
notificationBO.setAppId(studyBo.getAppId());
}
notificationBO.setNotificationType(FdahpStudyDesignerConstants.NOTIFICATION_ST);
notificationBO.setNotificationSubType(
FdahpStudyDesignerConstants.NOTIFICATION_SUBTYPE_ACTIVITY);
notificationBO.setNotificationScheduleType(
FdahpStudyDesignerConstants.NOTIFICATION_IMMEDIATE);
notificationBO.setQuestionnarieId(questionnaireBo.getId());
notificationBO.setNotificationStatus(false);
notificationBO.setCreatedBy(sessionObject.getUserId());
notificationBO.setCreatedOn(FdahpStudyDesignerUtil.getCurrentDateTime());
notificationBO.setNotificationSent(false);
} else {
notificationBO.setModifiedBy(sessionObject.getUserId());
notificationBO.setModifiedOn(FdahpStudyDesignerUtil.getCurrentDateTime());
}
notificationBO.setNotificationText(
FdahpStudyDesignerConstants.NOTIFICATION_ACTIVETASK_TEXT
.replace("$shortTitle", questionnaireBo.getTitle())
.replace("$customId", draftStudyBo.getName()));
if (!notificationBO.isNotificationSent()) {
session.saveOrUpdate(notificationBO);
}
}
}
// Notification Purpose needed End
}
transaction.commit();
} catch (Exception e) {
transaction.rollback();
logger.error("StudyQuestionnaireDAOImpl - saveORUpdateQuestionnaire() - Error", e);
} finally {
if (session != null) {
session.close();
}
}
logger.exit("saveORUpdateQuestionnaire() - Ends");
return questionnaireBo;
}