public async Task <FieldViewModel> AddNewFieldToForm(NewFieldViewModel field, ObjectId formId) { ObjectId fieldObjectId = ObjectId.GenerateNewId(); string fieldType = field.fieldType; if (!TypeConstants.IsValidFieldType(fieldType)) { throw new Exception("Invalid Field Type"); } FieldViewModel fieldViewModel = new FieldViewModel { Id = fieldObjectId, formId = formId, createdAt = DateTime.UtcNow, index = field.index, fieldType = field.fieldType, title = field.title }; if (fieldType == TypeConstants.CHECKBOX_INPUT || fieldType == TypeConstants.DROP_DOWN_INPUT || fieldType == TypeConstants.RADIO_INPUT) { var values = Constants.ConvertJsonObject(field.value); fieldViewModel.value = values; } else { fieldViewModel.value = field.value; } await formCollection.UpdateOneAsync(_ => _.Id == formId, Builders <FormViewModel> .Update.Push <ObjectId>(_ => _.fields, fieldObjectId)); await fieldCollection.InsertOneAsync(fieldViewModel); return(fieldViewModel); }
public async Task <FieldViewModel> UpdateField(NewFieldViewModel field, ObjectId formId, ObjectId fieldId) { if (!TypeConstants.IsValidFieldType(field.fieldType)) { throw new Exception("Invalid Field Type"); } string fieldType = field.fieldType; object fieldValue = field.value; if (fieldType == TypeConstants.CHECKBOX_INPUT || fieldType == TypeConstants.DROP_DOWN_INPUT || fieldType == TypeConstants.RADIO_INPUT) { var values = Constants.ConvertJsonObject(field.value); fieldValue = values; } UpdateResult fieldUpdateResult = await fieldCollection.UpdateOneAsync( _ => _.Id == fieldId && _.formId == formId, Builders <FieldViewModel> .Update .Set(_ => _.title, field.title) .Set(_ => _.fieldType, field.fieldType) .Set(_ => _.index, field.index) .Set(_ => _.value, fieldValue)); if (fieldUpdateResult.IsAcknowledged) { var fieldTask = await fieldCollection.FindAsync(_ => _.Id == fieldId); return(await fieldTask.SingleOrDefaultAsync()); } else { throw new Exception("Unable to update field content"); } }