diff --git a/avni-server-api/src/main/java/org/avni/server/importer/batch/csv/writer/SubjectWriter.java b/avni-server-api/src/main/java/org/avni/server/importer/batch/csv/writer/SubjectWriter.java index e2ce3c00e..0ff1712b2 100644 --- a/avni-server-api/src/main/java/org/avni/server/importer/batch/csv/writer/SubjectWriter.java +++ b/avni-server-api/src/main/java/org/avni/server/importer/batch/csv/writer/SubjectWriter.java @@ -95,7 +95,8 @@ private void write(Row row, String type, String locationHierarchy) throws Except setFirstName(row, individual, allErrorMsgs); if (subjectType.isAllowMiddleName()) individual.setMiddleName(row.get(SubjectHeadersCreator.middleName)); - individual.setLastName(row.get(SubjectHeadersCreator.lastName)); + if (subjectType.isPerson()) + setLastName(row, individual, allErrorMsgs); setProfilePicture(subjectType, individual, row, allErrorMsgs); if (subjectType.isPerson()) setDateOfBirth(individual, row, allErrorMsgs); @@ -208,4 +209,12 @@ private void setGender(Individual individual, Row row, List allErrorMsgs } individual.setGender(gender); } + private static void setLastName(Row row, Individual individual, List allErrorMsgs) { + String lastName = row.get(SubjectHeadersCreator.lastName); + if (!StringUtils.hasText(lastName)) { + allErrorMsgs.add(String.format("Value required for mandatory field: '%s'", SubjectHeadersCreator.lastName)); + return; + } + individual.setLastName(lastName); + } } diff --git a/avni-server-api/src/test/java/org/avni/server/importer/batch/csv/writer/SubjectWriterIntegrationTest.java b/avni-server-api/src/test/java/org/avni/server/importer/batch/csv/writer/SubjectWriterIntegrationTest.java index a4108b41a..1d363d69d 100644 --- a/avni-server-api/src/test/java/org/avni/server/importer/batch/csv/writer/SubjectWriterIntegrationTest.java +++ b/avni-server-api/src/test/java/org/avni/server/importer/batch/csv/writer/SubjectWriterIntegrationTest.java @@ -380,7 +380,35 @@ public void missingMandatoryCoreValues() { "qg text", "456", "789"); - failure(validHeader(), dataRow, "None of the expected address levels provided. Expected one of: [District], value required for mandatory field: 'date of birth', value required for mandatory field: 'date of registration', value required for mandatory field: 'first name', value required for mandatory field: 'gender'"); + failure(validHeader(), dataRow, "None of the expected address levels provided. Expected one of: [District], value required for mandatory field: 'date of birth', value required for mandatory field: 'date of registration', value required for mandatory field: 'first name', value required for mandatory field: 'gender', value required for mandatory field: 'last name'"); + } + + @Test + public void missingLastName() { + organisationConfigService.saveRegistrationLocation(district, subjectType); + String[] dataRow = dataRow("ABCD", + "SubjectType1", + "2020-01-01", + "21.5135243,85.6731848", + "John", + "", + "1990-01-01", + "true", + "Male", + "", + "Bihar", + "District1", + "SSC Answer 1", + "\"MSC Answer 1\", \"MSC Answer 2\"", + "2020-01-01", + "text", + "123", + "some notes", + "\"MSDC Answer 1\", \"MSDC Answer 2\"", + "qg text", + "456", + "789"); + failure(validHeader(), dataRow, "value required for mandatory field: 'Last Name'"); } @Test