保誠-保戶業務員媒合平台
wayne
2021-12-03 60c22a257f18ed9e482de8434850ec4688fd6707
pamapi/src/main/java/com/pollex/pam/service/SatisfactionService.java
@@ -1,5 +1,6 @@
package com.pollex.pam.service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
@@ -8,8 +9,9 @@
import org.springframework.transaction.annotation.Transactional;
import com.pollex.pam.domain.Appointment;
import com.pollex.pam.domain.Consultant;
import com.pollex.pam.domain.Satisfaction;
import com.pollex.pam.enums.SatisfactionStatusEnum;
import com.pollex.pam.repository.ConsultantRepository;
import com.pollex.pam.repository.CustomerRepository;
import com.pollex.pam.repository.SatisfactionRepository;
import com.pollex.pam.service.dto.SatisfactionCustomerCreateDTO;
@@ -21,25 +23,50 @@
@Service
@Transactional
public class SatisfactionService {
   @Autowired
   SatisfactionRepository satisfactionRepository;
   @Autowired
   AppointmentMapper appointmentMapper;
   @Autowired
   SatisfactionDTOMapper satisfactionDTOMapper;
   @Autowired
   SatisfactionMapper satisfactionMapper;
   @Autowired
   CustomerRepository customerRepository;
   
   @Autowired
   ConsultantRepository consultantRepository;
   public Satisfaction createSatisfaction(Satisfaction satisfaction) {
      return satisfactionRepository.save(satisfaction);
      satisfaction = satisfactionRepository.save(satisfaction);
      setConsultantAvgScore(satisfaction);
      return satisfaction;
   }
   private void setConsultantAvgScore(Satisfaction satisfaction) {
      float avgScore = getAgentAvgScore(satisfaction);
      Consultant consultant = consultantRepository.findOneByAgentNo(satisfaction.getAgentNo())
            .get();
      consultant.setAvgScore(avgScore);
      consultantRepository.save(consultant);
   }
   private float getAgentAvgScore(Satisfaction satisfaction) {
      Float avgScore = satisfactionRepository.getAgentScoreAvg(satisfaction.getAgentNo());
      BigDecimal bigDecimal = new BigDecimal(avgScore);
      return avgScore = bigDecimal.setScale(1,BigDecimal.ROUND_HALF_UP).floatValue();
   }
   public Satisfaction createSatisfaction(Appointment appointment) {
      Satisfaction satisfaction = appointmentMapper.toSatisfaction(appointment);
@@ -62,4 +89,8 @@
      List<Satisfaction> satisfactionList = satisfactionRepository.findByCustomerId(customerDBId);
      return satisfactionMapper.toDTO(satisfactionList);
   }
    public Optional<Satisfaction> getByAppointmentId(Long appointmentId) {
        return satisfactionRepository.findOneByAppointmentId(appointmentId);
    }
}