Skip to content

Commit

Permalink
Optimized latitude and longitude validation logic for improved effici… (
Browse files Browse the repository at this point in the history
#1310)

* Optimized latitude and longitude validation logic for improved efficiency

* facility capacity assignment to 0 for microplan

* Facility capacity enrichment for microplan
ashish-egov authored Jan 3, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent fc6122e commit bfccb0a
Showing 3 changed files with 20 additions and 8 deletions.
3 changes: 2 additions & 1 deletion health-services/project-factory/src/server/config/index.ts
Original file line number Diff line number Diff line change
@@ -182,7 +182,8 @@ const config = {
notCreateUserIfAlreadyThere: process.env.NOT_CREATE_USER_IF_ALREADY_THERE || false,
maxHttpRetries: process.env.MAX_HTTP_RETRIES || "4",
skipResourceCheckValidationBeforeCreateForLocalTesting:false, // can be set to true for local development
autoRetryIfHttpError: process.env.AUTO_RETRY_IF_HTTP_ERROR || "socket hang up" // can be retry if there is any error for which default retry can be set
autoRetryIfHttpError: process.env.AUTO_RETRY_IF_HTTP_ERROR || "socket hang up" /* can be retry if there is any error for which default retry can be set */,
latLongColumns: process.env.LAT_LONG_SUBSTRINGS || "HCM_ADMIN_CONSOLE_FACILITY_LATITUDE_OPTIONAL_MICROPLAN,HCM_ADMIN_CONSOLE_FACILITY_LONGITUDE_OPTIONAL_MICROPLAN,HCM_ADMIN_CONSOLE_TARGET_LAT_OPT,HCM_ADMIN_CONSOLE_TARGET_LONG_OPT"
}
};
// Exporting getErrorCodes function and config object
Original file line number Diff line number Diff line change
@@ -289,7 +289,11 @@ export function changeCreateDataForMicroplan(request: any, element: any, rowData
if (type == 'facility') {
const projectType = request?.body?.projectTypeCode;
const facilityCapacityColumn = getLocalizedName(`HCM_ADMIN_CONSOLE_FACILITY_CAPACITY_MICROPLAN_${projectType}`, localizationMap);
if (rowData[facilityCapacityColumn] >= 0) {
if(!rowData[facilityCapacityColumn]){
rowData[facilityCapacityColumn] = 0
element.storageCapacity = 0
}
else if (rowData[facilityCapacityColumn] >= 0) {
element.storageCapacity = rowData[facilityCapacityColumn]
}
if (activeColumnName && rowData[activeColumnName] == "Active") {
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ import { resourceDataStatuses } from "../config/constants";
import config from "../config";
import { isMicroplanRequest } from "../utils/microplanUtils";
import { throwError } from "../utils/genericUtils";
import { logger } from "../utils/logger";

export function validatePhoneNumberSheetWise(datas: any[], localizationMap: any, rowMapping: any) {
for (const data of datas) {
@@ -191,11 +192,14 @@ export function validateRequiredTargetsForMicroplanCampaigns(data: any, errors:
export function validateLatLongForMicroplanCampaigns(data: any, errors: any, localizationMap?: { [key: string]: string }) {
for (const key in data) {
if (key !== getLocalizedName(getBoundaryTabName(), localizationMap) && key !== getLocalizedName(config?.values?.readMeTab, localizationMap)) {
const latLongUnlocalisedColumns = config.values.latLongColumns?.split(',') || [];
const latLongColumns = latLongUnlocalisedColumns?.map((column: string) => getLocalizedName(column, localizationMap));
const latLongColumnsSet = new Set(latLongColumns);
if (Array.isArray(data[key])) {
const boundaryData = data[key];
boundaryData.forEach((obj: any, index: number) => {
for (const column of Object.keys(obj)) {
if (column.toLowerCase().includes('latitude') || column.toLowerCase().includes('longitude')) {
if (latLongColumnsSet.has(column)) {
const value = obj[column];
if (typeof value !== 'number') {
errors.push({
@@ -214,9 +218,12 @@ export function validateLatLongForMicroplanCampaigns(data: any, errors: any, loc
}


function validateLatLongForFacility(data: any, errors: any) {
function validateLatLongForFacility(data: any, errors: any, localizationMap?: { [key: string]: string }) {
const latLongUnlocalisedColumns = config.values.latLongColumns?.split(',') || [];
const latLongColumns = latLongUnlocalisedColumns?.map((column: string) => getLocalizedName(column, localizationMap));
const latLongColumnsSet = new Set(latLongColumns);
for (const column of Object.keys(data)) {
if (column.toLowerCase().includes('latitude') || column.toLowerCase().includes('longitude')) {
if (latLongColumnsSet.has(column)) {
const value = data[column];
if (typeof value !== 'number') {
errors.push({
@@ -245,7 +252,7 @@ export function validateMicroplanFacility(request: any, data: any, localizationM
const active = activeColumnName ? item[activeColumnName] : "Active";
if (active == "Active" || !item?.[uniqueIdentifierColumnName]) {
enrichErrorForFcailityMicroplan(request, item, errors, localizationMap);
validateLatLongForFacility(item, errors);
validateLatLongForFacility(item, errors, localizationMap);
}
});
request.body.sheetErrorDetails = request?.body?.sheetErrorDetails ? [...request?.body?.sheetErrorDetails, ...errors] : errors;
@@ -269,8 +276,8 @@ function enrichErrorForFcailityMicroplan(request: any, item: any, errors: any =
errors.push({ status: "INVALID", rowNumber: item?.["!row#number!"], errorDetails: `Data in ${faciltyStatusColumn} column can’t be empty, please update the data and re-upload` })
}
const facilityCapacityColumn = getLocalizedName(`HCM_ADMIN_CONSOLE_FACILITY_CAPACITY_MICROPLAN_${projectType}`, localizationMap);
if (!item?.[facilityCapacityColumn] && item?.[facilityCapacityColumn] != 0) {
errors.push({ status: "INVALID", rowNumber: item?.["!row#number!"], errorDetails: `Data in ${facilityCapacityColumn} column can’t be empty, please update the data and re-upload` })
if (!item?.[facilityCapacityColumn]) {
logger.info(`Data in ${facilityCapacityColumn} column is empty, it will be ignored for microplan validation.`)
}
else if (typeof (item?.[facilityCapacityColumn]) != "number") {
errors.push({ status: "INVALID", rowNumber: item?.["!row#number!"], errorDetails: `Data in ${facilityCapacityColumn} column must be a number from 0 to 100000000` })

0 comments on commit bfccb0a

Please sign in to comment.