package it.integry.integrywmsnative.core.mapper;

import javax.inject.Singleton;

import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
import it.integry.integrywmsnative.core.model.MtbInvent;

@Singleton
public class InventarioMapper extends BaseMapper<MtbInvent, InventarioRoomDTO> {

    private final InventarioRowMapper inventarioRowMapper;

    public InventarioMapper(InventarioRowMapper inventarioRowMapper) {
        this.inventarioRowMapper = inventarioRowMapper;
    }

    @Override
    public InventarioRoomDTO mapRestToRoom(MtbInvent inputData) {
        if(inputData == null) return null;

        var data = new InventarioRoomDTO();
        data.setIdInventario(inputData.getIdInventario());
        data.setCodMdep(inputData.getCodMdep());
        data.setDataInventario(inputData.getDataInventario());
        data.setDataReg(inputData.getDataReg());
        data.setDataVer(inputData.getDataVer());
        data.setFiltro(inputData.getFiltro());
        data.setFlagStato(inputData.getFlagStato());
        data.setFlagOperazione(inputData.getFlagOperazione());
        data.setCodAnag(inputData.getCodAnag());
        data.setCodDtip(inputData.getCodDtip());
        data.setInseritoDa(inputData.getInseritoDa());
        data.setRegistratoDa(inputData.getRegistratoDa());
        data.setVerificatoDa(inputData.getVerificatoDa());
        data.setDataOraInizio(inputData.getDataOraInizio());
        data.setDataOraFine(inputData.getDataOraFine());
        data.setCausale(inputData.getCausale());

        data.setInventarioRowList(inventarioRowMapper.mapRestsToRooms(inputData.getMtbInvenr()));

        return data;
    }

    @Override
    public MtbInvent mapRoomToRest(InventarioRoomDTO inputData) {
        if(inputData == null) return null;

        var data = new MtbInvent();
        data.setIdInventario(inputData.getIdInventario());
        data.setCodMdep(inputData.getCodMdep());
        data.setDataInventario(inputData.getDataInventario());
        data.setDataReg(inputData.getDataReg());
        data.setDataVer(inputData.getDataVer());
        data.setFiltro(inputData.getFiltro());
        data.setFlagStato(inputData.getFlagStato());
        data.setFlagOperazione(inputData.getFlagOperazione());
        data.setCodAnag(inputData.getCodAnag());
        data.setCodDtip(inputData.getCodDtip());
        data.setInseritoDa(inputData.getInseritoDa());
        data.setRegistratoDa(inputData.getRegistratoDa());
        data.setVerificatoDa(inputData.getVerificatoDa());
        data.setDataOraInizio(inputData.getDataOraInizio());
        data.setDataOraFine(inputData.getDataOraFine());
        data.setCausale(inputData.getCausale());

        data.setMtbInvenr(inventarioRowMapper.mapRoomsToRests(inputData.getInventarioRowList()));

        return data;
    }
}
