Merge pull request #90 from Kitzanos/get-preferred-calls
Added a preferredCallId to the call response to indicate if a call is preferred for the user based on their beneficiary preferred calls.
This commit is contained in:
@@ -77,17 +77,18 @@ public class BeneficiaryPreferredCallDao {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
public void deleteBeneficiaryPreferredCallById(HttpServletRequest request, Long id) {
|
public void deleteBeneficiaryPreferredCallById(HttpServletRequest request, Long id) {
|
||||||
log.info("Deleting beneficiary preferred call with ID: {}", id);
|
log.info("Soft deleting beneficiary preferred call with ID: {}", id);
|
||||||
BeneficiaryPreferredCallEntity entity = validateBeneficiaryPreferredCall(id);
|
BeneficiaryPreferredCallEntity entity = validateBeneficiaryPreferredCall(id);
|
||||||
validator.validateUserId(request, entity.getUserId());
|
validator.validateUserId(request, entity.getUserId());
|
||||||
beneficiaryPreferredCallRepository.deleteById(id);
|
entity.setIsDeleted(true);
|
||||||
log.info("Beneficiary preferred call deleted with ID: {}", id);
|
beneficiaryPreferredCallRepository.save(entity);
|
||||||
|
log.info("Beneficiary preferred call soft deleted with ID: {}", id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BeneficiaryPreferredCallResponseBean> getAllBeneficiaryPreferredCalls(HttpServletRequest request) {
|
public List<BeneficiaryPreferredCallResponseBean> getAllBeneficiaryPreferredCalls(HttpServletRequest request) {
|
||||||
UserEntity userEntity = validator.validateUser(request);
|
UserEntity userEntity = validator.validateUser(request);
|
||||||
log.info("Fetching all beneficiary preferred calls");
|
log.info("Fetching all beneficiary preferred calls");
|
||||||
List<BeneficiaryPreferredCallResponseBean> calls = beneficiaryPreferredCallRepository.findByUserId(userEntity.getId())
|
List<BeneficiaryPreferredCallResponseBean> calls = beneficiaryPreferredCallRepository.findByUserIdAndIsDeletedFalse(userEntity.getId())
|
||||||
.stream()
|
.stream()
|
||||||
.map(this::convertEntityToResponse)
|
.map(this::convertEntityToResponse)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -97,7 +98,7 @@ public class BeneficiaryPreferredCallDao {
|
|||||||
|
|
||||||
private BeneficiaryPreferredCallEntity validateBeneficiaryPreferredCall(Long id) {
|
private BeneficiaryPreferredCallEntity validateBeneficiaryPreferredCall(Long id) {
|
||||||
log.info("Validating beneficiary preferred call with ID: {}", id);
|
log.info("Validating beneficiary preferred call with ID: {}", id);
|
||||||
return beneficiaryPreferredCallRepository.findById(id)
|
return beneficiaryPreferredCallRepository.findByIdAndIsDeletedFalse(id)
|
||||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.BENEFICIARY_CALL_NOT_FOUND)));
|
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.BENEFICIARY_CALL_NOT_FOUND)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +124,7 @@ public class BeneficiaryPreferredCallDao {
|
|||||||
}
|
}
|
||||||
public List<BeneficiaryPreferredCallResponseBean> getBeneficiaryPreferredCallByUserId(UserEntity userEntity, Long companyId) {
|
public List<BeneficiaryPreferredCallResponseBean> getBeneficiaryPreferredCallByUserId(UserEntity userEntity, Long companyId) {
|
||||||
|
|
||||||
List<BeneficiaryPreferredCallEntity> calls = beneficiaryPreferredCallRepository.findByUserIdAndCompanyId(userEntity.getId(), companyId);
|
List<BeneficiaryPreferredCallEntity> calls = beneficiaryPreferredCallRepository.findByUserIdAndCompanyIdAndIsDeletedFalse(userEntity.getId(), companyId);
|
||||||
return calls.stream()
|
return calls.stream()
|
||||||
.map(this::convertEntityToResponse)
|
.map(this::convertEntityToResponse)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|||||||
@@ -10,12 +10,15 @@ import java.time.LocalTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
import net.gepafin.tendermanagement.entities.*;
|
||||||
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
|
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.response.*;
|
import net.gepafin.tendermanagement.model.response.*;
|
||||||
|
import net.gepafin.tendermanagement.repositories.*;
|
||||||
import net.gepafin.tendermanagement.service.*;
|
import net.gepafin.tendermanagement.service.*;
|
||||||
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||||
import net.gepafin.tendermanagement.util.Utils;
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
@@ -26,16 +29,7 @@ import org.springframework.util.StringUtils;
|
|||||||
|
|
||||||
import net.gepafin.tendermanagement.config.Translator;
|
import net.gepafin.tendermanagement.config.Translator;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.entities.CallEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.CallTargetAudienceChecklistEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.CriteriaFormFieldEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.DocumentEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.FaqEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.LookUpDataEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum;
|
import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum;
|
||||||
import net.gepafin.tendermanagement.entities.RegionEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
|
||||||
import net.gepafin.tendermanagement.enums.CallStatusEnum;
|
import net.gepafin.tendermanagement.enums.CallStatusEnum;
|
||||||
import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
|
import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1;
|
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1;
|
||||||
@@ -45,13 +39,6 @@ import net.gepafin.tendermanagement.model.request.EvaluationCriteriaReq;
|
|||||||
import net.gepafin.tendermanagement.model.request.FaqReq;
|
import net.gepafin.tendermanagement.model.request.FaqReq;
|
||||||
import net.gepafin.tendermanagement.model.request.LookUpDataReq;
|
import net.gepafin.tendermanagement.model.request.LookUpDataReq;
|
||||||
import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1;
|
import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1;
|
||||||
import net.gepafin.tendermanagement.repositories.CallRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.CallTargetAudienceChecklistRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.CriteriaFormFieldRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.DocumentRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.FaqRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.RegionRepository;
|
|
||||||
import net.gepafin.tendermanagement.service.impl.CallValidatorServiceImpl;
|
import net.gepafin.tendermanagement.service.impl.CallValidatorServiceImpl;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
||||||
@@ -104,6 +91,9 @@ public class CallDao {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private S3PathConfig s3PathConfig;
|
private S3PathConfig s3PathConfig;
|
||||||
|
@Autowired
|
||||||
|
private BeneficiaryPreferredCallRepository beneficiaryPreferredCallRepository;
|
||||||
|
|
||||||
|
|
||||||
public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, UserEntity userEntity) {
|
public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, UserEntity userEntity) {
|
||||||
createCallRequest.setRegionId(userEntity.getRoleEntity().getRegion().getId());
|
createCallRequest.setRegionId(userEntity.getRoleEntity().getRegion().getId());
|
||||||
@@ -435,10 +425,22 @@ public class CallDao {
|
|||||||
Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)));
|
Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public CallResponse getCallById(CallEntity callEntity) {
|
public CallResponse getCallById(UserEntity user, CallEntity callEntity) {
|
||||||
return getCallResponseBean(callEntity);
|
Long userId = user.getId();
|
||||||
|
Long callId = callEntity.getId();
|
||||||
|
|
||||||
|
BeneficiaryPreferredCallEntity preferredCall = beneficiaryPreferredCallRepository
|
||||||
|
.findByUserIdAndCallIdInAndIsDeletedFalse(userId, List.of(callId))
|
||||||
|
.stream()
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
CallResponse callResponse = getCallResponseBean(callEntity);
|
||||||
|
callResponse.setPreferredCallId(preferredCall != null ? preferredCall.getId() : null);
|
||||||
|
|
||||||
|
return callResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public CallResponse createCallStep2(CallEntity callEntity, CreateCallRequestStep2 createCallRequest, UserEntity user) {
|
public CallResponse createCallStep2(CallEntity callEntity, CreateCallRequestStep2 createCallRequest, UserEntity user) {
|
||||||
validateUpdate(callEntity);
|
validateUpdate(callEntity);
|
||||||
setIfUpdated(callEntity::getThreshold, callEntity::setThreshold, createCallRequest.getThreshold());
|
setIfUpdated(callEntity::getThreshold, callEntity::setThreshold, createCallRequest.getThreshold());
|
||||||
@@ -654,15 +656,42 @@ public class CallDao {
|
|||||||
public List<CallDetailsResponseBean> getAllCalls(UserEntity user) {
|
public List<CallDetailsResponseBean> getAllCalls(UserEntity user) {
|
||||||
String type = user.getRoleEntity().getRoleType();
|
String type = user.getRoleEntity().getRoleType();
|
||||||
List<String> callStatusList = CallStatusEnum.getStatusValues();
|
List<String> callStatusList = CallStatusEnum.getStatusValues();
|
||||||
|
|
||||||
if (Boolean.FALSE.equals(ROLE_SUPER_ADMIN.getValue().equals(type))) {
|
if (Boolean.FALSE.equals(ROLE_SUPER_ADMIN.getValue().equals(type))) {
|
||||||
callStatusList = List.of(CallStatusEnum.PUBLISH.getValue());
|
callStatusList = List.of(CallStatusEnum.PUBLISH.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<CallEntity> calls = callRepository.findByStatusInAndHubId(callStatusList, user.getHub().getId());
|
List<CallEntity> calls = callRepository.findByStatusInAndHubId(callStatusList, user.getHub().getId());
|
||||||
|
List<Long> callIds = calls.stream().map(CallEntity::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
Map<String, BeneficiaryPreferredCallEntity> preferredCallsMap = getBeneficiaryPreferredCallsForUser(user, callIds);
|
||||||
|
|
||||||
return calls.stream()
|
return calls.stream()
|
||||||
.map(this::convertToCallDetailsResponseBean)
|
.map(call -> {
|
||||||
|
CallDetailsResponseBean responseBean = convertToCallDetailsResponseBean(call);
|
||||||
|
String key = user.getId() + "_" + call.getId();
|
||||||
|
|
||||||
|
BeneficiaryPreferredCallEntity preferredCall = preferredCallsMap.get(key);
|
||||||
|
Long preferredId = (preferredCall != null && !preferredCall.getIsDeleted()) ? preferredCall.getId() : null;
|
||||||
|
responseBean.setPreferredCallId(preferredId);
|
||||||
|
|
||||||
|
return responseBean;
|
||||||
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, BeneficiaryPreferredCallEntity> getBeneficiaryPreferredCallsForUser(UserEntity user, List<Long> callIds) {
|
||||||
|
List<BeneficiaryPreferredCallEntity> beneficiaryPreferredCalls = beneficiaryPreferredCallRepository
|
||||||
|
.findByUserIdAndCallIdInAndIsDeletedFalse(user.getId(), callIds);
|
||||||
|
|
||||||
|
return beneficiaryPreferredCalls.stream()
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
call -> user.getId() + "_" + call.getCallId(),
|
||||||
|
call -> call
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public CallResponse validateCallData(CallEntity callEntity) {
|
public CallResponse validateCallData(CallEntity callEntity) {
|
||||||
validateUpdate(callEntity);
|
validateUpdate(callEntity);
|
||||||
CallResponse callResponseBean = getCallResponseBean(callEntity);
|
CallResponse callResponseBean = getCallResponseBean(callEntity);
|
||||||
|
|||||||
@@ -34,4 +34,6 @@ public class BeneficiaryPreferredCallEntity extends BaseEntity{
|
|||||||
|
|
||||||
@Column(name = "STATUS", length = 255)
|
@Column(name = "STATUS", length = 255)
|
||||||
private String status;
|
private String status;
|
||||||
|
@Column(name="IS_DELETED")
|
||||||
|
private Boolean isDeleted;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,4 +54,5 @@ public class CallDetailsResponseBean {
|
|||||||
|
|
||||||
private LocalDateTime updatedDate;
|
private LocalDateTime updatedDate;
|
||||||
|
|
||||||
|
private Long preferredCallId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ public class CallResponse {
|
|||||||
|
|
||||||
private String currentStep;
|
private String currentStep;
|
||||||
|
|
||||||
|
private Long preferredCallId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,13 +6,17 @@ import org.springframework.data.repository.query.Param;
|
|||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface BeneficiaryPreferredCallRepository extends JpaRepository<BeneficiaryPreferredCallEntity, Long> {
|
public interface BeneficiaryPreferredCallRepository extends JpaRepository<BeneficiaryPreferredCallEntity, Long> {
|
||||||
List<BeneficiaryPreferredCallEntity> findByBeneficiaryId(Long beneficiaryId);
|
List<BeneficiaryPreferredCallEntity> findByBeneficiaryIdAndIsDeletedFalse(Long beneficiaryId);
|
||||||
List<BeneficiaryPreferredCallEntity> findByUserId(Long userId);
|
List<BeneficiaryPreferredCallEntity> findByUserIdAndIsDeletedFalse(Long userId);
|
||||||
|
|
||||||
@Query("SELECT preferredCall FROM BeneficiaryPreferredCallEntity preferredCall where preferredCall.userId=:userId AND (:companyId is null OR preferredCall.companyId=:companyId)")
|
@Query("SELECT preferredCall FROM BeneficiaryPreferredCallEntity preferredCall where preferredCall.userId=:userId AND (:companyId is null OR preferredCall.companyId=:companyId)")
|
||||||
List<BeneficiaryPreferredCallEntity> findByUserIdAndCompanyId(@Param("userId") Long userId, @Param("companyId") Long companyId);
|
List<BeneficiaryPreferredCallEntity> findByUserIdAndCompanyIdAndIsDeletedFalse(@Param("userId") Long userId, @Param("companyId") Long companyId);
|
||||||
List<BeneficiaryPreferredCallEntity> findByBeneficiaryIdAndCompanyId(Long beneficiaryId,Long companyId);
|
List<BeneficiaryPreferredCallEntity> findByBeneficiaryIdAndCompanyId(Long beneficiaryId,Long companyId);
|
||||||
|
public List<BeneficiaryPreferredCallEntity> findByUserIdAndCallIdInAndIsDeletedFalse(Long userId, List<Long> callIds);
|
||||||
|
|
||||||
|
Optional<BeneficiaryPreferredCallEntity> findByIdAndIsDeletedFalse(Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class CallServiceImpl implements CallService {
|
|||||||
public CallResponse getCallById(HttpServletRequest request, Long callId) {
|
public CallResponse getCallById(HttpServletRequest request, Long callId) {
|
||||||
UserEntity user = validator.validateUser(request);
|
UserEntity user = validator.validateUser(request);
|
||||||
CallEntity call = validator.validateUserWithCall(user, callId);
|
CallEntity call = validator.validateUserWithCall(user, callId);
|
||||||
return callDao.getCallById(call);
|
return callDao.getCallById(user,call);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1720,8 +1720,16 @@
|
|||||||
<sqlFile dbms="postgresql"
|
<sqlFile dbms="postgresql"
|
||||||
path="db/dump/update_system_email_template_for_notification_mail_05_11_2024_4.sql"/>
|
path="db/dump/update_system_email_template_for_notification_mail_05_11_2024_4.sql"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="13-11-2024_1" author="Rajesh Khore">
|
<changeSet id="13-11-2024_1" author="Rajesh Khore">
|
||||||
<dropNotNullConstraint tableName="application_amendment_request" columnName="is_email"/>
|
<dropNotNullConstraint tableName="application_amendment_request" columnName="is_email"/>
|
||||||
<dropNotNullConstraint tableName="application_amendment_request" columnName="is_notification"/>
|
<dropNotNullConstraint tableName="application_amendment_request" columnName="is_notification"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
<changeSet id="13-11-2024_2" author="Harish Bagora">
|
||||||
|
<addColumn tableName="beneficiary_preferred_call">
|
||||||
|
<column name="is_deleted" type="BOOLEAN" defaultValueBoolean="false">
|
||||||
|
<constraints nullable="false"/>
|
||||||
|
</column>
|
||||||
|
</addColumn>
|
||||||
|
</changeSet>
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
Reference in New Issue
Block a user