LoadUnitMapper.java

package com.v1rex.liftnexus.loadunit.mapper;

import com.v1rex.liftnexus.loadunit.domain.LoadUnit;
import com.v1rex.liftnexus.loadunit.dto.LoadUnitRequest;
import com.v1rex.liftnexus.loadunit.dto.LoadUnitResponse;
import com.v1rex.liftnexus.storagebin.domain.StorageBin;
import org.springframework.stereotype.Component;

@Component
public class LoadUnitMapper {

  public LoadUnit toEntity(LoadUnitRequest request, StorageBin currentBin) {
    if (request == null) {
      return null;
    }
    return LoadUnit.builder()
        .trackingCode(request.trackingCode())
        .weightKg(request.weightKg())
        .status(request.status())
        .currentBin(currentBin)
        .build();
  }

  public LoadUnitResponse toResponse(LoadUnit entity) {
    if (entity == null) {
      return null;
    }
    Long binId = entity.getCurrentBin() != null ? entity.getCurrentBin().getId() : null;

    return new LoadUnitResponse(
        entity.getId(),
        entity.getTrackingCode(),
        entity.getWeightKg(),
        entity.getStatus(),
        binId,
        entity.getVersion());
  }
}