/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FenixEdu Academic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FenixEdu Academic. If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.ui.struts.action.phd.seminar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.fenixedu.academic.domain.exceptions.DomainException;
import org.fenixedu.academic.domain.phd.PhdIndividualProgramDocumentType;
import org.fenixedu.academic.domain.phd.PhdProgramDocumentUploadBean;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.RejectComission;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.RejectReport;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.SchedulePresentationDate;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.SubmitComission;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.UploadReport;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.ValidateComission;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcess.ValidateReport;
import org.fenixedu.academic.domain.phd.seminar.PublicPresentationSeminarProcessBean;
import org.fenixedu.academic.service.services.caseHandling.ExecuteProcessActivity;
import org.fenixedu.academic.ui.struts.action.phd.PhdProcessDA;
abstract public class CommonPublicPresentationSeminarDA extends PhdProcessDA {
@Override
protected PublicPresentationSeminarProcess getProcess(HttpServletRequest request) {
return (PublicPresentationSeminarProcess) super.getProcess(request);
}
public ActionForward viewIndividualProgramProcess(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) {
return viewIndividualProgramProcess(request, getProcess(request));
}
protected ActionForward viewIndividualProgramProcess(HttpServletRequest request,
final PublicPresentationSeminarProcess process) {
return redirect(String.format("/phdIndividualProgramProcess.do?method=viewProcess&processId=%s", process
.getIndividualProgramProcess().getExternalId()), request);
}
// submit comission
public ActionForward prepareSubmitComission(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
final PublicPresentationSeminarProcessBean submitComissionBean =
new PublicPresentationSeminarProcessBean(getProcess(request).getIndividualProgramProcess());
final PhdProgramDocumentUploadBean documentBean =
new PhdProgramDocumentUploadBean(PhdIndividualProgramDocumentType.PUBLIC_PRESENTATION_SEMINAR_COMISSION);
submitComissionBean.setDocument(documentBean);
request.setAttribute("submitComissionBean", submitComissionBean);
return mapping.findForward("submitComission");
}
public ActionForward prepareSubmitComissionInvalid(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
request.setAttribute("submitComissionBean", getRenderedObject("submitComissionBean"));
return mapping.findForward("submitComission");
}
public ActionForward submitComission(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), SubmitComission.class, getRenderedObject("submitComissionBean"));
addSuccessMessage(request, "message.comission.submitted.with.success");
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("submitComission");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
// end of submit comission
// validate comission
public ActionForward prepareValidateComission(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
final PublicPresentationSeminarProcessBean validateComissionBean =
new PublicPresentationSeminarProcessBean(getProcess(request).getIndividualProgramProcess());
final PhdProgramDocumentUploadBean documentBean =
new PhdProgramDocumentUploadBean(PhdIndividualProgramDocumentType.PUBLIC_PRESENTATION_SEMINAR_COMISSION);
validateComissionBean.setDocument(documentBean);
request.setAttribute("validateComissionBean", validateComissionBean);
return mapping.findForward("validateComission");
}
public ActionForward prepareValidateComissionInvalid(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
request.setAttribute("validateComissionBean", getRenderedObject("validateComissionBean"));
return mapping.findForward("validateComission");
}
public ActionForward validateComission(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), ValidateComission.class, getRenderedObject("validateComissionBean"));
addSuccessMessage(request, "message.comission.validated.with.success");
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("validateComission");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
public ActionForward rejectComission(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), RejectComission.class, getRenderedObject("validateComissionBean"));
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("validateComission");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
// end of validate comission
// schedule presentation date
public ActionForward prepareSchedulePresentationDate(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
final PublicPresentationSeminarProcessBean schedulePresentationDateBean =
new PublicPresentationSeminarProcessBean(getProcess(request).getIndividualProgramProcess());
request.setAttribute("schedulePresentationDateBean", schedulePresentationDateBean);
return mapping.findForward("schedulePresentationDate");
}
public ActionForward prepareSchedulePresentationDateInvalid(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("schedulePresentationDateBean", getRenderedObject("schedulePresentationDateBean"));
return mapping.findForward("schedulePresentationDate");
}
public ActionForward schedulePresentationDate(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), SchedulePresentationDate.class,
getRenderedObject("schedulePresentationDateBean"));
addSuccessMessage(request, "message.presentation.date.scheduled.with.success");
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("schedulePresentationDate");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
// end of schedule presentation date
// upload report
public ActionForward prepareUploadReport(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
final PublicPresentationSeminarProcessBean uploadReportBean =
new PublicPresentationSeminarProcessBean(getProcess(request).getIndividualProgramProcess());
request.setAttribute("uploadReportBean", uploadReportBean);
return mapping.findForward("uploadReport");
}
public ActionForward prepareUploadReportInvalid(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
request.setAttribute("uploadReportBean", getRenderedObject("uploadReportBean"));
return mapping.findForward("uploadReport");
}
public ActionForward uploadReport(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), UploadReport.class, getRenderedObject("uploadReportBean"));
addSuccessMessage(request, "message.public.presentation.seminar.report.uploaded.with.success");
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("uploadReport");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
// end of upload report
// validate report
public ActionForward prepareValidateReport(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
final PublicPresentationSeminarProcessBean validateReportBean =
new PublicPresentationSeminarProcessBean(getProcess(request).getIndividualProgramProcess());
request.setAttribute("validateReportBean", validateReportBean);
return mapping.findForward("validateReport");
}
public ActionForward prepareValidateReportInvalid(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
request.setAttribute("validateReportBean", getRenderedObject("validateReportBean"));
return mapping.findForward("validateReport");
}
public ActionForward validateReport(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), ValidateReport.class, getRenderedObject("validateReportBean"));
addSuccessMessage(request, "message.public.presentation.seminar.report.validated.with.success");
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("validateReport");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
public ActionForward rejectReport(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
ExecuteProcessActivity.run(getProcess(request), RejectReport.class, getRenderedObject("validateReportBean"));
} catch (DomainException e) {
addErrorMessage(request, e.getKey(), e.getArgs());
return mapping.findForward("validateReport");
}
return viewIndividualProgramProcess(request, getProcess(request));
}
// end of validate report
}