package digit.utils;
import com.jayway.jsonpath.JsonPath;
import org.egov.common.contract.request.RequestInfo;
import org.egov.mdms.model.MasterDetail;
import org.egov.mdms.model.MdmsCriteria;
import org.egov.mdms.model.MdmsCriteriaReq;
import org.egov.mdms.model.ModuleDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class MdmsUtil {
@Autowired
private RestTemplate restTemplate;
@Value("${egov.mdms.host}")
private String mdmsHost;
@Value("${egov.mdms.search.endpoint}")
private String mdmsUrl;
public Integer fetchRegistrationChargesFromMdms(RequestInfo requestInfo, String tenantId) {
StringBuilder uri = new StringBuilder();
uri.append(mdmsHost).append(mdmsUrl);
MdmsCriteriaReq mdmsCriteriaReq = getMdmsRequestForCategoryList(requestInfo, tenantId);
Object response = new HashMap<>();
Integer rate = 0;
try {
response = restTemplate.postForObject(uri.toString(), mdmsCriteriaReq, Map.class);
rate = JsonPath.read(response, "$.MdmsRes.BTR.RegistrationCharges.[0].amount");
}catch(Exception e) {
return null;
}
return rate;
}
private MdmsCriteriaReq getMdmsRequestForCategoryList(RequestInfo requestInfo, String tenantId) {
MasterDetail masterDetail = new MasterDetail();
masterDetail.setName("RegistrationCharges");
List<MasterDetail> masterDetailList = new ArrayList<>();
masterDetailList.add(masterDetail);
ModuleDetail moduleDetail = new ModuleDetail();
moduleDetail.setMasterDetails(masterDetailList);
moduleDetail.setModuleName("BTR");
List<ModuleDetail> moduleDetailList = new ArrayList<>();
moduleDetailList.add(moduleDetail);
MdmsCriteria mdmsCriteria = new MdmsCriteria();
mdmsCriteria.setTenantId(tenantId.split("\\.")[0]);
mdmsCriteria.setModuleDetails(moduleDetailList);
MdmsCriteriaReq mdmsCriteriaReq = new MdmsCriteriaReq();
mdmsCriteriaReq.setMdmsCriteria(mdmsCriteria);
mdmsCriteriaReq.setRequestInfo(requestInfo);
return mdmsCriteriaReq;
}
}