package com.red.circle.other.app.inner.convertor.team;

import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentBaseInfo;
import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentTeam;
import com.red.circle.other.infra.database.rds.entity.team.RoomBdLead;
import com.red.circle.other.inner.model.cmd.team.BdTeamInfoCmd;
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamLeaderAddCmd;
import com.red.circle.other.inner.model.dto.agency.bd.BdTeamInfoDTO;
import com.red.circle.other.inner.model.dto.agency.bd.BdTeamLeaderDTO;
import com.red.circle.other.inner.model.dto.agency.bd.BdTeamMemberDTO;
import java.util.List;
import org.mapstruct.Mapper;

/**
 * @author pengliang on 2023/11/21
 */
@Mapper(componentModel = ConvertorModel.SPRING)
public interface BdInnerConvertor {

  BdTeamMemberDTO toBdTeamMemberDTO(BusinessDevelopmentTeam team);

  BdTeamLeaderDTO toBdTeamLeaderDTO(RoomBdLead bd);

  BdTeamInfoDTO toBdTeamInfoDTO(BusinessDevelopmentBaseInfo bd);

  BusinessDevelopmentBaseInfo toRoomBusinessDevelopmentBaseInfo(BdTeamInfoCmd bd);

  RoomBdLead toRoomBdLead(BdTeamLeaderAddCmd bd);

  List<BdTeamInfoDTO> toListBdTeamInfoDTO(List<BusinessDevelopmentBaseInfo> bd);

  PageResult<BdTeamLeaderDTO> toPageBdTeamLeaderDTO(PageResult<RoomBdLead> pageResult);

  BusinessDevelopmentBaseInfo toBusinessDevelopmentBaseInfo(BdTeamInfoDTO dto);

  PageResult<BdTeamMemberDTO> toPageBdTeamMemberDTO(PageResult<BusinessDevelopmentTeam> dto);

  RoomBdLead toRoomBdLead(BdTeamLeaderDTO dto);

  List<BdTeamMemberDTO> toListBdTeamMemberDTO(List<BusinessDevelopmentTeam> teams);

  PageResult<BdTeamInfoDTO> toPageBdTeamInfoDTO(PageResult<BusinessDevelopmentBaseInfo> pageResult);
}
