Forum Message UI Improvement (Thesis Board #3470) #61
@ -27,5 +27,5 @@ public interface ProjectForumService {
|
|||||||
|
|
||||||
boolean hasUnreadThreads(Project project, User user);
|
boolean hasUnreadThreads(Project project, User user);
|
||||||
|
|
||||||
int getUnreadThreadsCount(Project project, User user);
|
long getUnreadThreadsCount(Project project, User user);
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,9 @@ public class ProjectForumServiceImpl implements ProjectForumService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getUnreadThreadsCount(Project project, User user) {
|
public long getUnreadThreadsCount(Project project, User user) {
|
||||||
|
return projectThreadRepository.getUnreadThreadsCount(project, user);
|
||||||
|
/*
|
||||||
List<ProjectThread> threads = getThreads(project);
|
List<ProjectThread> threads = getThreads(project);
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (ProjectThread thread : threads) {
|
for (ProjectThread thread : threads) {
|
||||||
@ -116,6 +118,8 @@ public class ProjectForumServiceImpl implements ProjectForumService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -5,6 +5,7 @@ import se.su.dsv.scipro.system.JpaRepository;
|
|||||||
import se.su.dsv.scipro.system.QueryDslPredicateExecutor;
|
import se.su.dsv.scipro.system.QueryDslPredicateExecutor;
|
||||||
import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
|
import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
|
||||||
import se.su.dsv.scipro.project.Project;
|
import se.su.dsv.scipro.project.Project;
|
||||||
|
import se.su.dsv.scipro.system.User;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -13,4 +14,6 @@ public interface ProjectThreadRepository extends JpaRepository<ProjectThread, Lo
|
|||||||
|
|
||||||
List<ProjectThread> findByProject(Project project);
|
List<ProjectThread> findByProject(Project project);
|
||||||
|
|
||||||
|
long getUnreadThreadsCount(Project project, User user);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package se.su.dsv.scipro.forum;
|
package se.su.dsv.scipro.forum;
|
||||||
|
|
||||||
|
import jakarta.persistence.Query;
|
||||||
import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
|
import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
|
||||||
import se.su.dsv.scipro.forum.dataobjects.QProjectThread;
|
import se.su.dsv.scipro.forum.dataobjects.QProjectThread;
|
||||||
import se.su.dsv.scipro.project.Project;
|
import se.su.dsv.scipro.project.Project;
|
||||||
@ -8,6 +9,8 @@ import se.su.dsv.scipro.system.GenericRepo;
|
|||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.inject.Provider;
|
import jakarta.inject.Provider;
|
||||||
import jakarta.persistence.EntityManager;
|
import jakarta.persistence.EntityManager;
|
||||||
|
import se.su.dsv.scipro.system.User;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ProjectThreadRepositoryImpl extends GenericRepo<ProjectThread, Long> implements ProjectThreadRepository {
|
public class ProjectThreadRepositoryImpl extends GenericRepo<ProjectThread, Long> implements ProjectThreadRepository {
|
||||||
@ -21,4 +24,25 @@ public class ProjectThreadRepositoryImpl extends GenericRepo<ProjectThread, Long
|
|||||||
return findAll(QProjectThread.projectThread.project.eq(project));
|
return findAll(QProjectThread.projectThread.project.eq(project));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getUnreadThreadsCount(Project project, User user) {
|
||||||
|
StringBuilder sql = new StringBuilder()
|
||||||
|
.append("select count(distinct(thread_id)) result ")
|
||||||
|
.append(" from (select fp.thread_id as thread_id, fp.id as post_id, ")
|
||||||
|
.append(" exists (select `read` ")
|
||||||
|
.append(" from forum_post_read_state fprs ")
|
||||||
|
.append(" where fprs.forum_post_id = fp.id and ")
|
||||||
|
.append(" fprs.user_id = :uid and ")
|
||||||
|
.append(" fprs.read = 1) as post_read ")
|
||||||
|
.append(" from project_thread pt, forum_post fp ")
|
||||||
|
.append(" where pt.thread_id = fp.thread_id and ")
|
||||||
|
.append(" pt.project_id = :pid) tbl_ex ")
|
||||||
|
.append(" where post_read = 0");
|
||||||
|
Query query = em().createNativeQuery(sql.toString());
|
||||||
|
query.setParameter("uid", user.getId())
|
||||||
|
.setParameter("pid", project.getId());
|
||||||
|
|
||||||
|
return (Long)query.getSingleResult();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,12 @@ public abstract class NumberOfMessagesPanel extends Panel {
|
|||||||
protected void onComponentTag(ComponentTag tag) {
|
protected void onComponentTag(ComponentTag tag) {
|
||||||
super.onComponentTag(tag);
|
super.onComponentTag(tag);
|
||||||
|
|
||||||
int count = getMessageCount();
|
long count = getMessageCount();
|
||||||
|
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
model.setObject("(" + count + ")");
|
model.setObject("(" + count + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract int getMessageCount();
|
public abstract long getMessageCount();
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
//item.add(container);
|
//item.add(container);
|
||||||
|
|
||||||
//boolean hasUnreadThreads = projectForumService.hasUnreadThreads(projectModel.getObject(), SciProSession.get().getUser());
|
//boolean hasUnreadThreads = projectForumService.hasUnreadThreads(projectModel.getObject(), SciProSession.get().getUser());
|
||||||
int msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(), SciProSession.get().getUser());
|
long msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(), SciProSession.get().getUser());
|
||||||
|
|
||||||
// todo: reconsider name of this id, needs to be improved.
|
// todo: reconsider name of this id, needs to be improved.
|
||||||
Fragment fragment = new Fragment(id, "parentMarkupId", SupervisorMyProjectsPanel.this);
|
Fragment fragment = new Fragment(id, "parentMarkupId", SupervisorMyProjectsPanel.this);
|
||||||
@ -246,7 +246,7 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
|
|
||||||
fragment.add(new NumberOfMessagesPanel("counter") {
|
fragment.add(new NumberOfMessagesPanel("counter") {
|
||||||
@Override
|
@Override
|
||||||
public int getMessageCount() {
|
public long getMessageCount() {
|
||||||
return msgCount;
|
return msgCount;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user