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

import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.wallet.app.dto.clientobject.UserBankCardCO;
import com.red.circle.wallet.app.dto.clientobject.UserBankWithdrawMoneyApplyCO;
import com.red.circle.wallet.app.dto.clientobject.UserWithdrawInfoCO;
import com.red.circle.wallet.infra.database.mongo.entity.bank.UserBankCard;
import com.red.circle.wallet.infra.database.mongo.entity.bank.UserBankRunningWater;
import com.red.circle.wallet.infra.database.mongo.entity.bank.UserBankWithdrawMoneyApply;
import com.red.circle.wallet.infra.database.mongo.entity.bank.UserWithdrawInfo;
import com.red.circle.wallet.inner.model.dto.UserBankCardDTO;
import com.red.circle.wallet.inner.model.dto.UserBankRunningWaterDTO;
import com.red.circle.wallet.inner.model.dto.UserBankWithdrawMoneyApplyDTO;
import java.util.List;
import java.util.Map;
import org.mapstruct.Mapper;

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

  Map<Long, UserBankWithdrawMoneyApplyCO> toMapUserBankWithdrawMoneyApplyCO(
      Map<Long, UserBankWithdrawMoneyApply> map);

  List<UserBankCardCO> toListUserBankCard(List<UserBankCard> userBankCards);

  UserBankRunningWater toUserBankRunningWater(UserBankRunningWaterDTO water);

  UserBankWithdrawMoneyApplyDTO toUserBankWithdrawMoneyApplyDTO(
      UserBankWithdrawMoneyApply userBankWithdrawMoneyApply);

  UserBankCardDTO toUserBankCardDTO(UserBankCard userBankCard);

  List<UserWithdrawInfoCO> toListUserWithdrawInfo(List<UserWithdrawInfo> userWithdrawInfos);

}
