private void notifyJuryElements(PhdThesisProcess process) {

    for (final ThesisJuryElement juryElement : process.getThesisJuryElementsSet()) {

      if (juryElement.isDocumentValidated()) {
        continue;
      }

      if (!juryElement.isInternal()) {
        createExternalAccess(juryElement);
      }

      if (juryElement.getReporter().booleanValue()) {
        sendInitialAlertToReporter(process.getIndividualProgramProcess(), juryElement);
      } else {
        sendAlertToJuryElement(
            process.getIndividualProgramProcess(),
            juryElement,
            "message.phd.request.jury.reviews.external.access.jury.body");
      }
    }

    for (final ThesisJuryElement juryElement : process.getThesisJuryElementsSet()) {
      final PhdParticipant participant = juryElement.getParticipant();
      if (!juryElement.getReporter().booleanValue()) {
        continue;
      }

      new PhdReporterReviewAlert(process.getIndividualProgramProcess(), participant);
    }
  }
  @Override
  protected PhdThesisProcess executeActivity(
      PhdThesisProcess process, User userView, Object object) {

    final PhdThesisProcessBean bean = (PhdThesisProcessBean) object;

    if (bean.isToNotify()) {
      notifyJuryElements(process);
      sendAlertToJuryElement(
          process.getIndividualProgramProcess(),
          process.getPresidentJuryElement(),
          "message.phd.request.jury.reviews.external.access.jury.president.body");
    }

    if (process.getActiveState() != PhdThesisProcessStateType.WAITING_FOR_JURY_REPORTER_FEEDBACK) {
      process.createState(
          PhdThesisProcessStateType.WAITING_FOR_JURY_REPORTER_FEEDBACK, userView.getPerson(), "");
    }

    bean.setThesisProcess(process);
    if (process.getMeetingProcess() == null) {
      Process.createNewProcess(userView, PhdMeetingSchedulingProcess.class, bean);
    }

    return process;
  }
  @Override
  protected void activityPreConditions(PhdThesisProcess process, User userView) {

    if (!process.isJuryValidated()) {
      throw new PreConditionNotValidException();
    }

    if (process.hasState(PhdThesisProcessStateType.WAITING_FOR_JURY_REPORTER_FEEDBACK)) {
      throw new PreConditionNotValidException();
    }

    if (!process.isAllowedToManageProcess(userView)) {
      throw new PreConditionNotValidException();
    }
  }
Exemple #4
0
  @Override
  protected void activityPreConditions(PhdThesisProcess process, IUserView userView) {

    if (!process.isJuryValidated()) {
      throw new PreConditionNotValidException();
    }

    if (process.getActiveState() != PhdThesisProcessStateType.WAITING_FOR_FINAL_GRADE) {
      throw new PreConditionNotValidException();
    }

    if (!process.isAllowedToManageProcess(userView)) {
      throw new PreConditionNotValidException();
    }
  }
 private int getDaysLeftForReview(PhdThesisProcess process) {
   return Days.daysBetween(
           process
               .getWhenJuryValidated()
               .plusDays(PhdReporterReviewAlert.getReporterReviewDeadlineDays()),
           new LocalDate())
       .getDays();
 }
  @Override
  protected void activityPreConditions(PhdThesisProcess process, IUserView userView) {

    if (!process.isJuryValidated()) {
      throw new PreConditionNotValidException();
    }

    if (!process.hasState(PhdThesisProcessStateType.WAITING_FOR_JURY_REPORTER_FEEDBACK)) {
      throw new PreConditionNotValidException();
    }

    if (process.isAllowedToManageProcess(userView)) {
      return;
    }

    if (!process.isParticipant(userView.getPerson())) {
      throw new PreConditionNotValidException();
    }

    final ThesisJuryElement element = process.getThesisJuryElement(userView.getPerson());
    if (element == null || !element.getReporter().booleanValue()) {
      throw new PreConditionNotValidException();
    }
  }
Exemple #7
0
  @Override
  protected PhdThesisProcess executeActivity(
      PhdThesisProcess process, IUserView userView, Object object) {
    final PhdThesisProcessBean bean = (PhdThesisProcessBean) object;

    for (final PhdProgramDocumentUploadBean each : bean.getDocuments()) {
      if (each.hasAnyInformation()) {
        process.addDocument(each, userView.getPerson());
      }
    }

    checkParameters(bean);

    LocalDate conclusionDate = bean.getConclusionDate();
    process.setConclusionDate(conclusionDate);
    process.setFinalGrade(bean.getFinalGrade());

    if (!process.hasState(PhdThesisProcessStateType.CONCLUDED)) {
      process.createState(
          PhdThesisProcessStateType.CONCLUDED, userView.getPerson(), bean.getRemarks());
    }

    return process;
  }