public void FormResponseDetailPropCount()
        {
            FormResponseDetail objFormResponseDetail         = new FormResponseDetail();
            int numberOfPublicPropertiesofFormResponseDetail = objFormResponseDetail.GetType().GetProperties().Count();

            Assert.AreEqual(numberOfPublicPropertiesofFormResponseDetail, FormResponseDetailPropertyCount, "FormResponseDetail properties has been changed");
        }
        public static FormResponseDetail ToFormResponseDetail(this IResponseContext responseContext, int?pageNumber = null)
        {
            var formResponseDetail = new FormResponseDetail();

            formResponseDetail.IsNewRecord     = true;
            formResponseDetail.RecStatus       = RecordStatus.InProcess;
            formResponseDetail.LastPageVisited = pageNumber.HasValue ? pageNumber.Value : 1;

            formResponseDetail.ResponseId       = responseContext.ResponseId;
            formResponseDetail.FormId           = responseContext.FormId;
            formResponseDetail.FormName         = responseContext.FormName;
            formResponseDetail.ParentResponseId = responseContext.ParentResponseId;
            formResponseDetail.ParentFormId     = responseContext.ParentFormId;
            formResponseDetail.ParentFormName   = responseContext.ParentFormName;
            formResponseDetail.RootResponseId   = responseContext.RootResponseId;
            formResponseDetail.RootFormId       = responseContext.RootFormId;
            formResponseDetail.RootFormName     = responseContext.RootFormName;
            formResponseDetail.IsNewRecord      = responseContext.IsNewRecord;

            formResponseDetail.UserOrgId          = responseContext.UserOrgId;
            formResponseDetail.UserId             = responseContext.UserId;
            formResponseDetail.UserName           = responseContext.UserName;
            formResponseDetail.FirstSaveLogonName = responseContext.UserName;
            formResponseDetail.LastSaveLogonName  = responseContext.UserName;

            var pageResponseDetail = new PageResponseDetail
            {
                PageNumber     = formResponseDetail.LastPageVisited,
                PageId         = _metadataAccessor.GetPageDigestByPageNumber(responseContext.FormId, formResponseDetail.LastPageVisited).PageId,
                HasBeenUpdated = true
            };

            formResponseDetail.AddPageResponseDetail(pageResponseDetail);
            return(formResponseDetail);
        }
        public static FormResponseDetail ToHierarchicalFormResponseDetail(this IEnumerable <FormResponseProperties> formResponsePropertiesList)
        {
            FormResponseDetail formResponseDetail = null;

            if (formResponsePropertiesList != null)
            {
                foreach (var formResponseProperties in formResponsePropertiesList)
                {
                    if (formResponseDetail == null)
                    {
                        // verify that the first entry is the root response.
                        if (formResponseProperties.IsRootResponse)
                        {
                            formResponseDetail = formResponseProperties.ToFormResponseDetail();
                        }
                        else
                        {
                            // break out if the first entry is not the root response
                            break;
                        }
                    }
                    else
                    {
                        var parentFormResponseDetail = formResponseDetail.FindParentFormResponseDetail(formResponseProperties.ParentResponseId);
                        if (parentFormResponseDetail != null)
                        {
                            parentFormResponseDetail.ChildFormResponseDetailList.Add(formResponseProperties.ToFormResponseDetail());
                        }
                    }
                }
            }
            return(formResponseDetail);
        }
Ejemplo n.º 4
0
        public FormResponseDetail GetFormResponDetails()
        {
            FormResponseDetail _formResponse = new FormResponseDetail();

            _formResponse.ResponseId    = "4735d953-a4db-42fb-9708-27ffeffa2e27";
            _formResponse.FormId        = "2e1d01d4-f50d-4f23-888b-cd4b7fc9884b";
            _formResponse.RootFormName  = "Zika";
            _formResponse.RecStatus     = 2;
            _formResponse.FirstSaveTime = DateTime.Now;
            _formResponse.LastSaveTime  = DateTime.Now;
            _formResponse.UserOrgId     = 1;
            _formResponse.UserId        = 1014;
            _formResponse.UserName      = "******";
            _formResponse.IsRelatedView = false;
            _formResponse.IsDraftMode   = false;
            _formResponse.IsLocked      = false;
            _formResponse.IsNewRecord   = false;
            //_formResponse.PageIds = [1, 2, 3, 4, 5, 6, 9];
            _formResponse.LastPageVisited       = 0;
            _formResponse.RequiredFieldsList    = "patientname1";
            _formResponse.HiddenFieldsList      = ",whh_illnessvacchist";
            _formResponse.HighlightedFieldsList = "";
            _formResponse.FormName           = "Zika";
            _formResponse.DisabledFieldsList = ",vaccyear_dengue,vaccyear_japenceph,vaccyear_tickenceph,vaccyear_yellowfever,whh_illnessvacchist";
            return(_formResponse);
        }
Ejemplo n.º 5
0
        public bool SendMessagesToTopic(FormResponseDetail hierarchicalResponse)
        {
            //Create Topic
            CreateTopic();

            var responseProperties = new Dictionary <string, object>();

            responseProperties.Add(MessagePropertyKeys.ResponseId, hierarchicalResponse.RootResponseId);
            responseProperties.Add(MessagePropertyKeys.FormId, hierarchicalResponse.RootFormId);
            responseProperties.Add(MessagePropertyKeys.FormName, hierarchicalResponse.RootFormName);
            responseProperties.Add(MessagePropertyKeys.UserOrgId, hierarchicalResponse.UserOrgId);
            responseProperties.Add(MessagePropertyKeys.IsDeleted, hierarchicalResponse.RecStatus == RecordStatus.Deleted ||
                                   hierarchicalResponse.RecStatus == RecordStatus.PhysicalDelete);

            var hierarchicalResponseJson = JsonConvert.SerializeObject(hierarchicalResponse, Formatting.None, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });


            //Send message
            SendMessage(hierarchicalResponseJson, responseProperties);

            return(false);
        }
        public FormResponseDetail CreateResponseDocument(IResponseContext responseContext, PageDigest[] pageDigests)
        {
            int numberOfPages = pageDigests.Length;

            var firstPageDigest = pageDigests.First();
            var formId          = firstPageDigest.FormId;
            var formName        = firstPageDigest.FormName;

            FormResponseDetail formResponseDetail = responseContext.ToFormResponseDetail();

            formResponseDetail.LastPageVisited = 1;

            foreach (var pageDigest in pageDigests)
            {
                var fieldNames         = pageDigest.FieldNames;
                var pageResponseDetail = new PageResponseDetail
                {
                    PageId     = pageDigest.PageId,
                    PageNumber = pageDigest.PageNumber,

                    ResponseQA = fieldNames.Select(x => new { Key = x.ToLower(), Value = string.Empty }).ToDictionary(n => n.Key, v => v.Value)
                };
                SetRequiredList(pageDigest.Fields);
                formResponseDetail.AddPageResponseDetail(pageResponseDetail);
            }
            return(formResponseDetail);
        }
        /// <summary>
        /// Deprecated
        /// </summary>
        /// <param name="formId"></param>
        /// <param name="addRoot"></param>
        /// <param name="currentPage"></param>
        /// <param name="pageId"></param>
        /// <param name="responseId"></param>
        /// <returns></returns>
        public FormResponseDetail UpdateResponseDetail(FormResponseDetail formResponseDetail, int currentPage, string pageId)
        {
            if (formResponseDetail.PageResponseDetailList.Count() == 0)
            {
                formResponseDetail.IsNewRecord     = true;
                formResponseDetail.RecStatus       = RecordStatus.InProcess;
                formResponseDetail.LastPageVisited = currentPage == 0 ? 1 : currentPage;
            }
            if (!String.IsNullOrWhiteSpace(pageId))
            {
                var pageResponseDetail = formResponseDetail.PageResponseDetailList.SingleOrDefault(p => p.PageId == Convert.ToInt32(pageId));
                if (pageResponseDetail == null)
                {
                    pageResponseDetail = new PageResponseDetail
                    {
                        PageId     = Convert.ToInt32(pageId),
                        PageNumber = currentPage,
                        ResponseQA = _responseQA
                    };
                    formResponseDetail.AddPageResponseDetail(pageResponseDetail);
                }
                else
                {
                    pageResponseDetail.ResponseQA = _responseQA;
                }
            }

            return(formResponseDetail);
        }
        public bool PutResponseInfoData(FormResponseDetail formResponseDetail)
        {
            CosmosDBCRUD formResponseCRUD = new CosmosDBCRUD();
            var          formResponsePropertiesFlattenedList = formResponseDetail.ToFormResponsePropertiesFlattenedList();
            var          result = formResponseCRUD.SaveFormResponsePropertiesAsync(formResponsePropertiesFlattenedList).Result;

            return(true);
        }
