Show error message when future data edit

This commit is contained in:
Julia Friesel
2019-01-17 18:11:17 +01:00
parent 23c6a60258
commit d8ce68d1ed
2 changed files with 16 additions and 1 deletions
+2 -1
View File
@@ -47,7 +47,8 @@ export default {
deleteOption: 'Import and delete existing',
errors: {
couldNotOpenFile: 'Could not open file',
postFix: 'No data was imported or changed'
postFix: 'No data was imported or changed',
futureEdit: 'Future dates may only contain a note, no other symptoms'
},
success: {
message: 'Data successfully imported'
+14
View File
@@ -7,6 +7,8 @@ import {
updateCycleStartsForAllCycleDays
} from '../../db'
import getColumnNamesForCsv from './get-csv-column-names'
import { LocalDate } from 'js-joda'
import labels from '../../i18n/en/settings'
export default async function importCsv(csv, deleteFirst) {
const parseFuncs = {
@@ -48,6 +50,7 @@ export default async function importCsv(csv, deleteFirst) {
//remove symptoms where all fields are null
putNullForEmptySymptoms(cycleDays)
throwIfFutureData(cycleDays)
if (deleteFirst) {
tryToImportWithDelete(cycleDays)
@@ -88,3 +91,14 @@ function getDbType(modelProperties, path) {
const modelName = modelProperties[path[0]].objectType
return getDbType(schema[modelName], path.slice(1))
}
function throwIfFutureData(cycleDays) {
const today = LocalDate.now().toString()
for (const i in cycleDays) {
const day = cycleDays[i]
// notes are allowed for future dates but everything else isn't
if (day.date > today && Object.keys(day).some(symptom => symptom != 'date' && symptom != 'note')) {
throw new Error(labels.import.errors.futureEdit)
}
}
}