Refactored code for faq
This commit is contained in:
@@ -6,18 +6,22 @@ import net.gepafin.tendermanagement.entities.CallEntity;
|
||||
import net.gepafin.tendermanagement.entities.FaqEntity;
|
||||
import net.gepafin.tendermanagement.entities.LookUpDataEntity;
|
||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
||||
import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum;
|
||||
import net.gepafin.tendermanagement.model.request.FaqReq;
|
||||
import net.gepafin.tendermanagement.model.response.FaqResponseBean;
|
||||
import net.gepafin.tendermanagement.repositories.FaqRepository;
|
||||
import net.gepafin.tendermanagement.service.CallService;
|
||||
import net.gepafin.tendermanagement.service.UserService;
|
||||
import net.gepafin.tendermanagement.service.LookUpDataService;
|
||||
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
||||
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static net.gepafin.tendermanagement.util.Utils.setIfUpdated;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class FaqDao {
|
||||
@@ -25,77 +29,92 @@ public class FaqDao {
|
||||
@Autowired
|
||||
private FaqRepository faqRepository;
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@Autowired
|
||||
private CallDao callDao;
|
||||
|
||||
@Autowired
|
||||
private CallService callService;
|
||||
|
||||
@Autowired
|
||||
private LookUpDataService lookUpDataService;
|
||||
|
||||
public FaqResponseBean createFaq(FaqReq faqRequest, Long userId, Long callId) {
|
||||
public FaqResponseBean createFaq(FaqReq faqRequest, UserEntity userEntity, Long callId) {
|
||||
FaqEntity entity = new FaqEntity();
|
||||
CallEntity callEntity = callService.validateCall(callId);
|
||||
;
|
||||
UserEntity userEntity = userService.validateUser(userId);
|
||||
entity = callDao.convertToFaqEntity(faqRequest, callEntity, userEntity,
|
||||
entity = createOrUpdateFaqEntity(faqRequest, callEntity, userEntity,
|
||||
LookUpDataEntity.LookUpDataTypeEnum.FAQ);
|
||||
faqRepository.save(entity);
|
||||
return convertFaqEntityToResponseBean(entity);
|
||||
return convertToFaqResponseBean(entity);
|
||||
}
|
||||
|
||||
public FaqResponseBean getFaqById(Long id) {
|
||||
return faqRepository.findById(id).map(this::convertFaqEntityToResponseBean)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.FAQ_NOT_FOUND)));
|
||||
return convertToFaqResponseBean(validateFaq(id));
|
||||
}
|
||||
|
||||
public FaqResponseBean updateFaq(Long id, FaqReq faqRequest, Long userId) {
|
||||
FaqEntity entity = faqRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.FAQ_NOT_FOUND)));
|
||||
updateFaqEntity(entity, faqRequest, userId, entity.getCall());
|
||||
faqRepository.save(entity);
|
||||
return convertFaqEntityToResponseBean(entity);
|
||||
public FaqResponseBean updateFaq(Long id, FaqReq faqRequest, UserEntity userEntity) {
|
||||
FaqEntity entity = validateFaq(id);
|
||||
faqRequest.setId(entity.getId());
|
||||
createOrUpdateFaqEntity(faqRequest, entity.getCall(), userEntity, LookUpDataEntity.LookUpDataTypeEnum.FAQ);
|
||||
return convertToFaqResponseBean(entity);
|
||||
}
|
||||
|
||||
public void deleteFaq(Long id) {
|
||||
FaqEntity entity = faqRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
FaqEntity faqEntity = validateFaq(id);
|
||||
faqEntity.setIsDeleted(Boolean.TRUE);
|
||||
faqRepository.save(faqEntity);
|
||||
}
|
||||
|
||||
public FaqEntity validateFaq(Long id) {
|
||||
return faqRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.FAQ_NOT_FOUND)));
|
||||
faqRepository.deleteById(entity.getId());
|
||||
|
||||
}
|
||||
|
||||
public List<FaqResponseBean> getFaqByCallId(Long callId) {
|
||||
callService.validateCall(callId);
|
||||
return faqRepository.findByCallIdAndIsDeletedFalse(callId).stream().map(this::convertToFaqResponseBean)
|
||||
.toList();
|
||||
}
|
||||
|
||||
private FaqResponseBean convertFaqEntityToResponseBean(FaqEntity entity) {
|
||||
FaqResponseBean response = new FaqResponseBean();
|
||||
response.setId(entity.getId());
|
||||
response.setUserId(entity.getUser().getId());
|
||||
response.setIsVisible(entity.getIsVisible());
|
||||
response.setUpdatedDate(entity.getUpdatedDate());
|
||||
response.setCreatedDate(entity.getCreatedDate());
|
||||
response.setQuestionShort(entity.getQuestionShort());
|
||||
response.setQuestion(entity.getQuestion());
|
||||
response.setResponseShort(entity.getResponseShort());
|
||||
response.setResponse(entity.getResponse());
|
||||
response.setResponseDate(entity.getResponseDate());
|
||||
return response;
|
||||
}
|
||||
|
||||
private void updateFaqEntity(FaqEntity faqEntity, FaqReq faqReq, Long userId, CallEntity callEntity) {
|
||||
faqEntity.setQuestion(faqReq.getQuestion());
|
||||
UserEntity userEntity = userService.validateUser(userId);
|
||||
faqEntity.setUser(userEntity);
|
||||
faqEntity.setIsVisible(true);
|
||||
if (faqReq.getIsVisible() != null) {
|
||||
faqEntity.setIsVisible(faqReq.getIsVisible());
|
||||
|
||||
public FaqEntity createOrUpdateFaqEntity(FaqReq faqReq, CallEntity callEntity, UserEntity userEntity,
|
||||
LookUpDataTypeEnum type) {
|
||||
FaqEntity faqEntity = null;
|
||||
if (isExistingFaq(faqReq)) {
|
||||
faqEntity = faqRepository.findByIdAndCallIdAndIsDeletedFalse(faqReq.getId(), callEntity.getId())
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.FAQ_NOT_FOUND)));
|
||||
} else {
|
||||
lookUpDataService.getOrCreateLookUpDataEntity(faqReq, type);
|
||||
faqEntity = new FaqEntity();
|
||||
faqEntity.setCall(callEntity);
|
||||
faqEntity.setUser(userEntity);
|
||||
faqEntity.setIsVisible(false);
|
||||
faqEntity.setIsDeleted(false);
|
||||
}
|
||||
faqEntity.setQuestionShort(faqReq.getQuestionShort());
|
||||
faqEntity.setQuestion(faqReq.getQuestion());
|
||||
if (faqReq.getResponse() != null || faqReq.getResponseShort() != null) {
|
||||
if (faqReq.getResponse() != null && (faqEntity.getResponse() == null
|
||||
|| Boolean.FALSE.equals(faqReq.getResponse().equals(faqEntity.getResponse())))) {
|
||||
faqEntity.setResponseDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||
}
|
||||
faqEntity.setResponseShort(faqReq.getResponseShort());
|
||||
faqEntity.setResponse(faqReq.getResponse());
|
||||
faqEntity.setCall(callEntity);
|
||||
setIfUpdated(faqEntity::getTitle, faqEntity::setTitle, faqReq.getTitle());
|
||||
setIfUpdated(faqEntity::getValue, faqEntity::setValue, faqReq.getValue());
|
||||
setIfUpdated(faqEntity::getResponse, faqEntity::setResponse, faqReq.getResponse());
|
||||
setIfUpdated(faqEntity::getIsVisible, faqEntity::setIsVisible, faqReq.getIsVisible());
|
||||
return faqRepository.save(faqEntity);
|
||||
}
|
||||
|
||||
private boolean isExistingFaq(FaqReq faqReq) {
|
||||
return faqReq.getId() != null && faqReq.getId() > 0;
|
||||
}
|
||||
|
||||
public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) {
|
||||
FaqResponseBean responseBean = new FaqResponseBean();
|
||||
responseBean.setId(entity.getId());
|
||||
responseBean.setUserId(entity.getUser().getId());
|
||||
responseBean.setTitle(entity.getTitle());
|
||||
responseBean.setValue(entity.getValue());
|
||||
responseBean.setResponse(entity.getResponse());
|
||||
responseBean.setResponseDate(entity.getResponseDate());
|
||||
responseBean.setIsVisible(entity.getIsVisible());
|
||||
responseBean.setCreatedDate(entity.getCreatedDate());
|
||||
responseBean.setUpdatedDate(entity.getUpdatedDate());
|
||||
return responseBean;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user