public string SubmitFormData(string FormSubmissionXML) { string runId = System.Guid.NewGuid().ToString(); if (FormSubmissionXML == null) FormSubmissionXML = String.Empty; String logFormSubmissionId = String.Empty; XmlDocument xmlInOutString = new XmlDocument(); XmlDocument formDataSubmissionXML = new XmlDocument(); XmlDocument formDataSubmissionResultXML = new XmlDocument(); XmlDocument formDefinitionXML = new XmlDocument(); XmlDocument xmlLeadgenSubmission = new XmlDocument(); int questionnaireID = 0; //string FormSubmissionFinalString = string.Empty; string formDataSubmissionXMLInput = string.Empty; string formDefinitionXMLString = string.Empty; string questionnaireIDFormat = string.Empty; string formSubmissionQuestionID = string.Empty; FormSubmissionFacade objFormSubmissionFacade = new FormSubmissionFacade(); try { // commented code for testing purpose //xmlinoutstring.Load(@"C:\XMLFile.xml"); //StringWriter strwriter = new StringWriter(); //XmlTextWriter txt = new XmlTextWriter(strwriter); //xmlinoutstring.WriteTo(txt); //FormSubmissionXML = strwriter.ToString(); formDataSubmissionXMLInput = FormSubmissionXML.Trim(); byte[] byteArray = new byte[formDataSubmissionXMLInput.Length]; System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); byteArray = encoding.GetBytes(formDataSubmissionXMLInput); // Load the memory stream MemoryStream memoryStream = new MemoryStream(byteArray); formDataSubmissionXML.Load(memoryStream); questionnaireIDFormat = utility.getParameter("regex_integer"); // Get the Questionarie ID from Form Submission XML if (formDataSubmissionXML != null) { XmlNode xmlNode = formDataSubmissionXML.SelectSingleNode("/FormSubmission/@ID"); if (xmlNode != null) { if (!String.IsNullOrEmpty(xmlNode.InnerText.Trim())) { formSubmissionQuestionID = xmlNode.InnerText; if (System.Text.RegularExpressions.Regex.IsMatch(xmlNode.InnerText, questionnaireIDFormat)) { questionnaireID = Convert.ToInt32(xmlNode.InnerText); } else { formDataSubmissionResultXML = objFormSubmissionFacade.GenerateInvalidQuestionnaireMessage(formSubmissionQuestionID, "InvalidQID"); } } } } if (questionnaireID != 0) { QuestionnaireStatus questionnaireStatus = new QuestionnaireStatus(); questionnaireStatus = objFormSubmissionFacade.GetQuestionStatus(questionnaireID); if (questionnaireStatus == QuestionnaireStatus.Active) { // FormDefinition FormDef = new FormDefinition(); formDefinitionXMLString = FormDefinitionFacade.GetFormDefinition(questionnaireID); formDefinitionXMLString = formDefinitionXMLString.Trim(); byte[] formDefinitionByteArray = new byte[formDefinitionXMLString.Length]; UTF8Encoding formDefEncoding = new System.Text.UTF8Encoding(); formDefinitionByteArray = formDefEncoding.GetBytes(formDefinitionXMLString); // Load the memory stream MemoryStream formDefMemoryStream = new MemoryStream(formDefinitionByteArray); formDefinitionXML.Load(formDefMemoryStream); formDataSubmissionResultXML = objFormSubmissionFacade.ValidateAndSubmitFormData(formDefinitionXML, formDataSubmissionXML, questionnaireID); } else { // Invalid Questionaire ID formDataSubmissionResultXML = objFormSubmissionFacade.GenerateInvalidQuestionnaireMessage(formSubmissionQuestionID, "InvalidQID"); } } } catch (XmlException xException) { // Invalid Form Data Submission XML Content formDataSubmissionResultXML = objFormSubmissionFacade.GenerateInvalidQuestionnaireMessage(formSubmissionQuestionID, "InvalidFile"); CheckPointManager.Instance.PublishTrackingEvent("RFGOldwebservice", questionnaireID.ToString(), "Survey", "SubmitForm", "RFGOldwebservice", "RFGOldwebservice", runId, EventState.Fail, TraceLevel.Error, false, xException, xException.Message); } catch (Exception ex) { //TODO: change request to NOT USE "insert_failed_submit" to log WS submission errors... and to include also the error message (not just the stack trace....) // Log the Runtime Exception into "insert_failed_submit" table in DB //20120530 | Tirumala Raju | RFG 2.7 | CR: PR629431 //objFormSubmissionFacade.SubmitErrorLog(normalException.StackTrace.ToString()); CheckPointManager.Instance.PublishTrackingEvent("RFGOldwebservice", questionnaireID.ToString(), "Survey", "SubmitForm", "RFGOldwebservice", "RFGOldwebservice", runId, EventState.Fail, TraceLevel.Error, false, ex, ex.Message); } try { if (utility.getParameter("ActivateFormSubmissionLog").ToString().ToLower() == "on") { if (objFormSubmissionFacade.ConvertToString(formDataSubmissionResultXML).Contains("response processed successfully")) { logFormSubmissionId = objFormSubmissionFacade.LogFormSubmissionDetails(HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToString(), FormSubmissionXML, formDefinitionXMLString, HttpContext.Current.Request.Headers.ToString(), objFormSubmissionFacade.ConvertToString(formDataSubmissionResultXML), "Ok"); } else { logFormSubmissionId = objFormSubmissionFacade.LogFormSubmissionDetails(HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToString(), FormSubmissionXML, formDefinitionXMLString, HttpContext.Current.Request.Headers.ToString(), objFormSubmissionFacade.ConvertToString(formDataSubmissionResultXML), "Error"); } } } catch (Exception ex) { if (utility.getParameter("ActivateFormSubmissionLog").ToString().ToLower() == "on") logFormSubmissionId = objFormSubmissionFacade.LogFormSubmissionDetails(HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToString(), FormSubmissionXML, formDefinitionXMLString, HttpContext.Current.Request.Headers.ToString(), objFormSubmissionFacade.ConvertToString(formDataSubmissionResultXML), "Error"); ErrorHandling.Application_Error(ex, String.Empty, "SubmitFormData", logFormSubmissionId, String.Empty); throw ex; } return objFormSubmissionFacade.ConvertToString(formDataSubmissionResultXML); }
private static FormClosureDefinition LoadClosureDefinition(string qid) { FormClosureDefinition closureDefinition = new FormClosureDefinition(); if (!string.IsNullOrEmpty(qid)) { try { Hashtable hParams = new Hashtable(); hParams.Add("questionnaire_id", qid); DataTable closurePageData = DB.execProc("select_questionnaire_closurepage", hParams); closureDefinition.ID = qid; closureDefinition.Title = closurePageData.Rows[0]["qid_title"].ToString(); closureDefinition.CC = closurePageData.Rows[0]["country_FK"].ToString(); closureDefinition.LC = closurePageData.Rows[0]["language_FK"].ToString(); status = QuestionnaireFacade.GetStatus(Convert.ToInt32(qid), ViewType.Undefined); switch (status) { case QuestionnaireStatus.Expired: closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForExpired; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForExpired; break; case QuestionnaireStatus.Inactive: closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForNotYetPublished; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForNotYetPublished; break; case QuestionnaireStatus.Offline: closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForMaintenance; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForMaintenance; break; case QuestionnaireStatus.Active: closureDefinition.ClosurePage = FClosureFacade.LoadClosureConfigurationSection(qid, closurePageData.Rows[0]); closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForLive; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForLive; break; case QuestionnaireStatus.NotFound: closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForNotExist; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForNotExist; break; } } catch (Exception ex) { closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForNotExist; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForNotExist; } } else { closureDefinition.LifeCycleStatus = Constants.FormLifeCycleStatusForNotExist; closureDefinition.LifeCycleStatusID = Constants.FormLifeCycleStatusIDForNotExist; } return closureDefinition; }
public QuestionnaireStatus GetQuestionStatus(int QuestionnaireID) { QuestionnaireStatus QuestionStatus = new QuestionnaireStatus(); QuestionStatus = QuestionnaireFacade.GetStatus(QuestionnaireID, ViewType.Undefined); return QuestionStatus; }