コード例 #1
0
ファイル: FormService.cs プロジェクト: Rud156/Forms
        public async Task <FormObjectViewModel> CreateForm(NewFormViewModel form)
        {
            ObjectId formId = ObjectId.GenerateNewId();
            List <FieldViewModel> fields = new List <FieldViewModel>();

            foreach (var field in form.fields)
            {
                string fieldType = field.fieldType;
                if (!TypeConstants.IsValidFieldType(fieldType))
                {
                    throw new Exception("Invalid Field Type");
                }

                FieldViewModel fieldViewModel = new FieldViewModel
                {
                    Id        = ObjectId.GenerateNewId(),
                    formId    = formId,
                    fieldType = field.fieldType,
                    index     = field.index,
                    title     = field.title,
                    createdAt = DateTime.UtcNow
                };

                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;
                }

                fields.Add(fieldViewModel);
            }

            if (fields.Count != 0)
            {
                await fieldCollection.InsertManyAsync(fields);
            }

            IEnumerable <ObjectId> fieldIds = from _ in fields
                                              select _.Id;

            FormViewModel formViewModel = new FormViewModel
            {
                Id        = formId,
                createdAt = DateTime.UtcNow,
                createdBy = form.createdBy,
                formTitle = form.title,
                fields    = fieldIds.ToList()
            };

            await formCollection.InsertOneAsync(formViewModel);

            return(FormUtils.CombineFormAndFields(formViewModel, fields));
        }
コード例 #2
0
ファイル: ResponseService.cs プロジェクト: Rud156/Forms
        public async Task <FormObjectViewModel> GetForm(ObjectId formObjectId)
        {
            var formTask = await formCollection.FindAsync(_ => _.Id == formObjectId);

            var fieldTask = await fieldCollection.FindAsync(_ => _.formId == formObjectId);

            FormViewModel form = await formTask.SingleOrDefaultAsync();

            List <FieldViewModel> fields = await fieldTask.ToListAsync();

            return(FormUtils.CombineFormAndFields(form, fields));
        }