Ejemplo n.º 9
0
        public void NotifyConsistencyService(FormResponseDetail hierarchicalFormResponseDetail)
        {
            var serviceBusCRUD = new ServiceBusCRUD();

            //send notification to ServiceBus
            serviceBusCRUD.SendMessagesToTopic(hierarchicalFormResponseDetail);
            //ConsistencyHack(hierarchicalResponse);
        }
Ejemplo n.º 10
0
        public static SurveyResponseBO ToSurveyResponseBO(this FormResponseDetail formResponseDetail)
        {
            var surveyResponseBO = new SurveyResponseBO();

            surveyResponseBO.ResponseDetail = formResponseDetail;
            surveyResponseBO.ViewId         = new Common.Metadata.MetadataAccessor().GetFormDigest(formResponseDetail.FormId).ViewId;
            return(surveyResponseBO);
        }
Ejemplo n.º 11
0
 public static FormResponseDetail MergeResponseDetail(FormResponseDetail savedResponseDetail, PageResponseDetail currentPageResponseDetail)
 {
     savedResponseDetail = savedResponseDetail ?? new FormResponseDetail
     {
         FormId   = currentPageResponseDetail.FormId,
         FormName = currentPageResponseDetail.FormName
     };
     savedResponseDetail.LastPageVisited = currentPageResponseDetail.PageNumber;
     savedResponseDetail.MergePageResponseDetail(currentPageResponseDetail);
     return(savedResponseDetail);
 }
Ejemplo n.º 12
0
        public static bool SendSurveyDataToSQL(MessagePayload messagePayload)
        {
            //Convert to FormResponseDetails
            FormResponseDetail formResponseDetail = JsonConvert.DeserializeObject <FormResponseDetail>(messagePayload.Body);

            PageDigest[][] pagedigest = GetPageDigest();

            //Send to SQL Server
            Epi.Cloud.SqlServer.PersistToSqlServer objPersistResponse = new Cloud.SqlServer.PersistToSqlServer();
            objPersistResponse.PersistToSQLServerDB(formResponseDetail, pagedigest);
            return(true);
        }
Ejemplo n.º 13
0
        public static SurveyAnswerDTO ToSurveyAnswerDTO(this FormResponseDetail formResponseDetail, MetadataAccessor metadataAccessor = null)
        {
            SurveyAnswerDTO surveyAnswerDTO = new SurveyAnswerDTO(formResponseDetail);

            if (metadataAccessor == null)
            {
                metadataAccessor = new MetadataAccessor();
            }
            var formDigest = metadataAccessor.GetFormDigest(formResponseDetail.FormId);

            surveyAnswerDTO.ViewId          = formDigest.ViewId;
            surveyAnswerDTO.RequestedViewId = surveyAnswerDTO.ViewId.ToString();
            surveyAnswerDTO.FormOwnerId     = formDigest.OwnerUserId;
            return(surveyAnswerDTO);
        }
        private static void Flatten(FormResponseDetail childFormResponseDetail, List <FormResponseProperties> formResponsePropertiesList)
        {
            var childFormResponseProperties = childFormResponseDetail.ToFormResponseProperties();

            formResponsePropertiesList.Add(childFormResponseProperties);
            var nextChildFormResponseDetailList = childFormResponseDetail.ChildFormResponseDetailList;

            if (nextChildFormResponseDetailList != null)
            {
                foreach (var nextChildFormResponseDetail in nextChildFormResponseDetailList)
                {
                    Flatten(nextChildFormResponseDetail, formResponsePropertiesList);
                }
            }
        }
        public static FormResponseProperties ToFormResponseProperties(this FormResponseDetail formResponseDetail)
        {
            if (formResponseDetail == null)
            {
                return(null);
            }

            FormResponseProperties formResponseProperties = new FormResponseProperties
            {
                ResponseId = formResponseDetail.ResponseId,
                FormId     = formResponseDetail.FormId,
                FormName   = formResponseDetail.FormName,

                ParentResponseId = formResponseDetail.ParentResponseId,
                ParentFormId     = formResponseDetail.ParentFormId,
                ParentFormName   = formResponseDetail.ParentFormName,

                RootResponseId = formResponseDetail.RootResponseId,
                RootFormId     = formResponseDetail.RootFormId,
                RootFormName   = formResponseDetail.RootFormName,

                IsNewRecord = formResponseDetail.IsNewRecord,

                RecStatus       = formResponseDetail.RecStatus,
                LastPageVisited = formResponseDetail.LastPageVisited,

                FirstSaveLogonName = formResponseDetail.FirstSaveLogonName,
                LastSaveLogonName  = formResponseDetail.LastSaveLogonName,
                FirstSaveTime      = formResponseDetail.FirstSaveTime,
                LastSaveTime       = formResponseDetail.LastSaveTime,

                UserOrgId = formResponseDetail.UserOrgId,
                UserId    = formResponseDetail.UserId,
                UserName  = formResponseDetail.UserName,

                IsDraftMode           = formResponseDetail.IsDraftMode,
                IsLocked              = formResponseDetail.IsLocked,
                RequiredFieldsList    = formResponseDetail.RequiredFieldsList,
                HiddenFieldsList      = formResponseDetail.HiddenFieldsList,
                HighlightedFieldsList = formResponseDetail.HighlightedFieldsList,
                DisabledFieldsList    = formResponseDetail.DisabledFieldsList,
                ResponseQA            = formResponseDetail.FlattenedResponseQA()
            };

            return(formResponseProperties);
        }
        protected FormResponseDetail InitializeFormResponseDetail(FormResponseDetail formResponseDetail = null)
        {
            if (formResponseDetail == null)
            {
                formResponseDetail = new FormResponseDetail();
            }

            formResponseDetail = InitializeResponseContext(formResponseDetail) as FormResponseDetail;

            var now = DateTime.UtcNow;

            formResponseDetail.FirstSaveTime = now;
            formResponseDetail.LastSaveTime  = now;

            formResponseDetail.LastPageVisited = 1;

            return(formResponseDetail);
        }
        public void GetSurveyResponseFromFormDetail()
        {
            //var json = System.IO.File.ReadAllText(@"c:\junk\ZikaMetadataFromService.json");
            //Template metadataObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Template>(json);
            MetadataAccessor metaDataAccessor = new MetadataAccessor("2e1d01d4-f50d-4f23-888b-cd4b7fc9884b");

            metaDataAccessor.CurrentFormId = "2e1d01d4-f50d-4f23-888b-cd4b7fc9884b";
            var _projectMetadataProvider = new Mock <IProjectMetadataProvider>();

            MetadataAccessor.StaticCache.ProjectMetadataProvider = _projectMetadataProvider.Object;
            var formResponseDetail = new FormResponseDetail()
            {
                FormId = "2e1d01d4-f50d-4f23-888b-cd4b7fc9884b", FormName = "Zika", RecStatus = 1, ResponseId = "cb07a6bc-d7e2-4f78-a3b0-de194227d351", UserOrgId = 1, UserId = 1014, LastSaveTime = DateTime.UtcNow
            };
            var surveyResponse = formResponseDetail.ToSurveyResponseBO();

            Assert.AreEqual(formResponseDetail.RecStatus, surveyResponse.RecStatus);
            Assert.AreEqual(formResponseDetail.FormId, surveyResponse.FormId);
        }
