package pt.estgp.estgweb.services.blogs;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.data.ImageManager;
import pt.estgp.estgweb.services.sms.SMSJob;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.Email;
import org.apache.log4j.Logger;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import jomm.utils.MyCalendar;
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class CreateBlogPostService
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(CreateBlogPostService.
class);
public BlogPostView run
(BlogPostView bPV,
long blogId, UserSession userSession
) throws ServiceException
{
BlogPostImpl bP
;
if(bPV.
getId() <= 0
)
{
bP = DomainObjectFactory.
createBlogPostImpl();
MyCalendar c =
new MyCalendar
();
bP.
setYear(c.
getYear());
bP.
setMonth(c.
getMonth());
bP.
setMonthId(c.
getMonth() +
"/" + c.
getYear());
}
else
bP =
(BlogPostImpl
) DaoFactory.
getBlogPostDaoImpl().
load(bPV.
getId());
if(bP.
getImage() !=
null && bPV.
getImage() !=
null)
{
DaoFactory.
getImageDaoImpl().
delete(bP.
getImage().
getId());
}
if(bPV.
getImage() !=
null)
{
DaoFactory.
getImageDaoImpl().
save(bPV.
getImage());
ImageManager.
store((ImageImpl
) bPV.
getImage());
}
Blog b = DaoFactory.
getBlogDaoImpl().
load(blogId
);
if(b.
isAutoValidation() || b.
isOwnedBy(userSession.
getUser(),
true) ||
(userSession.
getUser() !=
null && userSession.
getUser().
isSuperuserOrAdmin()))
{
bPV.
setStatus(true);
}
bPV.
persistViewInObject(bP
);
bP.
setOwner(userSession.
getUser());
bP.
setBlog(b
);
bP.
setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
DaoFactory.
getBlogPostDaoImpl().
save(bP
);
trySendPostEmail
(bP,userSession
);
return new BlogPostView
(bP
);
}
private void trySendPostEmail
(BlogPost post, UserSession userSession
)
{
if(post.
getBlog() instanceof CourseUnitBlog
&& Globals.
EMAIL_COURSEUNIT_BLOGS)
{
CourseUnit c =
((CourseUnitBlog
)post.
getBlog()).
getCourseUnit();
List
<User
> users =
new ArrayList
<User
>();
if(c.
getStudents() !=
null)
users.
addAll(c.
getStudents());
if(c.
getTeachers() !=
null)
users.
addAll(c.
getTeachers());
sendPostEmail
(post,post.
getTitle(), userSession, users
);
}
}
private void sendPostEmail
(BlogPost p,
1.5.0/docs/api/java/lang/String.html">String desc, UserSession userSession, List
<User
> users
)
{
SendEmailService sendEmailService =
new SendEmailService
();
Email e = sendEmailService.
getCourseUnitBlogPostEmail(p, LangEnum.
PORTUGUESE,userSession.
getName(),users
);
EMAILJob emailJob =
new EMAILJob
(e
);
JobScheduleService.
getInstance().
scheduleNow(emailJob,
"CourseUnit BlogPost Email:" + desc,userSession
);
}
}