package cn.novalon.manage.db.converter;

import cn.novalon.manage.sys.core.domain.SysLoginLog;
import cn.novalon.manage.db.entity.SysLoginLogEntity;

import org.springframework.stereotype.Component;

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

/**
 * 登录日志实体转换器
 * 
 * @author 张翔
 * @date 2026-03-13
 */
@Component
public class SysLoginLogConverter {

    public SysLoginLog toDomain(SysLoginLogEntity entity) {
        if (entity == null) {
            return null;
        }
        SysLoginLog domain = new SysLoginLog();
        domain.setId(entity.getId());
        domain.setUsername(entity.getUsername());
        domain.setIp(entity.getIp());
        domain.setLocation(entity.getLocation());
        domain.setBrowser(entity.getBrowser());
        domain.setOs(entity.getOs());
        domain.setStatus(entity.getStatus());
        domain.setMessage(entity.getMessage());
        domain.setLoginTime(entity.getLoginTime());
        return domain;
    }

    public SysLoginLogEntity toEntity(SysLoginLog domain) {
        if (domain == null) {
            return null;
        }
        SysLoginLogEntity entity = new SysLoginLogEntity();
        entity.setId(domain.getId());
        entity.setUsername(domain.getUsername());
        entity.setIp(domain.getIp());
        entity.setLocation(domain.getLocation());
        entity.setBrowser(domain.getBrowser());
        entity.setOs(domain.getOs());
        entity.setStatus(domain.getStatus());
        entity.setMessage(domain.getMessage());
        entity.setLoginTime(domain.getLoginTime());
        return entity;
    }

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

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