package pt.estgp.estgweb.services.courseunits;
import jomm.utils.PdfUtils;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
import org.dom4j.*;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* So pode editar o programa da unidade o coordenador do curso ou o responsavel da unidade
* ou o docente da unidade ou tem o role de validacao do curso a comissao de curso
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class SaveCourseUnitEvaluation
implements IService
{
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(SaveCourseUnitEvaluation.
class);
public CourseUnitEvaluationView run
(CourseUnitEvaluationView cupv,
1.5.0/docs/api/java/lang/Long.html">Long coursUnitId, UserSession usession
) throws ServiceException,
1.5.0/docs/api/javax/xml/transform/TransformerException.html">TransformerException,
1.5.0/docs/api/java/io/IOException.html">IOException, FOPException
{
CourseUnit c = DaoFactory.
getCourseUnitDaoImpl().
get(coursUnitId
);
CourseUnitEvaluation evaluation = c.
getCourseUnitEvaluation();
if(evaluation ==
null)
{
evaluation =
new CourseUnitEvaluationImpl
();
DaoFactory.
getCourseUnitEvaluationDaoImpl().
save(evaluation
);
c.
setCourseUnitEvaluation(evaluation
);
}
//
if(usession.
getUser() instanceof Teacher
&&
((((Teacher
)(usession.
getUser())).
isTeacherOfCourseUnit(c.
getId(),
true))
||
(c.
getResponsableTeacher()!=
null && usession.
getUser().
getId() == c.
getResponsableTeacher().
getId())
))
{
cupv.
persistViewInObjectTeacher(evaluation
);
}
if(usession.
getUser() instanceof Teacher
&& (((usession.
getUser())).
hasRole(c.
getCourse().
getValidationRole())
||
((usession.
getUser()) == c.
getCourse().
getCoordinator()))
)
{
cupv.
persistViewInObjectTeacher(evaluation
);
}
List
<String
> errors =
new ArrayList
<String
>();
if(usession.
getUser() instanceof Teacher
)
DirectedCoordinatedUnitsService.
sendNotificationsEditedInterestedPeople(c,usession
);
else
{
logger.
info("Nao vai informar docentes");
}
return cupv
;
}
}