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 void PageResponseDetailPropCount() { PageResponseDetail objPageResponseDetail = new PageResponseDetail(); int numberOfPublicPropertiesofPageResponseDetail = objPageResponseDetail.GetType().GetProperties().Count(); Assert.AreEqual(numberOfPublicPropertiesofPageResponseDetail, PageResponseDetailPropertyCount, "PageResponseDetail properties has been changed"); }
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 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 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 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); }