package org.iatoki.judgels.raguel.forum.module;
import com.google.inject.Inject;
import org.iatoki.judgels.play.IdentityUtils;
import javax.inject.Singleton;
@Singleton
public final class ForumModuleServiceImpl implements ForumModuleService {
private final ForumModuleDao forumModuleDao;
private final ForumModuleFactory forumModuleFactory;
@Inject
public ForumModuleServiceImpl(ForumModuleDao forumModuleDao, ForumModuleFactory forumModuleFactory) {
this.forumModuleDao = forumModuleDao;
this.forumModuleFactory = forumModuleFactory;
}
@Override
public void enableModule(String forumJid, ForumModules forumModule) {
if (forumModuleDao.existsInForumByName(forumJid, forumModule.name())) {
// TODO check by forum style
ForumModuleModel forumModuleModel = forumModuleDao.findInForumByName(forumJid, forumModule.name());
forumModuleModel.enabled = true;
forumModuleDao.edit(forumModuleModel, IdentityUtils.getUserJid(), IdentityUtils.getIpAddress());
} else {
ForumModuleModel forumModuleModel = new ForumModuleModel();
forumModuleModel.forumJid = forumJid;
forumModuleModel.name = forumModule.name();
forumModuleModel.config = forumModuleFactory.createDefaultForumModule(forumModule).toJSONString();
forumModuleModel.enabled = true;
forumModuleDao.persist(forumModuleModel, IdentityUtils.getUserJid(), IdentityUtils.getIpAddress());
}
}
@Override
public void disableModule(String forumJid, ForumModules forumModule) {
if (forumModuleDao.existsInForumByName(forumJid, forumModule.name())) {
ForumModuleModel forumModuleModel = forumModuleDao.findInForumByName(forumJid, forumModule.name());
forumModuleModel.enabled = false;
forumModuleDao.edit(forumModuleModel, IdentityUtils.getUserJid(), IdentityUtils.getIpAddress());
}
}
}