示例#1
0
        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);
        }
示例#2
0
        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");
            }
        }