package com.pollex.pam.service.mapper; import com.pollex.pam.domain.Consultant; import com.pollex.pam.domain.CustomFavoriteConsultant; import com.pollex.pam.enums.ContactStatusEnum; import com.pollex.pam.service.dto.ConsultantDTO; import com.pollex.pam.service.dto.ConsultantDetailDTO; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.time.Instant; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @Service public class ConsultantMapper { private final static Character SPLIT_MASK = ','; // todo convert public ConsultantDTO toDto(Consultant source) { ConsultantDTO consultantDTO = new ConsultantDTO(); consultantDTO.setAgentNo(source.getAgentNo()); consultantDTO.setName(source.getName()); consultantDTO.setAvgScore(source.getAvgScore()); consultantDTO.setSeniority(source.getSeniority()); consultantDTO.setExpertise(splitStringWithChar(source.getExpertise())); // todo consultantDTO.setImg(""); consultantDTO.setContactStatus(null); consultantDTO.setUpdateTime(null); return consultantDTO; } public ConsultantDTO toDto(CustomFavoriteConsultant customFavoriteConsultant) { Consultant consultant = customFavoriteConsultant.getConsultant(); ConsultantDTO dto = toDto(consultant); Instant updateTime = customFavoriteConsultant.getLastModifiedDate(); dto.setContactStatus(customFavoriteConsultant.getContactStatus()); dto.setUpdateTime(updateTime); return dto; } public ConsultantDetailDTO toDetailDto(Consultant source) { ConsultantDetailDTO consultantDetailDTO = new ConsultantDetailDTO(); consultantDetailDTO.setName(source.getName()); consultantDetailDTO.setAgentNo(source.getAgentNo()); consultantDetailDTO.setRole(source.getRole()); consultantDetailDTO.setAvgScore(source.getAvgScore()); consultantDetailDTO.setTitle(source.getTitle()); consultantDetailDTO.setPhoneNumber(source.getPhoneNumber()); consultantDetailDTO.setServeArea(source.getServeArea()); consultantDetailDTO.setCompanyAddress(source.getCompanyAddress()); consultantDetailDTO.setLatestLoginTime(source.getLatestLoginTime()); consultantDetailDTO.setSeniority(source.getSeniority()); consultantDetailDTO.setConcept(source.getConcept()); consultantDetailDTO.setAwards(source.getAward()); consultantDetailDTO.setImage(""); consultantDetailDTO.setSuitability(50); consultantDetailDTO.setEvaluation(50); consultantDetailDTO.setExpertises(splitStringWithChar(source.getExpertise())); consultantDetailDTO.setExperiences(splitStringWithChar(source.getExperience())); return consultantDetailDTO; } private List splitStringWithChar(String source) { return Arrays.stream(StringUtils.split(source, SPLIT_MASK)) .map(String::trim) .collect(Collectors.toList()); } }