TraceFilter.java

package fr.avenirsesr.portfolio.trace.domain.filter;

import fr.avenirsesr.portfolio.file.domain.model.shared.EFileType;
import fr.avenirsesr.portfolio.trace.domain.model.ETraceStatus;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

public record TraceFilter(
    Boolean isAssociated,
    List<EFileType> fileTypes,
    List<UUID> skillIds,
    List<ETraceStatus> statuses) {
  public Map<ETraceFilterKey, Object> toMap() {
    var map = new HashMap<ETraceFilterKey, Object>();
    map.put(ETraceFilterKey.IS_ASSOCIATED, isAssociated);
    if (statuses != null && !statuses.isEmpty()) map.put(ETraceFilterKey.STATUS, statuses);
    if (fileTypes != null && !fileTypes.isEmpty()) map.put(ETraceFilterKey.FILE_TYPE, fileTypes);
    if (skillIds != null && !skillIds.isEmpty()) {
      map.put(ETraceFilterKey.SKILL, skillIds);
    }
    return map;
  }
}