Ejemplo n.º 18
0
        public void ReadServiceBus()
        {
            MessagePayload messagePayload = null;

            messagePayload = ReadMessageFromServiceBus();
            if (messagePayload == null)
            {
                ServiceBusCRUD _serviceBus = new ServiceBusCRUD();
                _serviceBus.SendMessagesToTopic(GetFormResponDetails());
                messagePayload = ReadMessageFromServiceBus();
                FormResponseDetail _formSurveyData = GetFormResponDetailsFromJson(messagePayload);
                Assert.AreEqual(FormId, _formSurveyData.FormId);
            }
            else
            {
                FormResponseDetail formResponsefromServiceBus = JsonConvert.DeserializeObject <FormResponseDetail>(messagePayload.Body);
                Assert.AreEqual(FormId, formResponsefromServiceBus.FormId);
            }
        }
        /// <summary>
        /// ToHierarchicalFormResponseDetail
        /// </summary>
        /// <param name="formResponseProperties"></param>
        /// <param name="formResponseResource"></param>
        /// <returns></returns>
        public static FormResponseDetail ToHierarchicalFormResponseDetail(this FormResponseProperties formResponseProperties, FormResponseResource formResponseResource)
        {
            FormResponseDetail        formResponseDetail = formResponseProperties.ToFormResponseDetail();
            List <FormResponseDetail> flattened          = formResponseDetail.FlattenHierarchy();

            formResponseResource.CascadeThroughChildren(formResponseProperties,
                                                        frp =>
            {
                var frd    = frp.ToFormResponseDetail();
                var parent = flattened.Where(f => f.ResponseId == frp.ParentResponseId).SingleOrDefault();
                if (parent != null)
                {
                    parent.ChildFormResponseDetailList.Add(frd);
                }
                else
                {
                    throw new KeyNotFoundException();
                }
                flattened.Add(frd);
            });
            return(formResponseDetail);
        }
