package cn.novalon.gym.manage.db.converter;

import cn.novalon.gym.manage.sys.core.domain.SysDictData;
import cn.novalon.gym.manage.db.entity.SysDictDataEntity;

import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 字典数据实体转换器
 * 
 * @author 张翔
 * @date 2026-03-13
 */
@Component
public class SysDictDataConverter {

    public SysDictData toDomain(SysDictDataEntity entity) {
        if (entity == null) {
            return null;
        }
        SysDictData domain = new SysDictData();
        domain.setId(entity.getId());
        domain.setDictSort(entity.getDictSort());
        domain.setDictLabel(entity.getDictLabel());
        domain.setDictValue(entity.getDictValue());
        domain.setDictType(entity.getDictType());
        domain.setCssClass(entity.getCssClass());
        domain.setListClass(entity.getListClass());
        domain.setIsDefault(entity.getIsDefault());
        domain.setStatus(entity.getStatus());
        domain.setCreatedAt(entity.getCreatedAt());
        domain.setUpdatedAt(entity.getUpdatedAt());
        return domain;
    }

    public SysDictDataEntity toEntity(SysDictData domain) {
        if (domain == null) {
            return null;
        }
        SysDictDataEntity entity = new SysDictDataEntity();
        entity.setId(domain.getId());
        entity.setDictSort(domain.getDictSort());
        entity.setDictLabel(domain.getDictLabel());
        entity.setDictValue(domain.getDictValue());
        entity.setDictType(domain.getDictType());
        entity.setCssClass(domain.getCssClass());
        entity.setListClass(domain.getListClass());
        entity.setIsDefault(domain.getIsDefault());
        entity.setStatus(domain.getStatus());
        entity.setCreatedAt(domain.getCreatedAt());
        entity.setUpdatedAt(domain.getUpdatedAt());
        return entity;
    }

    public List<SysDictData> toDomainList(List<SysDictDataEntity> entities) {
        if (entities == null) {
            return null;
        }
        return entities.stream()
                .map(this::toDomain)
                .collect(Collectors.toList());
    }

    public List<SysDictDataEntity> toEntityList(List<SysDictData> domains) {
        if (domains == null) {
            return null;
        }
        return domains.stream()
                .map(this::toEntity)
                .collect(Collectors.toList());
    }
}
