コード例 #1
0
ファイル: ResponseService.cs プロジェクト: Rud156/Forms
        public async Task <ResponseViewModel> UpdateResponse(NewResponseViewModel response,
                                                             ObjectId formId,
                                                             ObjectId responseId)
        {
            DeleteResult responseDeleteResult = await responseCollection.DeleteOneAsync(_ => _.Id == responseId);

            if (!responseDeleteResult.IsAcknowledged)
            {
                throw new Exception("Unable to update previous response");
            }

            FormObjectViewModel form = await GetForm(formId);

            List <FieldViewModel> fields = form.fields;

            if (fields.Count != response.responseValues.Count)
            {
                throw new Exception("Responses do not match fields");
            }

            bool fieldsValid = ResponseUtils.ResponseValidator(new List <FieldViewModel>(fields),
                                                               new List <NewResponseValuesViewModel>(response.responseValues));

            if (!fieldsValid)
            {
                throw new Exception("Responses do not match fields");
            }

            return(await CreateResponse(response, formId));
        }
コード例 #2
0
ファイル: ResponseService.cs プロジェクト: Rud156/Forms
        public async Task <ResponseViewModel> CreateResponse(NewResponseViewModel response, ObjectId formId)
        {
            FormObjectViewModel form = await GetForm(formId);

            List <FieldViewModel> fields = form.fields;

            if (fields.Count != response.responseValues.Count)
            {
                throw new Exception("Responses do not match fields");
            }

            bool fieldsValid = ResponseUtils.ResponseValidator(new List <FieldViewModel>(fields),
                                                               new List <NewResponseValuesViewModel>(response.responseValues));

            if (!fieldsValid)
            {
                throw new Exception("Responses do not match fields");
            }

            List <ResponseValueViewModel> responseValues = new List <ResponseValueViewModel>();

            foreach (var responseValue in response.responseValues)
            {
                if (!TypeConstants.IsValidFieldType(responseValue.responseType))
                {
                    throw new Exception("Invalid Response Type");
                }

                ResponseValueViewModel responseValueViewModel = new ResponseValueViewModel
                {
                    Id           = ObjectId.GenerateNewId(),
                    responseType = responseValue.responseType,
                    value        = responseValue.value,
                    index        = responseValue.index,
                    fieldId      = ObjectId.Parse(responseValue.fieldId)
                };

                string responseType = responseValue.responseType;
                if (responseType == TypeConstants.CHECKBOX_INPUT)
                {
                    var values = Constants.ConvertJsonObject(responseValue.value);
                    responseValueViewModel.value = values;
                }

                responseValues.Add(responseValueViewModel);
            }

            ResponseViewModel responseViewModel = new ResponseViewModel
            {
                Id             = ObjectId.GenerateNewId(),
                createdBy      = response.createdBy,
                createdAt      = DateTime.UtcNow,
                formId         = formId,
                responseValues = responseValues
            };

            await responseCollection.InsertOneAsync(responseViewModel);

            return(responseViewModel);
        }
コード例 #3
0
ファイル: FormUtils.cs プロジェクト: Rud156/Forms
        public static FormObjectViewModel CombineFormAndFields(FormViewModel form, List <FieldViewModel> fields)
        {
            if (form == null)
            {
                return(null);
            }

            FormObjectViewModel formObjectViewModel = new FormObjectViewModel
            {
                Id        = form.Id,
                formTitle = form.formTitle,
                createdAt = form.createdAt,
                createdBy = form.createdBy,
                fields    = fields
            };

            return(formObjectViewModel);
        }