Ejemplo n.º 20
0
        public static FormResponseDetail ToCopy(this FormResponseDetail source)
        {
            var formResponseDetail = new FormResponseDetail
            {
                ChildFormResponseDetailList = source.ChildFormResponseDetailList != null?source.ChildFormResponseDetailList.Select(c => c).ToList() : null,
                                                  DisabledFieldsList     = source.DisabledFieldsList,
                                                  FirstSaveLogonName     = source.FirstSaveLogonName,
                                                  FirstSaveTime          = source.FirstSaveTime,
                                                  FormId                 = source.FormId,
                                                  FormName               = source.FormName,
                                                  HiddenFieldsList       = source.HiddenFieldsList,
                                                  HighlightedFieldsList  = source.HighlightedFieldsList,
                                                  IsDraftMode            = source.IsDraftMode,
                                                  IsLocked               = source.IsLocked,
                                                  IsNewRecord            = source.IsNewRecord,
                                                  IsRelatedView          = source.IsRelatedView,
                                                  LastPageVisited        = source.LastPageVisited,
                                                  LastSaveLogonName      = source.LastSaveLogonName,
                                                  LastSaveTime           = source.LastSaveTime,
                                                  PageIds                = source.PageIds.Select(id => id).ToList(),
                                                  PageResponseDetailList = source.PageResponseDetailList != null?source.PageResponseDetailList.Select(p => p).ToList() : null,
                                                                               ParentFormId       = source.ParentFormId,
                                                                               ParentFormName     = source.ParentFormName,
                                                                               ParentResponseId   = source.ParentResponseId,
                                                                               RecStatus          = source.RecStatus,
                                                                               RequiredFieldsList = source.RequiredFieldsList,
                                                                               ResponseId         = source.ResponseId,
                                                                               RootFormId         = source.RootFormId,
                                                                               RootFormName       = source.RootFormName,
                                                                               RootResponseId     = source.RootResponseId,
                                                                               UserId             = source.UserId,
                                                                               UserName           = source.UserName,
                                                                               UserOrgId          = source.UserOrgId
            };

            return(formResponseDetail);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Creates the first survey response in the response table
        /// </summary>
        /// <param name="responseContext"></param>
        /// <param name="surveyAnswerRequest1"></param>
        /// <param name="surveyAnswerDTO"></param>
        /// <param name="surveyResponseBuilder"></param>
        /// <param name="dataEntryService"></param>
        /// <param name="isEditMode"></param>
        /// <param name="currentOrgId"></param>
        /// <returns></returns>
        public static SurveyAnswerDTO CreateSurveyResponse(IResponseContext responseContext,
                                                           SurveyAnswerRequest surveyAnswerRequest1,
                                                           SurveyAnswerDTO surveyAnswerDTO,
                                                           SurveyResponseBuilder surveyResponseBuilder,
                                                           IDataEntryService dataEntryService)
        {
            SurveyAnswerRequest surveyAnswerRequest = new SurveyAnswerRequest();

            surveyAnswerRequest.ResponseContext = responseContext;

            FormResponseDetail responseDetail = responseContext.ToFormResponseDetail();

            surveyAnswerDTO.ResponseDetail = responseDetail;

            responseContext.ToSurveyAnswerDTOLite(surveyAnswerDTO);
            surveyAnswerDTO.DateCreated       = DateTime.UtcNow;
            surveyAnswerDTO.SurveyId          = responseContext.FormId;
            surveyAnswerDTO.Status            = RecordStatus.InProcess;
            surveyAnswerDTO.LastActiveOrgId   = responseContext.UserOrgId;
            surveyAnswerDTO.LastActiveUserId  = responseContext.UserId;
            surveyAnswerDTO.LoggedInUserOrgId = responseContext.UserOrgId;
            surveyAnswerDTO.LoggedInUserId    = responseContext.UserId;
            surveyAnswerDTO.RecordSourceId    = RecordSource.CloudEnter;

            surveyAnswerDTO.ParentResponseId = responseContext.ParentResponseId;
            surveyAnswerRequest.Criteria.UserOrganizationId = responseContext.UserOrgId;
            surveyAnswerRequest.Criteria.UserId             = responseContext.UserId;
            surveyAnswerRequest.Criteria.UserName           = responseContext.UserName;

            surveyAnswerRequest.SurveyAnswerList.Add(surveyAnswerDTO);

            surveyAnswerRequest.Action = responseContext.IsChildResponse ? RequestAction.CreateChild : RequestAction.Create;

            dataEntryService.SetSurveyAnswer(surveyAnswerRequest);

            return(surveyAnswerDTO);
        }
 public SurveyResponseBO(FormResponseDetail responseDetail = null)
 {
     ResponseDetail = responseDetail ?? new FormResponseDetail();
     DateUpdated    = DateTime.UtcNow;
     RecStatus      = RecordStatus.InProcess;
 }
Ejemplo n.º 23
0
        public virtual Form GetForm(SurveyInfoDTO surveyInfo, int pageNumber, SurveyAnswerDTO surveyAnswer, List <SurveyAnswerDTO> surveyAnswerList, List <SurveyInfoDTO> surveyInfoList, bool isAndroid)
        {
            // Save last values for subsequent calls from ValidateAll in SurveyController
            SurveyAnswerList = surveyAnswerList;
            SurveyInfoList   = surveyInfoList;

            var surveyId = CurrentFormId = surveyInfo.SurveyId;

            FormDigest currentFormDigest = GetFormDigest(surveyId);
            PageDigest currentPageDigest = GetPageDigestByPageNumber(surveyId, pageNumber);

            var pageId = currentPageDigest.PageId;

            string             formId             = currentFormDigest.FormId;
            string             formName           = currentFormDigest.FormName;
            FormResponseDetail formResponseDetail = surveyAnswer.ResponseDetail != null
                ? surveyAnswer.ResponseDetail
                : new FormResponseDetail {
                FormId = formId, FormName = formName
            };

            PageResponseDetail pageResponseDetail = formResponseDetail.GetPageResponseDetailByPageId(pageId);

            var form = new Form();

            form.PageId    = pageId.ToString();
            form.IsAndroid = isAndroid;

            form.ResponseId = surveyAnswer.ResponseId;
            form.FormName   = surveyAnswer.FormName;
            form.FormId     = surveyAnswer.FormId;

            form.ParentResponseId = surveyAnswer.ParentResponseId;
            form.ParentFormName   = surveyAnswer.ParentFormName;
            form.ParentFormId     = surveyAnswer.ParentFormId;

            form.RootResponseId = surveyAnswer.RootResponseId;
            form.RootFormName   = surveyAnswer.RootFormName;
            form.RootFormId     = surveyAnswer.RootFormId;

            form.SurveyInfo = surveyInfo;

            //Watermark
            if (form.SurveyInfo.IsDraftMode)
            {
                form.IsDraftModeStyleClass = "draft";
            }

            form.CurrentPage = pageNumber;

            form.NumberOfPages = currentFormDigest.NumberOfPages;

            double _Width, _Height;

            var orientationIsPortrait = currentFormDigest.Orientation == "Portrait";

            _Height = orientationIsPortrait ? currentFormDigest.Height : currentFormDigest.Width;
            _Width  = orientationIsPortrait ? currentFormDigest.Width : currentFormDigest.Height;

            //Add checkcode to Form
            string checkcode = currentFormDigest.CheckCode;

            StringBuilder javaScript          = new StringBuilder();
            StringBuilder VariableDefinitions = new StringBuilder();
            string        defineFormat        = "cce_Context.define(\"{0}\", \"{1}\", \"{2}\", \"{3}\");";
            string        defineNumberFormat  = "cce_Context.define(\"{0}\", \"{1}\", \"{2}\", new Number({3}));";

            if (surveyAnswerList != null && surveyAnswerList.Count > 0)
            {
                form.FormCheckCodeObj = form.GetRelateCheckCodeObj(GetRelateFormObj(surveyAnswerList, surveyInfoList), checkcode);
            }
            else
            {
                form.FormCheckCodeObj = form.GetCheckCodeObj(surveyInfo.GetFieldDigests(surveyId), formResponseDetail, checkcode);
            }

            form.HiddenFieldsList      = formResponseDetail.HiddenFieldsList;
            form.HighlightedFieldsList = formResponseDetail.HighlightedFieldsList;
            form.DisabledFieldsList    = formResponseDetail.DisabledFieldsList;
            form.RequiredFieldsList    = formResponseDetail.RequiredFieldsList;

            form.FormCheckCodeObj.GetVariableJavaScript(VariableDefinitions);
            form.FormCheckCodeObj.GetSubroutineJavaScript(VariableDefinitions);
            string pageName = currentPageDigest.PageName;

            //Generate page level Java script (Before)
            javaScript.Append(GetPageLevelJS(pageNumber, form, pageName, "Before"));
            //Generate page level Java script (After)
            javaScript.Append(GetPageLevelJS(pageNumber, form, pageName, "After"));

            SetProviderSpecificProperties(form, _Height, _Width);

            var responseQA = pageResponseDetail != null ? pageResponseDetail.ResponseQA : new Dictionary <string, string>();

            //if (responseQA.Count == 0)
            //{
            //    var pageFieldAttributes = GetPageFieldAttributesByPageId(surveyId, pageId);
            //    responseQA = new Dictionary<string, string>();

            //    foreach (var fieldAttributes in pageFieldAttributes.Values)
            //    {
            //        if (fieldAttributes.Value != null)
            //        {
            //            responseQA.Add(fieldAttributes.FieldName.ToLower(), fieldAttributes.Value);
            //        }
            //    }
            //}

            AddFormFields(surveyInfo, pageId, responseQA, form, _Width, _Height, checkcode, javaScript);

            form.FormJavaScript = VariableDefinitions.ToString() + "\n" + javaScript.ToString();

            return(form);
        }
        public Epi.Core.EnterInterpreter.Rule_Context GetCheckCodeObj(IEnumerable <IAbridgedFieldInfo> fields, FormResponseDetail formResponseDetail, string formCheckCode)
        {
            Epi.Core.EnterInterpreter.EpiInterpreterParser EIP    = new Epi.Core.EnterInterpreter.EpiInterpreterParser(Epi.Core.EnterInterpreter.EpiInterpreterParser.GetEnterCompiledGrammarTable());
            Epi.Core.EnterInterpreter.Rule_Context         result = (Epi.Core.EnterInterpreter.Rule_Context)EIP.Context;
            result.LoadTemplate(fields, formResponseDetail.FlattenedResponseQA());
            EIP.Execute(formCheckCode);

            return(result);
        }
Ejemplo n.º 25
0
 public void PersistToSqlServer(FormResponseDetail formResponseDetail)
 {
     Epi.Cloud.SqlServer.PersistToSqlServer objPersistResponse = new Cloud.SqlServer.PersistToSqlServer();
     //objPersistResponse.PersistToSQLServerDB(formResponseDetail);
 }
        public static FormResponseDetail ToFormResponseDetail(this FormResponseProperties formResponseProperties)
        {
            if (formResponseProperties == null)
            {
                return(null);
            }

            FormResponseDetail formResponseDetail = new FormResponseDetail
            {
                ResponseId = formResponseProperties.ResponseId,
                FormId     = formResponseProperties.FormId,
                FormName   = formResponseProperties.FormName,

                ParentResponseId = formResponseProperties.ParentResponseId,
                ParentFormId     = formResponseProperties.ParentFormId,
                ParentFormName   = formResponseProperties.ParentFormName,

                RootResponseId = formResponseProperties.RootResponseId,
                RootFormId     = formResponseProperties.RootFormId,
                RootFormName   = formResponseProperties.RootFormName,

                IsNewRecord = formResponseProperties.IsNewRecord,

                RecStatus       = formResponseProperties.RecStatus,
                LastPageVisited = formResponseProperties.LastPageVisited,

                FirstSaveLogonName = formResponseProperties.FirstSaveLogonName,
                LastSaveLogonName  = formResponseProperties.LastSaveLogonName,
                FirstSaveTime      = formResponseProperties.FirstSaveTime,
                LastSaveTime       = formResponseProperties.LastSaveTime,

                UserOrgId = formResponseProperties.UserOrgId,
                UserId    = formResponseProperties.UserId,
                UserName  = formResponseProperties.UserName,

                IsRelatedView         = formResponseProperties.IsRelatedView,
                IsDraftMode           = formResponseProperties.IsDraftMode,
                IsLocked              = formResponseProperties.IsLocked,
                RequiredFieldsList    = formResponseProperties.RequiredFieldsList,
                HiddenFieldsList      = formResponseProperties.HiddenFieldsList,
                HighlightedFieldsList = formResponseProperties.HighlightedFieldsList,
                DisabledFieldsList    = formResponseProperties.DisabledFieldsList,
            }.ResolveMetadataDependencies() as FormResponseDetail;

            var formDigest = _metadataAccessor.GetFormDigest(formResponseProperties.FormId);

            foreach (var qaFieldKVP in formResponseProperties.ResponseQA)
            {
                var fieldName          = qaFieldKVP.Key;
                var pageId             = formDigest.FieldNameToPageIdDirectory[fieldName];
                var pageResponseDetail = formResponseDetail
                                         .PageResponseDetailList
                                         .Where(prd => prd.PageId == pageId)
                                         .SingleOrDefault() ?? new PageResponseDetail
                {
                    PageId     = pageId,
                    PageNumber = _metadataAccessor.GetPageDigestByPageId(formDigest.FormId, pageId).PageNumber,
                    FormId     = formDigest.FormId,
                    FormName   = formDigest.FormName,
                    ResponseId = formResponseProperties.ResponseId,
                };
                pageResponseDetail.ResponseQA[fieldName] = qaFieldKVP.Value;
                formResponseDetail.AddPageResponseDetail(pageResponseDetail);
            }

            return(formResponseDetail);
        }
Ejemplo n.º 27
0
        public static void UpdateSurveyResponse(SurveyInfoModel surveyInfoModel,
                                                MvcDynamicForms.Form form,
                                                SurveyAnswerRequest surveyAnswerRequest,
                                                SurveyResponseBuilder surveyResponseBuilder,
                                                IDataEntryService dataEntryService,
                                                SurveyAnswerResponse surveyAnswerResponse,
                                                string responseId,
                                                SurveyAnswerDTO surveyAnswerDTO,
                                                bool isSubmited,
                                                bool isSaved,
                                                int pageNumber,
                                                int orgId,
                                                int userId)
        {
            // 1 Get the record for the current survey response
            // 2 update the current survey response
            // 3 save the current survey response

            var savedResponseDetail = surveyAnswerDTO.ResponseDetail;

            if (!isSubmited)
            {
                // 2 a. update the current survey answer request
                surveyAnswerRequest.SurveyAnswerList = surveyAnswerResponse.SurveyResponseList;

                surveyResponseBuilder.Add(form);

                FormResponseDetail formResponseDetail = surveyResponseBuilder.UpdateResponseDetail(savedResponseDetail, form.CurrentPage, form.PageId);

                surveyAnswerRequest.SurveyAnswerList[0].ResponseDetail = formResponseDetail;
                // 2 b. save the current survey response
                surveyAnswerRequest.Action = RequestAction.Update;

                var currentPageNumber = form.CurrentPage;
                FormResponseDetail currentFormResponseDetail = surveyAnswerRequest.SurveyAnswerList[0].ResponseDetail;
                PageResponseDetail currentPageResponseDetail = currentFormResponseDetail.GetPageResponseDetailByPageNumber(currentPageNumber);

                var mergedResponseDetail = MergeResponseDetail(savedResponseDetail, currentPageResponseDetail);
                surveyAnswerRequest.SurveyAnswerList[0].ResponseDetail.PageIds = mergedResponseDetail.PageIds;
                // keep only the pages that have updates
                var updatedPageResponseDetailList = mergedResponseDetail.PageResponseDetailList.ToList();
                surveyAnswerRequest.SurveyAnswerList[0].ResponseDetail.PageResponseDetailList.Clear();
                surveyAnswerRequest.SurveyAnswerList[0].ResponseDetail.PageResponseDetailList.AddRange(updatedPageResponseDetailList);
            }

            var updatedFromResponseDetail = surveyAnswerRequest.SurveyAnswerList[0].ResponseDetail;

            if (updatedFromResponseDetail.UserId <= 0)
            {
                updatedFromResponseDetail.UserId = userId;
            }
            if (updatedFromResponseDetail.UserOrgId <= 0)
            {
                updatedFromResponseDetail.UserOrgId = orgId;
            }

            ////Update page number before saving response
            if (surveyAnswerRequest.SurveyAnswerList[0].CurrentPageNumber != 0)
            {
                updatedFromResponseDetail.LastPageVisited = pageNumber;
            }
            if (form.HiddenFieldsList != null)
            {
                updatedFromResponseDetail.HiddenFieldsList = form.HiddenFieldsList;
            }
            if (form.HighlightedFieldsList != null)
            {
                updatedFromResponseDetail.HighlightedFieldsList = form.HighlightedFieldsList;
            }
            if (form.DisabledFieldsList != null)
            {
                updatedFromResponseDetail.DisabledFieldsList = form.DisabledFieldsList;
            }
            if (form.RequiredFieldsList != null)
            {
                updatedFromResponseDetail.RequiredFieldsList = form.RequiredFieldsList;
            }

            //  AssignList
            List <KeyValuePair <string, string> > fieldsList = GetHiddenFieldsList(form).Where(kvp => kvp.Value != null).ToList();

            if (fieldsList.Count > 0)
            {
                var formId           = form.SurveyInfo.SurveyId;
                var metadataAccessor = form.SurveyInfo as MetadataAccessor;
                var formDigest       = metadataAccessor.GetFormDigest(formId);
                foreach (var fieldsListKvp in fieldsList)
                {
                    var fieldName          = fieldsListKvp.Key.ToLower();
                    var pageId             = formDigest.FieldNameToPageId(fieldName);
                    var pageResponseDetail = updatedFromResponseDetail.PageResponseDetailList.SingleOrDefault(p => p.PageId == pageId);
                    if (pageResponseDetail == null)
                    {
                        var pageDigest = metadataAccessor.GetPageDigestByPageId(formId, pageId);
                        pageResponseDetail = new PageResponseDetail {
                            PageId = pageId, PageNumber = pageDigest.PageNumber
                        };
                        updatedFromResponseDetail.AddPageResponseDetail(pageResponseDetail);
                    }
                    pageResponseDetail.ResponseQA[fieldName] = fieldsListKvp.Value;
                    pageResponseDetail.HasBeenUpdated        = true;
                }
            }

            if (isSaved)
            {
                surveyAnswerRequest.SurveyAnswerList[0].Status = RecordStatus.Saved;
                surveyAnswerRequest.SurveyAnswerList[0].ReasonForStatusChange = RecordStatusChangeReason.Update;
            }

            /////Update Survey Mode ////////////////////
            surveyAnswerRequest.SurveyAnswerList[0].IsDraftMode = surveyAnswerDTO.IsDraftMode;
            //surveyAnswerRequest.Criteria.UserId = UserId;
            ResponseContext responseContext = ((IResponseContext)updatedFromResponseDetail).CloneResponseContext();

            if (responseContext.UserId == 0)
            {
                responseContext.UserId = userId;
            }
            if (responseContext.UserOrgId == 0)
            {
                responseContext.UserOrgId = orgId;
            }
            surveyAnswerRequest.ResponseContext = responseContext;

            dataEntryService.SetSurveyAnswer(surveyAnswerRequest);
        }
        public void PersistToSQLServerDB(FormResponseDetail objFormResponseDetail, PageDigest[][] PageDigestsVal)
        {
            PageDigests = PageDigestsVal;
            //TODO: Insert data for formInfo
            string ColumnNames = "RECSTATUS,GlobalRecordId,FirstSaveLogonName,FirstSaveTime,LastSaveLogonName,LastSaveTime,FKEY";

            string ColumnValues = objFormResponseDetail.RecStatus + ",'" + objFormResponseDetail.ResponseId + "','" + objFormResponseDetail.FirstSaveLogonName + "','" + objFormResponseDetail.LastSaveTime + "','" +
                                  objFormResponseDetail.LastSaveLogonName + "','" + objFormResponseDetail.LastSaveTime + "'," + (objFormResponseDetail.ParentResponseId != null ? "'" + objFormResponseDetail.ParentResponseId + "'" : "NULL");

            objFormResponseDetail.FirstSaveLogonName = objFormResponseDetail.LastSaveLogonName = "SRANT\\Patelh";

            string UpdateColumnQuery = "RECSTATUS = '" + objFormResponseDetail.RecStatus +
                                       "', GlobalRecordId ='" + objFormResponseDetail.ResponseId +
                                       "', FirstSaveLogonName ='" + objFormResponseDetail.FirstSaveLogonName +
                                       "', FirstSaveTime ='" + objFormResponseDetail.LastSaveTime +
                                       "', LastSaveLogonName ='" + objFormResponseDetail.LastSaveLogonName +
                                       "', LastSaveTime ='" + objFormResponseDetail.LastSaveTime +
                                       "', FKEY ='" + (objFormResponseDetail.ParentResponseId != null ? objFormResponseDetail.ParentResponseId : "NULL") + "'";

            PersistToSql(objFormResponseDetail.ResponseId, objFormResponseDetail.FormName, ColumnNames, ColumnValues, UpdateColumnQuery);


            // PageDigests = this.GetPageDigest();

            //TODO: Insert/Update data for All Child Forms
            if (objFormResponseDetail.PageResponseDetailList.Count > 0)
            {
                foreach (PageResponseDetail objPageResoponse in objFormResponseDetail.PageResponseDetailList)
                {
                    if (objPageResoponse.ResponseQA.Count != 0)
                    {
                        string childFormName                = objPageResoponse.FormName + objPageResoponse.PageId;
                        string ChildcolumnNames             = "GlobalRecordId";
                        string ChildColumnValues            = "'" + objFormResponseDetail.ResponseId + "'";
                        string ChildColumnUpdateColumnQuery = string.Empty;

                        foreach (var responseQA in objPageResoponse.ResponseQA)
                        {
                            string ResponseKey   = responseQA.Key;
                            string ResponseValue = responseQA.Value;


                            //if (!ResponseKey.Contains("groupbox") && !ResponseKey.StartsWith("grp") && !ResponseKey.EndsWith("grp"))
                            //{
                            MetadataAccessor getFieldDigest = new MetadataAccessor();
                            //var FieldDataType = getFieldDigest.GetFieldDigestByFieldName(objPageResoponse.FormId, ResponseKey);

                            var FieldDataType = GetFieldDataTypeByFieldName(objPageResoponse.FormId, objPageResoponse.PageId, ResponseKey);


                            //if (!(FieldDataType.ToString().Equals(MetaFieldType.CommandButton.ToString()))
                            //    && (!FieldDataType.ToString().Equals(MetaFieldType.LabelTitle.ToString()))
                            //    && (!FieldDataType.ToString().Equals(MetaFieldType.Relate.ToString()))
                            //    && (!FieldDataType.ToString().Equals(MetaFieldType.Group.ToString())))
                            if (!(FieldDataType.ToString() == "Unknown"))
                            {
                                ChildcolumnNames += ChildcolumnNames != string.Empty ? "," + ResponseKey : ResponseKey;


                                if ((!string.IsNullOrEmpty(ResponseValue)) && ResponseValue.Contains("'"))
                                {
                                    ResponseValue = ResponseValue.Replace("'", "''");
                                }

                                //if (FieldDataType.ToString().Equals(MetaFieldType.Checkbox.ToString()) || FieldDataType.ToString().Equals(MetaFieldType.YesNo.ToString()))
                                if (FieldDataType.ToString() == "Boolean" || FieldDataType.ToString() == "YesNo")
                                {
                                    ResponseValue = ResponseValue.ToLower().ToString() == "yes" ? "1" : "0";

                                    ChildColumnValues            += ChildColumnValues != string.Empty ? "," + ResponseValue : "" + 0;
                                    ChildColumnUpdateColumnQuery += ChildcolumnNames != string.Empty ? ResponseKey + "=" + ResponseValue + "," : "NULL";
                                }
                                //else if (FieldDataType.ToString().Equals(MetaFieldType.Number.ToString()))
                                else if (FieldDataType.ToString().Equals("Number"))
                                {
                                    ChildColumnValues            += ChildColumnValues != string.Empty ? "," + (ResponseValue != string.Empty ? ResponseValue : "NULL") : "NULL";
                                    ChildColumnUpdateColumnQuery += ChildcolumnNames != string.Empty ? ResponseKey + "=" + (ResponseValue != string.Empty ? ResponseValue : "NULL") + "," : "NULL";
                                }
                                else
                                {
                                    ChildColumnValues            += ChildColumnValues != string.Empty ? ",'" + (ResponseValue != string.Empty ? ResponseValue : "NULL") + "'" : ResponseValue != string.Empty ? ResponseValue : "NULL";
                                    ChildColumnUpdateColumnQuery += ChildcolumnNames != string.Empty ? ResponseKey + "='" + (ResponseValue != string.Empty ? ResponseValue : "NULL") + "'," : "NULL";
                                }
                            }
                            //}
                        }


                        if (ChildColumnUpdateColumnQuery.EndsWith(","))
                        {
                            ChildColumnUpdateColumnQuery = ChildColumnUpdateColumnQuery.Substring(0, ChildColumnUpdateColumnQuery.Length - ",".Length);
                        }


                        PersistToSql(objPageResoponse.ResponseId, childFormName, ChildcolumnNames, ChildColumnValues, ChildColumnUpdateColumnQuery);
                    }
                }
            }

            if (objFormResponseDetail.ChildFormResponseDetailList.Count > 0)
            {
                foreach (FormResponseDetail childformResponse in objFormResponseDetail.ChildFormResponseDetailList)
                {
                    PersistToSQLServerDB(childformResponse, PageDigests);
                }
            }
        }
Ejemplo n.º 29
0
        public ActionResult Index(string surveyId, string addNewFormId, string editForm, string cancel)
        {
            // Assign "editForm" parameter to a less confusing name.
            // editForm contains the responseId of the record being edited.
            string editResponseId = editForm;

            int    userId         = GetIntSessionValue(UserSession.Key.UserId);
            string userName       = GetStringSessionValue(UserSession.Key.UserName);
            bool   isMobileDevice = this.Request.Browser.IsMobileDevice;

            FormsAuthentication.SetAuthCookie("BeginSurvey", false);
            bool isEditMode = false;

            if (isMobileDevice == true)
            {
                isMobileDevice = Epi.Cloud.MVC.Utility.SurveyHelper.IsMobileDevice(this.Request.UserAgent.ToString());
            }
            bool isAndroid = this.Request.UserAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0;

            if (!string.IsNullOrEmpty(/*FromURL*/ cancel))
            {
                int pageNumber;
                int.TryParse(/*FromURL*/ cancel, out pageNumber);
                Dictionary <string, int> surveyPagesList = GetSessionValue <Dictionary <string, int> >(UserSession.Key.RelateButtonPageId);
                if (surveyPagesList != null)
                {
                    pageNumber = surveyPagesList[this.Request.Form["Parent_Response_Id"].ToString()];
                }

                return(RedirectToRoute(new { Controller = "Survey", Action = "Index", responseid = this.Request.Form["Parent_Response_Id"].ToString(), PageNumber = pageNumber }));
            }
            if (string.IsNullOrEmpty(/*FromURL*/ editResponseId) && string.IsNullOrEmpty(/*FromURL*/ addNewFormId) && !IsSessionValueNull(UserSession.Key.EditResponseId))
            {
                editResponseId = GetStringSessionValue(UserSession.Key.EditResponseId);
            }

            if (!string.IsNullOrEmpty(editResponseId))
            {
                if (IsSessionValueNull(UserSession.Key.RootResponseId))
                {
                    SetSessionValue(UserSession.Key.RootResponseId, editResponseId);
                }

                isEditMode = true;
                SetSessionValue(UserSession.Key.IsEditMode, isEditMode);

                SurveyAnswerDTO surveyAnswer = GetSurveyAnswer(editResponseId, GetStringSessionValue(UserSession.Key.RootFormId));
                if (!IsSessionValueNull(UserSession.Key.RecoverLastRecordVersion))
                {
                    surveyAnswer.RecoverLastRecordVersion = GetBoolSessionValue(UserSession.Key.RecoverLastRecordVersion);
                }
                //   string childRecordId = GetChildRecordId(surveyAnswer);
                //return RedirectToAction(ViewActions.Index, ControllerNames.Survey, new { responseid = surveyAnswer.ParentResponseId, PageNumber = 1, Edit = "Edit" });
                return(RedirectToAction(ViewActions.Index, ControllerNames.Survey, new { responseid = editResponseId, PageNumber = 1, Edit = "Edit" }));
            }

            //create the responseid
            Guid responseId = Guid.NewGuid();

            if (IsSessionValueNull(UserSession.Key.RootResponseId))
            {
                SetSessionValue(UserSession.Key.RootResponseId, responseId);
            }

            var rootResponseId = GetStringSessionValue(UserSession.Key.RootResponseId);

            TempData[TempDataKeys.ResponseId] = responseId.ToString();

            int orgId = GetIntSessionValue(UserSession.Key.CurrentOrgId);

            var responseContext = InitializeResponseContext(formId: /*FromURL*/ addNewFormId, responseId: responseId.ToString(), parentResponseId: this.Request.Form["Parent_Response_Id"].ToString(), isNewRecord: !isEditMode);

            // create the first survey response
            SurveyAnswerDTO          surveyAnswerDTO  = _surveyFacade.CreateSurveyAnswer(responseContext);
            List <FormsHierarchyDTO> formsHierarchy   = GetFormsHierarchy();
            SurveyInfoModel          surveyInfoModel  = GetSurveyInfo(surveyAnswerDTO.SurveyId, formsHierarchy);
            MetadataAccessor         metadataAccessor = surveyInfoModel as MetadataAccessor;

            // set the survey answer to be production or test
            surveyAnswerDTO.IsDraftMode = surveyInfoModel.IsDraftMode;

            MvcDynamicForms.Form form = _surveyFacade.GetSurveyFormData(surveyAnswerDTO.SurveyId, 1, surveyAnswerDTO, isMobileDevice, null, formsHierarchy, isAndroid);

            TempData[TempDataKeys.Width] = form.Width + 100;

            var    formDigest = metadataAccessor.GetFormDigest(surveyAnswerDTO.SurveyId);
            string checkcode  = formDigest.CheckCode;

            FormResponseDetail responseDetail = surveyAnswerDTO.ResponseDetail;

            form.FormCheckCodeObj = form.GetCheckCodeObj(MetadataAccessor.GetFieldDigests(surveyAnswerDTO.SurveyId), responseDetail, checkcode);

            ///////////////////////////// Execute - Record Before - start//////////////////////
            Dictionary <string, string> ContextDetailList = new Dictionary <string, string>();
            EnterRule             functionObject_B        = (EnterRule)form.FormCheckCodeObj.GetCommand("level=record&event=before&identifier=");
            SurveyResponseBuilder surveyResponseBuilder   = new SurveyResponseBuilder(_requiredList);

            if (functionObject_B != null && !functionObject_B.IsNull())
            {
                try
                {
                    PageDigest[] pageDigests = form.MetadataAccessor.GetCurrentFormPageDigests();
                    responseDetail = surveyResponseBuilder.CreateResponseDocument(responseContext, pageDigests);

                    SetSessionValue(UserSession.Key.RequiredList, surveyResponseBuilder.RequiredList);
                    _requiredList           = surveyResponseBuilder.RequiredList;
                    form.RequiredFieldsList = _requiredList;
                    functionObject_B.Context.HiddenFieldList      = form.HiddenFieldsList;
                    functionObject_B.Context.HighlightedFieldList = form.HighlightedFieldsList;
                    functionObject_B.Context.DisabledFieldList    = form.DisabledFieldsList;
                    functionObject_B.Context.RequiredFieldList    = form.RequiredFieldsList;

                    functionObject_B.Execute();

                    // field list
                    form.HiddenFieldsList      = functionObject_B.Context.HiddenFieldList;
                    form.HighlightedFieldsList = functionObject_B.Context.HighlightedFieldList;
                    form.DisabledFieldsList    = functionObject_B.Context.DisabledFieldList;
                    form.RequiredFieldsList    = functionObject_B.Context.RequiredFieldList;


                    ContextDetailList = SurveyHelper.GetContextDetailList(functionObject_B);
                    form = SurveyHelper.UpdateControlsValuesFromContext(form, ContextDetailList);

                    _surveyFacade.UpdateSurveyResponse(surveyInfoModel, responseId.ToString(), form, surveyAnswerDTO, false, false, 0, orgId, userId, userName);
                }
                catch (Exception ex)
                {
                    // do nothing so that processing
                    // can continue
                }
            }
            else
            {
                PageDigest[] pageDigestArray = form.MetadataAccessor.GetCurrentFormPageDigests();// metadataAccessor.GetPageDigests(surveyInfoModel.SurveyId);

                surveyAnswerDTO.ResponseDetail = surveyResponseBuilder.CreateResponseDocument(responseContext, pageDigestArray);

                _requiredList = surveyResponseBuilder.RequiredList;
                SetSessionValue(UserSession.Key.RequiredList, _requiredList);
                form.RequiredFieldsList = _requiredList;
                _surveyFacade.UpdateSurveyResponse(surveyInfoModel, surveyAnswerDTO.ResponseId, form, surveyAnswerDTO, false, false, 0, orgId, userId, userName);
            }

            surveyAnswerDTO = (SurveyAnswerDTO)formsHierarchy.SelectMany(x => x.ResponseIds).FirstOrDefault(z => z.ResponseId == surveyAnswerDTO.ResponseId);

            ///////////////////////////// Execute - Record Before - End//////////////////////
            return(RedirectToAction(ViewActions.Index, ControllerNames.Survey, new { responseid = responseId, PageNumber = 1 }));
        }
        /// <summary>
        /// DeleteResponse
        /// </summary>
        /// <param name="responseContext"></param>
        /// <param name="deleteType"></param>
        /// <returns></returns>
        public async Task <FormResponseResource> DeleteResponse(IResponseContext responseContext, int deleteType)
        {
            var rootResponseId = responseContext.RootResponseId ?? responseContext.ResponseId;
            var rootFormName   = responseContext.RootFormName ?? GetRootFormName(responseContext.RootFormId);


            bool isSuccessful = false;

            try
            {
                Uri rootFormCollectionUri = GetCollectionUri(rootFormName);

                FormResponseDetail hierarchicalFormResponseDetail = null;

                var rootResponseResource = ReadRootResponseResource(responseContext, false);
                if (rootResponseResource != null)
                {
                    var formResponseProperties = rootResponseResource.FormResponseProperties;

                    // Determine if the ResponseId parameter is the root responseId or a child responseId
                    if (responseContext.IsRootResponse)
                    {
                        // First logically delete the root and child responses
                        isSuccessful = await LogicallyDeleteResponse(rootResponseResource, formResponseProperties).ConfigureAwait(false);

                        formResponseProperties.RecStatus = RecordStatus.Deleted;

                        hierarchicalFormResponseDetail = formResponseProperties.ToHierarchicalFormResponseDetail(rootResponseResource);

                        if (deleteType == RecordStatus.PhysicalDelete)
                        {
                            isSuccessful = await PhysicallyDeleteResponse(rootResponseResource, formResponseProperties).ConfigureAwait(false);
                        }
                    }
                    else // if (responseContext.IsChildResponse)
                    {
                        formResponseProperties = rootResponseResource.GetChildResponse(responseContext);

                        // only logically delete child responses
                        isSuccessful = await LogicallyDeleteResponse(rootResponseResource, formResponseProperties).ConfigureAwait(false);

                        hierarchicalFormResponseDetail = formResponseProperties.ToHierarchicalFormResponseDetail(rootResponseResource);
                    }

                    if (deleteType != RecordStatus.PhysicalDelete && hierarchicalFormResponseDetail != null)
                    {
                        if (responseContext.IsChildResponse)
                        {
                            var result = await Client.UpsertDocumentAsync(rootFormCollectionUri, rootResponseResource).ConfigureAwait(false);
                        }

                        // Send hierarchicalFormResponseDetail to consistency service
                        var surveyPersistenceFacade = new CosmosDB_SurveyPersistenceFacade();
                        surveyPersistenceFacade.NotifyConsistencyService(hierarchicalFormResponseDetail);

                        if (responseContext.IsRootResponse)
                        {
                            var result = await PhysicallyDeleteResponse(rootResponseResource, formResponseProperties).ConfigureAwait(false);
                        }

                        return(rootResponseResource);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            return(null);
        }