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); }
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); }
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); }
public void NotifyConsistencyService(FormResponseDetail hierarchicalFormResponseDetail) { var serviceBusCRUD = new ServiceBusCRUD(); //send notification to ServiceBus serviceBusCRUD.SendMessagesToTopic(hierarchicalFormResponseDetail); //ConsistencyHack(hierarchicalResponse); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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; }
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); }
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); }
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); } } }
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); }