UserSummary.java
package com.wilzwert.myjobs.core.domain.model.user;
import com.wilzwert.myjobs.core.domain.model.job.JobStatus;
import com.wilzwert.myjobs.core.domain.model.job.JobStatusMeta;
import java.util.Map;
import java.util.Set;
/**
* @author Wilhelm Zwertvaegher
* Date:03/06/2025
* Time:09:43
* Represents a User's summary, which consists of metadata about its jobs
* A related use case gets and returns a user's summary, which may be useful
* for a client (frontend...) to display only appropriate filters
*/
public final class UserSummary {
private final int jobsCount;
private final int activeJobsCount;
private final int inactiveJobsCount;
private final int lateJobsCount;
private final Map<JobStatus, Integer> jobStatuses;
private final Set<JobStatusMeta> usableJobStatusMetas;
public UserSummary(int jobsCount, int activeJobsCount, int inactiveJobsCount, int lateJobsCount, Map<JobStatus, Integer> jobStatuses, Set<JobStatusMeta> usableJobStatusMetas) {
this.jobsCount = jobsCount;
this.activeJobsCount = activeJobsCount;
this.inactiveJobsCount = inactiveJobsCount;
this.lateJobsCount = lateJobsCount;
this.jobStatuses = jobStatuses;
this.usableJobStatusMetas = usableJobStatusMetas;
}
public int getJobsCount() {
return jobsCount;
}
public int getActiveJobsCount() {
return activeJobsCount;
}
public int getLateJobsCount() {
return lateJobsCount;
}
public int getInactiveJobsCount() {
return inactiveJobsCount;
}
public Map<JobStatus, Integer> getJobStatuses() {
return jobStatuses;
}
public Set<JobStatusMeta> getUsableJobStatusMetas() {
return usableJobStatusMetas;
}
@Override
public String toString() {
return "UserSummary [jobsCount=" + jobsCount
+ ", activeJobsCount=" + activeJobsCount
+ ", inactiveJobsCount=" + inactiveJobsCount
+ ", lateJobsCount=" + lateJobsCount
+ ", jobStatuses=" + jobStatuses
+ ", usableJobStatusMetas=" + usableJobStatusMetas
+ "]";
}
}