private string GetColumnValue(Epi.Web.Enter.Common.DTO.SurveyAnswerDTO item, string columnName) { string ColumnValue = ""; switch (columnName) { case "_UserEmail": ColumnValue = item.UserEmail; break; case "_DateUpdated": ColumnValue = item.DateUpdated.ToString(); break; case "_DateCreated": ColumnValue = item.DateCreated.ToString(); break; case "IsDraftMode": case "_Mode": if (item.IsDraftMode.ToString().ToUpper() == "TRUE") { ColumnValue = "Draft"; } else { ColumnValue = "Final"; } break; } return(ColumnValue); }
public ActionResult Index(string surveyId, SurveyAnswerModel surveyAnswerModel) { try { bool IsMobileDevice = this.Request.Browser.IsMobileDevice; if (IsMobileDevice == false) { IsMobileDevice = Epi.Web.MVC.Utility.SurveyHelper.IsMobileDevice(this.Request.UserAgent.ToString()); } FormsAuthentication.SetAuthCookie("BeginSurvey", false); Guid responseId = Guid.NewGuid(); Epi.Web.Enter.Common.DTO.SurveyAnswerDTO SurveyAnswer = _isurveyFacade.CreateSurveyAnswer(surveyId, responseId.ToString(), 0); SurveyInfoModel surveyInfoModel = GetSurveyInfo(SurveyAnswer.SurveyId); XDocument xdoc = XDocument.Parse(surveyInfoModel.XML); MvcDynamicForms.Form form = _isurveyFacade.GetSurveyFormData(SurveyAnswer.SurveyId, 1, SurveyAnswer, IsMobileDevice); var _FieldsTypeIDs = from _FieldTypeID in xdoc.Descendants("Field") select _FieldTypeID; foreach (var _FieldTypeID in _FieldsTypeIDs) { bool isRequired; string attributeValue = _FieldTypeID.Attribute("IsRequired").Value; if (bool.TryParse(attributeValue, out isRequired)) { if (isRequired) { if (!form.RequiredFieldsList.Contains(_FieldTypeID.Attribute("Name").Value)) { if (form.RequiredFieldsList != "") { form.RequiredFieldsList = form.RequiredFieldsList + "," + _FieldTypeID.Attribute("Name").Value.ToLower(); } else { form.RequiredFieldsList = _FieldTypeID.Attribute("Name").Value.ToLower(); } } } } } _isurveyFacade.UpdateSurveyResponse(surveyInfoModel, SurveyAnswer.ResponseId, form, SurveyAnswer, false, false, 1, 0); return(RedirectToRoute(new { Controller = "Survey", Action = "Index", responseId = responseId, PageNumber = 1 })); } catch (Exception ex) { Epi.Web.Utility.ExceptionMessage.SendLogMessage(ex, this.HttpContext); return(View(Epi.Web.MVC.Constants.Constant.EXCEPTION_PAGE)); } }
public static SurveyAnswerModel ToSurveyAnswerModel(this Epi.Web.Enter.Common.DTO.SurveyAnswerDTO SurveyAnswerDTO) { SurveyAnswerModel Model = new SurveyAnswerModel(); if (SurveyAnswerDTO != null) { Model.ResponseId = SurveyAnswerDTO.ResponseId; Model.SurveyId = SurveyAnswerDTO.SurveyId; Model.DateUpdated = SurveyAnswerDTO.DateUpdated; Model.DateCompleted = SurveyAnswerDTO.DateCompleted; Model.Status = SurveyAnswerDTO.Status; Model.XML = SurveyAnswerDTO.XML; } return(Model); }
public Epi.Web.MVC.Models.ResponseModel ConvertXMLToModel(Epi.Web.Enter.Common.DTO.SurveyAnswerDTO item, List <KeyValuePair <int, string> > Columns) { Epi.Web.MVC.Models.ResponseModel ResponseModel = new Models.ResponseModel(); var MetaDataColumns = Epi.Web.MVC.Constants.Constant.MetaDaTaColumnNames(); try { ResponseModel.Column0 = item.ResponseId; ResponseModel.IsLocked = item.IsLocked; IEnumerable <XElement> nodes; var document = XDocument.Parse(item.XML); if (MetaDataColumns.Contains(Columns[0].Value.ToString())) { ResponseModel.Column1 = GetColumnValue(item, Columns[0].Value.ToString()); } else { nodes = document.Descendants().Where(e => e.Name.LocalName.StartsWith("ResponseDetail") && e.Attribute("QuestionName").Value == Columns[0].Value.ToString()); if (nodes.Count() > 0) { ResponseModel.Column1 = nodes.First().Value; } } if (Columns.Count >= 2) { if (MetaDataColumns.Contains(Columns[1].Value.ToString())) { ResponseModel.Column2 = GetColumnValue(item, Columns[1].Value.ToString()); } else { nodes = document.Descendants().Where(e => e.Name.LocalName.StartsWith("ResponseDetail") && e.Attribute("QuestionName").Value == Columns[1].Value.ToString()); if (nodes.Count() > 0) { ResponseModel.Column2 = nodes.First().Value; } } } if (Columns.Count >= 3) { if (MetaDataColumns.Contains(Columns[2].Value.ToString())) { ResponseModel.Column3 = GetColumnValue(item, Columns[2].Value.ToString()); } else { nodes = document.Descendants().Where(e => e.Name.LocalName.StartsWith("ResponseDetail") && e.Attribute("QuestionName").Value == Columns[2].Value.ToString()); if (nodes.Count() > 0) { ResponseModel.Column3 = nodes.First().Value; } } } if (Columns.Count >= 4) { if (MetaDataColumns.Contains(Columns[3].Value.ToString())) { ResponseModel.Column4 = GetColumnValue(item, Columns[3].Value.ToString()); } else { nodes = document.Descendants().Where(e => e.Name.LocalName.StartsWith("ResponseDetail") && e.Attribute("QuestionName").Value == Columns[3].Value.ToString()); if (nodes.Count() > 0) { ResponseModel.Column4 = nodes.First().Value; } } } if (Columns.Count >= 5) { if (MetaDataColumns.Contains(Columns[4].Value.ToString())) { ResponseModel.Column5 = GetColumnValue(item, Columns[4].Value.ToString()); } else { nodes = document.Descendants().Where(e => e.Name.LocalName.StartsWith("ResponseDetail") && e.Attribute("QuestionName").Value == Columns[4].Value.ToString()); if (nodes.Count() > 0) { ResponseModel.Column5 = nodes.First().Value; } } } return(ResponseModel); } catch (Exception Ex) { throw new Exception(Ex.Message); } }
public static void UpdateSurveyResponse(SurveyInfoModel surveyInfoModel, MvcDynamicForms.Form form, SurveyAnswerRequest surveyAnswerRequest, SurveyResponseXML surveyResponseXML, ISurveyAnswerRepository iSurveyAnswerRepository, SurveyAnswerResponse surveyAnswerResponse, string responseId, Epi.Web.Enter.Common.DTO.SurveyAnswerDTO surveyAnswerDTO, bool IsSubmited, bool IsSaved, int PageNumber, int UserId) { // 1 Get the record for the current survey response // 2 update the current survey response // 3 save the current survey response if (!IsSubmited) { // 2 a. update the current survey answer request surveyAnswerRequest.SurveyAnswerList = surveyAnswerResponse.SurveyResponseList; surveyResponseXML.Add(form); XDocument SavedXml = XDocument.Parse(surveyAnswerDTO.XML); bool AddRoot = false; if (SavedXml.Root.FirstAttribute.Value.ToString() == "0") { AddRoot = true; } surveyAnswerRequest.SurveyAnswerList[0].XML = surveyResponseXML.CreateResponseXml(surveyInfoModel.SurveyId, AddRoot, form.CurrentPage, form.PageId).InnerXml; // 2 b. save the current survey response surveyAnswerRequest.Action = Epi.Web.MVC.Constants.Constant.UPDATE; //"Update"; // surveyAnswerRequest.Action = Epi.Web.MVC.Constants.Constant.UpdateMulti; //Append to Response Xml XDocument CurrentPageResponseXml = XDocument.Parse(surveyAnswerRequest.SurveyAnswerList[0].XML); if (SavedXml.Root.FirstAttribute.Value.ToString() != "0") { surveyAnswerRequest.SurveyAnswerList[0].XML = MergeXml(SavedXml, CurrentPageResponseXml, form.CurrentPage).ToString(); } } ////Update page number before saving response XML XDocument Xdoc = XDocument.Parse(surveyAnswerRequest.SurveyAnswerList[0].XML); if (PageNumber != 0) { Xdoc.Root.Attribute("LastPageVisited").Value = PageNumber.ToString(); } ////Update Hidden Fields List before saving response XML if (form.HiddenFieldsList != null) { Xdoc.Root.Attribute("HiddenFieldsList").Value = ""; Xdoc.Root.Attribute("HiddenFieldsList").Value = form.HiddenFieldsList.ToString(); } if (form.HighlightedFieldsList != null) { Xdoc.Root.Attribute("HighlightedFieldsList").Value = ""; Xdoc.Root.Attribute("HighlightedFieldsList").Value = form.HighlightedFieldsList.ToString(); } if (form.DisabledFieldsList != null) { Xdoc.Root.Attribute("DisabledFieldsList").Value = ""; Xdoc.Root.Attribute("DisabledFieldsList").Value = form.DisabledFieldsList.ToString(); } if (form.RequiredFieldsList != null) { Xdoc.Root.Attribute("RequiredFieldsList").Value = ""; Xdoc.Root.Attribute("RequiredFieldsList").Value = form.RequiredFieldsList.ToString(); } // AssignList List <KeyValuePair <string, String> > FieldsList = new List <KeyValuePair <string, string> >(); FieldsList = GetHiddenFieldsList(form); if (FieldsList != null) { IEnumerable <XElement> XElementList = Xdoc.XPathSelectElements("SurveyResponse/Page/ResponseDetail"); for (var i = 0; i < FieldsList.Count; i++) { foreach (XElement Element in XElementList) { if (Element.Attribute("QuestionName").Value.ToString().Equals(FieldsList[i].Key, StringComparison.OrdinalIgnoreCase)) { if (FieldsList[i].Value != null) { Element.Value = FieldsList[i].Value; } break; } } } } ////Update survey response Status //if (IsSubmited) //{ // surveyAnswerRequest.SurveyAnswerList[0].Status = 3; // surveyAnswerRequest.SurveyAnswerList[0].DateCompleted = DateTime.Now; // Xdoc.Root.Attribute("LastPageVisited").Remove(); // Xdoc.Root.Attribute("HiddenFieldsList").Remove(); // Xdoc.Root.Attribute("HighlightedFieldsList").Remove(); // Xdoc.Root.Attribute("DisabledFieldsList").Remove(); // Xdoc.Root.Attribute("RequiredFieldsList").Remove(); // RemovePageNumAtt(Xdoc); //} if (IsSaved) //TODO item for WebSurveyIntegration [RecordSourceID=4 and StatusID=3] { surveyAnswerRequest.SurveyAnswerList[0].Status = 2; } surveyAnswerRequest.SurveyAnswerList[0].XML = Xdoc.ToString(); /////Update Survey Mode //////////////////// surveyAnswerRequest.SurveyAnswerList[0].IsDraftMode = surveyAnswerDTO.IsDraftMode; surveyAnswerRequest.Criteria.UserId = UserId; iSurveyAnswerRepository.SaveSurveyAnswer(surveyAnswerRequest); }