package com.red.circle.order.app.convertor;

import com.red.circle.component.pay.paymax.service.PayMaxResponse;
import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.order.app.dto.clientobject.PayMaxResponseCO;
import com.red.circle.order.app.dto.clientobject.PayerMaxResponseV2CO;
import com.red.circle.order.app.dto.clientobject.pay.PayApplicationCO;
import com.red.circle.order.app.dto.clientobject.pay.PayApplicationCommodityCO;
import com.red.circle.order.app.dto.clientobject.pay.PayChannelCO;
import com.red.circle.order.app.dto.clientobject.pay.PayCountryChannelDetailsCO;
import com.red.circle.order.infra.database.mongo.order.entity.assist.InAppPurchasePayCountryChannelDetails;
import com.red.circle.order.infra.database.rds.entity.pay.PayApplication;
import com.red.circle.order.infra.database.rds.entity.pay.PayApplicationCommodity;
import com.red.circle.order.infra.database.rds.entity.pay.PayChannel;
import com.red.circle.order.infra.database.rds.entity.pay.PayCountryChannelDetails;
import java.util.List;
import org.mapstruct.Mapper;

/**
 * @author pengliang on 2023/8/18
 */
@Mapper(componentModel = ConvertorModel.SPRING)
public interface PayAppConvertor {

  PayMaxResponseCO toPayMaxResponseCO(PayMaxResponse payMaxResponse);

  PayerMaxResponseV2CO toPayMaxResponseV2CO(PayMaxResponse payMaxResponse);

  PayCountryChannelDetails toPayCountryChannelDetails(
      InAppPurchasePayCountryChannelDetails details);

  PayApplicationCO toPayApplicationCO(PayApplication payApplication);

  List<PayApplicationCommodityCO> toListPayApplicationCommodityCO(
      List<PayApplicationCommodity> commodityList);

  PayChannelCO toPayChannelCO(PayChannel payChannel);

  PayCountryChannelDetailsCO toPayCountryChannelDetailsCO(
      PayCountryChannelDetails payCountryChannelDetails);

}
