Subversion Repositories bacoAlunos

Rev

Rev 1306 | Rev 1782 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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);
    }
}