diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index 5e03724b..e32f2966 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -395,7 +395,7 @@ FormSchema.pre('save', function (next) { //Find FormSubmissions that contain field with _id equal to 'deleted_id' FormSubmission. - find({ form: that._id, admin: that.admin, form_fields: {$elemMatch: {_id: deleted_id} } }). + find({ form: that._id, admin: that.admin, form_fields: {$elemMatch: {submissionId: deleted_id} } }). exec(function(err, submissions){ if(err) { console.error(err); diff --git a/app/models/form_field.server.model.js b/app/models/form_field.server.model.js index 8fc932d9..c7f669bd 100644 --- a/app/models/form_field.server.model.js +++ b/app/models/form_field.server.model.js @@ -60,6 +60,13 @@ function BaseFieldSchema(){ Schema.apply(this, arguments); this.add({ + isSubmission: { + type: Boolean, + default: false + }, + submissionId: { + type: Schema.Types.ObjectId + }, title: { type: String, trim: true, @@ -138,6 +145,7 @@ function BaseFieldSchema(){ if(this.fieldType === 'rating' && this.ratingOptions.validShapes.length === 0){ this.ratingOptions.validShapes = mongoose.model('RatingOptions').schema.path('shape').enumValues; } + next(); }); } @@ -180,11 +188,26 @@ FormFieldSchema.pre('validate', function(next) { } } - if(error) + return next(); +}); + +//Submission fieldValue correction +FormFieldSchema.pre('save', function(next) { + console.log('pre save'); + + console.log(this.isSubmission); + console.log(this._id); + console.log(this.submissionId); + console.log(this.fieldType); + + if(this.isSubmission && this.fieldType === 'dropdown'){ + this.fieldValue = this.fieldValue.option_value; + } return next(); }); + var Field = mongoose.model('Field', FormFieldSchema); var RatingOptions = mongoose.model('RatingOptions', RatingFieldSchema); diff --git a/app/models/form_submission.server.model.js b/app/models/form_submission.server.model.js index cf1774ce..dc1403cc 100644 --- a/app/models/form_submission.server.model.js +++ b/app/models/form_submission.server.model.js @@ -17,6 +17,8 @@ var mongoose = require('mongoose'), FieldSchema = require('./form_field.server.model.js'), OscarSecurity = require('../../scripts/oscarhost/OscarSecurity'); +var FieldSchema = require('./form_field.server.model.js'); + var newDemoTemplate = { address: '880-9650 Velit. St.', city: '', @@ -41,6 +43,17 @@ var newDemoTemplate = { yearOfBirth: '2015' }; + +// Setter function for form_fields +function formFieldsSetter(form_fields){ + for(var i=0; i