public async Task <IActionResult> Edit(Guid id, [Bind("Id,UID,QID,Answer")] SurveyAnswerModel surveyAnswerModel) { if (id != surveyAnswerModel.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(surveyAnswerModel); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SurveyAnswerModelExists(surveyAnswerModel.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(surveyAnswerModel)); }
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 void TestSurveyAnswerDTO() { SurveyAnswerModel objSurveyAnswerModel = new SurveyAnswerModel(); SurveyAnswerDTO objSurveyAnswerDTO = new SurveyAnswerDTO(); int numberOfPublicPropertiesofSurveyAnswerDTO = objSurveyAnswerDTO.GetType().GetProperties().Count(); int numberOfPublicPropertiesofSurveyAnswerModel = objSurveyAnswerModel.GetType().GetProperties().Count(); Assert.AreEqual(numberOfPublicPropertiesofSurveyAnswerModel, SurveyAnswerModelPropertyCount, "SurveyAnswerModel properties has been changed"); Assert.AreEqual(numberOfPublicPropertiesofSurveyAnswerDTO, SurveyAnswerDTOPropertyCount, "SurveyAnswerDTO properties has been changed"); }
public ActionResult Index(string surveyId, SurveyAnswerModel surveyAnswerModel) { try { bool isMobileDevice = this.Request.Browser.IsMobileDevice; if (isMobileDevice == false) { isMobileDevice = Epi.Cloud.MVC.Utility.SurveyHelper.IsMobileDevice(this.Request.UserAgent.ToString()); } FormsAuthentication.SetAuthCookie("BeginSurvey", false); Guid responseId = Guid.NewGuid(); var responseContext = InitializeResponseContext(formId: surveyId, responseId: responseId.ToString()); SurveyAnswerDTO surveyAnswer = _isurveyFacade.CreateSurveyAnswer(responseContext); SurveyInfoModel surveyInfoModel = GetSurveyInfo(surveyId); MvcDynamicForms.Form form = _isurveyFacade.GetSurveyFormData(surveyId, 1, surveyAnswer, isMobileDevice); List <string> requiredFields = null; foreach (var field in surveyInfoModel.GetFieldDigests(surveyId)) { bool isRequired = field.IsRequired; if (isRequired) { // if this is the first new required field then split the existing required CSV into a true list. requiredFields = requiredFields ?? new List <string>(form.RequiredFieldsList.Split(',')); if (!requiredFields.Contains(field.FieldName)) { requiredFields.Add(field.FieldName.ToLower()); } } } // if we processed at least 1 reqired field then join the required field list into a CSV list if (requiredFields != null) { form.RequiredFieldsList = string.Join(",", requiredFields); } _isurveyFacade.UpdateSurveyResponse(surveyInfoModel, surveyAnswer.ResponseId, form, surveyAnswer, false, false, 1, responseContext.UserOrgId, responseContext.UserId, null); return(RedirectToRoute(new { Controller = "Survey", Action = "Index", responseId = responseId, PageNumber = 1 })); } catch (Exception ex) { Epi.Web.Utility.ExceptionMessage.SendLogMessage(ex, this.HttpContext); return(View(ViewActions.Exception)); } }
/// <summary> /// Maps SurveyInfo Model to SurveyInfo DTO. /// </summary> /// <param name="customer"></param> /// <returns></returns> public static SurveyAnswerDTO ToSurveyAnswerDTO(this SurveyAnswerModel surveyAnswerModel) { return(new SurveyAnswerDTO { ResponseId = surveyAnswerModel.ResponseId, SurveyId = surveyAnswerModel.SurveyId, DateUpdated = surveyAnswerModel.DateUpdated, DateCompleted = surveyAnswerModel.DateCompleted, Status = surveyAnswerModel.Status, ParentResponseId = surveyAnswerModel.ParentResponseId, }); }
public async Task <IActionResult> Create([Bind("Id,UID,QID,Answer")] SurveyAnswerModel surveyAnswerModel) { if (ModelState.IsValid) { surveyAnswerModel.Id = Guid.NewGuid(); _context.Add(surveyAnswerModel); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(surveyAnswerModel)); }
/// <summary> /// Handle HTTPPOST request coming in from the client after successful Authentication /// </summary> /// <param name="request"></param> /// <returns>HTTPRespose code with succee/failure</returns> public HttpResponseMessage PostSurveyAnswer(HttpRequestMessage request) { Dictionary <string, string> keyvalupair = new Dictionary <string, string>(); var value = request.Content.ReadAsStringAsync().Result; var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; try { keyvalupair = JsonConvert.DeserializeObject <Dictionary <string, string> >(value, settings); } catch (Exception ex) { var responseexception = Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, ex.Message.ToString());//415 Unsupported media type The endpoint does not support the format of the request body. return(responseexception); } string responseId; SurveyAnswerModel surveyanswerModel = new SurveyAnswerModel(); surveyanswerModel.SurveyId = _isurveyAnswerRepository.SurveyId; surveyanswerModel.OrgKey = _isurveyAnswerRepository.OrgKey; surveyanswerModel.PublisherKey = _isurveyAnswerRepository.PublisherKey; surveyanswerModel.SurveyQuestionAnswerListField = keyvalupair; var item = keyvalupair.Where(x => x.Key.ToLower() == "responseid" || x.Key.ToLower() == "id").FirstOrDefault(); // if (keyvalupair.TryGetValue("ResponseId", out ResponseId)) if (item.Value != null) { responseId = item.Value; surveyanswerModel.SurveyQuestionAnswerListField = keyvalupair; var Result = _isurveyAnswerRepository.SetSurveyAnswer(surveyanswerModel); if (Result.SurveyResponseID != null) { var response = Request.CreateResponse <PreFilledAnswerResponse>(System.Net.HttpStatusCode.Created, Result);//201 Created Success with response body. string uri = Url.Link("DefaultApi", new { id = Result.SurveyResponseID }); response.Headers.Location = new Uri(uri); return(response); } else { var response = Request.CreateResponse(HttpStatusCode.Forbidden, "Response not generated");//The requested operation is not permitted for the user. This error can also be caused by ACL failures, or business rule or data policy constraints. return(response); } } else { var response = Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, "Response not generated");//415 Unsupported media type The endpoint does not support the format of the request body. return(response); } }
/// <summary> /// Inserts SurveyResponse /// </summary> /// <param name="SurveyAnswerModel"></param> /// <returns>response </returns> public PreFilledAnswerResponse SetSurveyAnswer(SurveyAnswerModel request) { PreFilledAnswerResponse response; SurveyControlsResponse SurveyControlsResponse = new SurveyControlsResponse(); SurveyControlsRequest surveyControlsRequest = new SurveyControlsRequest(); surveyControlsRequest.SurveyId = request.SurveyId.ToString(); try { Interfaces.DataInterfaces.ISurveyResponseDao SurveyResponseDao = new EntitySurveyResponseDao(); BLL.SurveyResponse Implementation = new BLL.SurveyResponse(SurveyResponseDao); PreFilledAnswerRequest prefilledanswerRequest = new PreFilledAnswerRequest(); Dictionary <string, string> Values = new Dictionary <string, string>(); prefilledanswerRequest.AnswerInfo.UserPublishKey = request.PublisherKey; prefilledanswerRequest.AnswerInfo.OrganizationKey = request.OrgKey; prefilledanswerRequest.AnswerInfo.SurveyId = request.SurveyId; prefilledanswerRequest.AnswerInfo.UserPublishKey = request.PublisherKey; List <SurveyInfoBO> SurveyBOList = GetSurveyInfo(prefilledanswerRequest); GetRootFormId(prefilledanswerRequest); prefilledanswerRequest.AnswerInfo.SurveyId = request.SurveyId; SurveyControlsResponse = GetSurveyControlsList(surveyControlsRequest); Dictionary <string, string> FilteredAnswerList = new Dictionary <string, string>(); var radiolist = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "GroupBoxRadioList"); FilteredAnswerList = ProcessModforRadioControls(radiolist, request.SurveyQuestionAnswerListField); var checkboxLsit = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "CheckBox"); FilteredAnswerList = ProcessValforCheckBoxControls(checkboxLsit, FilteredAnswerList); var yesNoList = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "YesNo"); FilteredAnswerList = ProcessValforYesNoControls(yesNoList, FilteredAnswerList); var legalvalList = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "LegalValues"); FilteredAnswerList = ProcessValforLegalControls(legalvalList, FilteredAnswerList); foreach (KeyValuePair <string, string> entry in FilteredAnswerList) { Values.Add(entry.Key, entry.Value); } prefilledanswerRequest.AnswerInfo.SurveyQuestionAnswerList = Values; response = Implementation.SetSurveyAnswer(prefilledanswerRequest); return(response); } catch (Exception ex) { PassCodeDTO DTOList = new PassCodeDTO(); response = new PreFilledAnswerResponse(DTOList); if (response.ErrorMessageList != null) { response.ErrorMessageList.Add("Failed", "Failed to insert Response"); } response.Status = ((BLL.SurveyResponse.Message) 1).ToString(); return(response); } }
/// <summary> /// Handle HTTPDELETE request coming in from the client after successful Authentication /// </summary> /// <param name="request"></param> /// <returns>HTTPRespose code with succee/failure</returns> public HttpResponseMessage Delete(HttpRequestMessage request) { Dictionary <string, string> keyvalupair = new Dictionary <string, string>(); var value = request.Content.ReadAsStringAsync().Result; var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; try { keyvalupair = JsonConvert.DeserializeObject <Dictionary <string, string> >(value, settings); } catch (Exception ex) { var response = Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, ex.Message.ToString());//415 Unsupported media type The endpoint does not support the format of the request body. return(response); } string responseId; SurveyAnswerModel surveyanswerModel = new SurveyAnswerModel(); surveyanswerModel.SurveyId = _isurveyAnswerRepository.SurveyId; surveyanswerModel.OrgKey = _isurveyAnswerRepository.OrgKey; surveyanswerModel.PublisherKey = _isurveyAnswerRepository.PublisherKey; var item = keyvalupair.Where(x => x.Key.ToLower() == "responseid" || x.Key.ToLower() == "id").FirstOrDefault(); // if (keyvalupair.TryGetValue("ResponseId", out ResponseId)) if (item.Value != null) { responseId = item.Value; try { _isurveyAnswerRepository.Remove(responseId); } catch (Exception ex) { var exresponse = Request.CreateResponse(HttpStatusCode.Forbidden, "Response does not exist");//The request has not succeeded. The information returned with the response is dependent on the method used in the request. return(exresponse); } var response = Request.CreateResponse(HttpStatusCode.OK, "Response Deleted.");//The request has succeeded. The information returned with the response is dependent on the method used in the request. return(response); } else { var response = Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, "Response not generated");//415 Unsupported media type The endpoint does not support the format of the request body. return(response); } }
public virtual ActionResult SaveAnswer(string surveyId, string answer, string email, string searchResult, string storeId) { if (_sessionContext.CurrentUser == null && string.IsNullOrEmpty(email)) { return(JsonSuccess(false, JsonRequestBehavior.AllowGet)); } var userId = Guid.Empty; if (_sessionContext.CurrentUser != null) { userId = _sessionContext.CurrentUser.UserId; email = _sessionContext.CurrentUser.Username; } var answerModel = new SurveyAnswerModel { SurveyId = new Guid(surveyId), UserId = userId, UserName = email, Answers = answer, SearchResult = searchResult, CreatedBy = email }; var result = _surveyApi.SaveAnswers(answerModel); return(JsonSuccess(true, JsonRequestBehavior.AllowGet)); }
public static SurveyAnswerModel ToSurveyAnswerModel(this SurveyAnswerDTO surveyAnswerDTO, string responseId) { SurveyAnswerModel surveyAnswerModel = ((IResponseContext)surveyAnswerDTO).ToSurveyAnswerModel(); if (responseId == null || responseId == surveyAnswerDTO.ResponseDetail.ResponseId) { surveyAnswerModel.SurveyId = surveyAnswerDTO.SurveyId; surveyAnswerModel.DateUpdated = surveyAnswerDTO.DateUpdated; surveyAnswerModel.DateCompleted = surveyAnswerDTO.DateCompleted; surveyAnswerModel.Status = surveyAnswerDTO.Status; } else { var childResponseDetail = surveyAnswerDTO.ResponseDetail.FindFormResponseDetail(responseId); surveyAnswerModel.SurveyId = childResponseDetail.FormId; surveyAnswerModel.DateUpdated = childResponseDetail.LastSaveTime; surveyAnswerModel.DateCompleted = childResponseDetail.LastSaveTime; surveyAnswerModel.Status = childResponseDetail.RecStatus; } return(surveyAnswerModel); }
/// <summary> /// Updates SurveyResponse /// </summary> /// <param name="SurveyAnswerModel",name="ResponseId"></param> /// <returns>response </returns> public PreFilledAnswerResponse Update(SurveyAnswerModel request, string ResponseId) { PreFilledAnswerResponse response; SurveyControlsResponse SurveyControlsResponse = new SurveyControlsResponse(); SurveyControlsRequest surveyControlsRequest = new SurveyControlsRequest(); surveyControlsRequest.SurveyId = request.SurveyId.ToString(); try { Interfaces.DataInterfaces.ISurveyResponseDao SurveyResponseDao = new EntitySurveyResponseDao(); BLL.SurveyResponse Implementation = new BLL.SurveyResponse(SurveyResponseDao); PreFilledAnswerRequest prefilledanswerRequest = new PreFilledAnswerRequest(); Dictionary <string, string> Values = new Dictionary <string, string>(); prefilledanswerRequest.AnswerInfo.UserPublishKey = request.PublisherKey; prefilledanswerRequest.AnswerInfo.OrganizationKey = request.OrgKey; prefilledanswerRequest.AnswerInfo.SurveyId = request.SurveyId; prefilledanswerRequest.AnswerInfo.UserPublishKey = request.PublisherKey; List <SurveyInfoBO> SurveyBOList = GetSurveyInfo(prefilledanswerRequest); GetRootFormId(prefilledanswerRequest); prefilledanswerRequest.AnswerInfo.SurveyId = request.SurveyId; SurveyControlsResponse = GetSurveyControlsList(surveyControlsRequest); Dictionary <string, string> FilteredAnswerList = new Dictionary <string, string>(); var radiolist = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "GroupBoxRadioList"); FilteredAnswerList = ProcessModforRadioControls(radiolist, request.SurveyQuestionAnswerListField); var checkboxLsit = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "CheckBox"); FilteredAnswerList = ProcessValforCheckBoxControls(checkboxLsit, FilteredAnswerList); var yesNoList = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "YesNo"); FilteredAnswerList = ProcessValforYesNoControls(yesNoList, FilteredAnswerList); var legalvalList = SurveyControlsResponse.SurveyControlList.Where(x => x.ControlType == "LegalValues"); FilteredAnswerList = ProcessValforLegalControls(legalvalList, FilteredAnswerList); var updatedtime = FilteredAnswerList.Where(x => x.Key.ToLower() == "_updatestamp").FirstOrDefault(); var Responsekey = FilteredAnswerList.Where(x => x.Key.ToLower() == "responseid" || x.Key.ToLower() == "id").FirstOrDefault().Key; var fkey = FilteredAnswerList.Where(x => x.Key.ToLower() == "fkey").FirstOrDefault(); foreach (KeyValuePair <string, string> entry in FilteredAnswerList) { Values.Add(entry.Key, entry.Value); } try { var survey = Implementation.GetSurveyResponseById(new List <string> { ResponseId }, request.PublisherKey); } catch (Exception ex) { prefilledanswerRequest.AnswerInfo.SurveyQuestionAnswerList = Values; response = Implementation.SetSurveyAnswer(prefilledanswerRequest); response.Status = "Created"; return(response); } Values.Remove(Responsekey); if (updatedtime.Key != null) { Values.Remove(updatedtime.Key); } if (fkey.Key != null) { Values.Remove(fkey.Key); } prefilledanswerRequest.AnswerInfo.SurveyQuestionAnswerList = Values; Dictionary <string, string> ErrorMessageList = new Dictionary <string, string>(); string Xml = Implementation.CreateResponseXml(prefilledanswerRequest, SurveyBOList); // ErrorMessageList = Implementation.ValidateResponse(SurveyBOList, prefilledanswerRequest); // if (fkey.Key != null) { try { var survey = Implementation.GetSurveyResponseById(new List <string> { fkey.Value }, request.PublisherKey); } catch (Exception ex) { SurveyResponseBO surveyresponsebO = new SurveyResponseBO(); surveyresponsebO.SurveyId = SurveyBOList[0].ParentId; surveyresponsebO.ResponseId = fkey.Value.ToString(); surveyresponsebO.XML = " "; surveyresponsebO.Status = 3; surveyresponsebO.RecordSourceId = (int)ValidationRecordSourceId.MA; surveyresponsebO.DateUpdated = DateTime.Now; surveyresponsebO.DateCreated = surveyresponsebO.DateUpdated; surveyresponsebO.DateCompleted = surveyresponsebO.DateUpdated; surveyresponsebO = Implementation.InsertSurveyResponse(surveyresponsebO); } } if (ErrorMessageList.Count() > 0) { response = new PreFilledAnswerResponse(); response.ErrorMessageList = ErrorMessageList; response.ErrorMessageList.Add("SurveyId", request.SurveyId.ToString()); response.ErrorMessageList.Add("ResponseId", ResponseId); response.Status = ((Message)1).ToString(); Implementation.InsertErrorLog(response.ErrorMessageList); } SurveyResponseBO surveyresponseBO = new SurveyResponseBO(); SurveyResponseBO SurveyResponse = new SurveyResponseBO(); UserAuthenticationRequestBO UserAuthenticationRequestBO = new UserAuthenticationRequestBO(); surveyresponseBO.SurveyId = request.SurveyId.ToString(); surveyresponseBO.ResponseId = ResponseId.ToString(); surveyresponseBO.XML = Xml; System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); if (updatedtime.Key != null) { surveyresponseBO.DateUpdated = dateTime.AddMilliseconds(Convert.ToDouble(updatedtime.Value.ToString())).ToLocalTime(); surveyresponseBO.DateCompleted = dateTime.AddMilliseconds(Convert.ToDouble(updatedtime.Value.ToString())).ToLocalTime(); } else { surveyresponseBO.DateUpdated = DateTime.Now; surveyresponseBO.DateCompleted = DateTime.Now; } if (fkey.Key != null) { surveyresponseBO.RelateParentId = fkey.Value; } surveyresponseBO.Status = 3; SurveyResponse = Implementation.UpdateSurveyResponse(surveyresponseBO); UserAuthenticationRequestBO = Web.Common.ObjectMapping.Mapper.ToBusinessObject(ResponseId); Implementation.SavePassCode(UserAuthenticationRequestBO); //return Response string ResponseUrl = ConfigurationManager.AppSettings["ResponseURL"]; response = new PreFilledAnswerResponse(Web.Common.ObjectMapping.Mapper.ToDataTransferObjects(UserAuthenticationRequestBO)); response.SurveyResponseUrl = ResponseUrl + UserAuthenticationRequestBO.ResponseId; response.Status = ((Message)2).ToString(); return(response); } catch (Exception ex) { PassCodeDTO DTOList = new PassCodeDTO(); response = new PreFilledAnswerResponse(DTOList); if (response.ErrorMessageList != null) { response.ErrorMessageList.Add("Failed", "Failed to insert Response"); } response.Status = ((BLL.SurveyResponse.Message) 1).ToString(); return(response); } }
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()); } if (!string.IsNullOrEmpty(this.Request.Form["is_print_action"]) && this.Request.Form["is_print_action"].ToString().Equals("true", StringComparison.OrdinalIgnoreCase)) { string ResponseId = this.Request.Form["ResponseId"]; ActionResult actionResult = RedirectToAction("Index", "Print", new { responseId = ResponseId, FromFinal = true }); return(actionResult); } //FormsAuthentication.SignOut(); FormsAuthentication.SetAuthCookie("BeginSurvey", false); Guid responseId = Guid.NewGuid(); Epi.Web.Common.DTO.SurveyAnswerDTO SurveyAnswer = _isurveyFacade.CreateSurveyAnswer(surveyId, responseId.ToString()); // Pass Code Logic start Epi.Web.Common.Message.UserAuthenticationResponse AuthenticationResponse = _isurveyFacade.GetAuthenticationResponse(responseId.ToString()); string strPassCode = Epi.Web.MVC.Utility.SurveyHelper.GetPassCode(); if (string.IsNullOrEmpty(AuthenticationResponse.PassCode)) { _isurveyFacade.UpdatePassCode(responseId.ToString(), TempData["PassCode"].ToString()); } 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(); } } } } } SurveyAnswer.XML = CreateResponseDocument(xdoc, SurveyAnswer.XML); _isurveyFacade.UpdateSurveyResponse(surveyInfoModel, SurveyAnswer.ResponseId, form, SurveyAnswer, false, false, 1); 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 bool Update(SurveyAnswerModel model) { return(_repository.Update(model)); }
public SurveyAnswerModel Create(SurveyAnswerModel model) { return(_repository.Create(model)); }
public async Task <Result <UserSurveyModel> > Answer(SurveyAnswerModel model) => await _userSurveyBiz.Answer(model);
public ResponseModel <BoolResponse> SaveAnswers(SurveyAnswerModel surveyAnswer) { return(CallApi <BoolResponse>(string.Format(ApiUrls.SurveySaveAnswer), JsonConvert.SerializeObject(surveyAnswer), Method.POST, apiBaseUrl: ConfigKeys.MktApiBaseUrl, isAuthenticationEnabled: true)); }
public Task <Result <UserSurveyModel> > Answer(SurveyAnswerModel model) => Result <UserSurveyModel> .TryAsync(async() => { var results = await _repository.ListAsync <Answer>(a => model.AnswerIds.Contains(a.Id), a => a.Question.Survey.Question.Select(q => q.Answer.Select(aa => aa.Action)), a => a.Question.MustAnswered, a => a.Question.Survey.Question.Select(q => q.MustAnswered), a => a.Question.Survey.Question.Select(q => q.MustAnswered) , a => a.Action); if (!results.Success || results.Data == null || !results.Data.Any() || results.Data.Count != model.AnswerIds.Count) { return(Result <UserSurveyModel> .Failed(Error.WithData(1000, new[] { "answer not found" }))); } if (results.Data.GroupBy(a => a.Question).ToList().Count() != 1) { return(Result <UserSurveyModel> .Failed(Error.WithData(1000, new[] { "answers are not from one question" }))); } var answers = results.Data; var resultUserSurvey = await _repository.FirstOrDefaultAsync <UserSurvey>(us => us.SurveyId == answers.FirstOrDefault().Question.Survey.Id&& us.UserId == generalDataService.User.Id, us => us.UserAnswer.Select(ua => ua.Answer.Question.Survey.Question.Select(q => q.Answer)), us => us.Survey.Question.Select(q => q.MustAnswered), us => us.Survey.Question.Select(question => question.Answer), us => us.UserDependentSurvey); // var resultUserSurvey = await _repository.FirstOrDefaultAsync<UserSurvey>(us => // us.SurveyId == answers.FirstOrDefault().Question.Survey.Id && us.UserId == generalDataService.User.Id, // us => us.UserAnswer); UserSurvey userSurvey = null; if (resultUserSurvey.Data == null) // first answer { userSurvey = new UserSurvey { Id = Guid.NewGuid(), UserId = generalDataService.User.Id, Survey = answers.FirstOrDefault().Question.Survey, IsFinsihed = answers.FirstOrDefault().Question.Survey.Question.Count == 1, UserAnswer = answers.Select(answer => new UserAnswer { Id = Guid.NewGuid(), Answer = answer, Text = model.UserAnswer }).ToList() }; _repository.Add(userSurvey); } else // not the first answer { userSurvey = resultUserSurvey.Data; var questionsAnswered = userSurvey.UserAnswer.Select(ua => ua.Answer.Question).ToList(); if (questionsAnswered.Select(qa => qa.Id).Contains(answers.FirstOrDefault().Question.Id) ) // change answer { var previousAnswers = userSurvey.UserAnswer.Where(ua => answers.Any(aa => aa.Question.Id == ua.Answer.Question.Id)).ToList(); previousAnswers.AddRange(userSurvey.UserAnswer.Where(ua => ua.Answer.Question.Number > answers.FirstOrDefault().Question.Number)); var actions = previousAnswers.Where(ua => ua.Answer.Question.Number > answers.FirstOrDefault().Question.Number).ToList() .SelectMany(ua => ua.Answer.Action); if (actions.Any(a => a.Type == (int)ActionType.AddDependent)) { if (previousAnswers.Any(ua => ua.Answer.Question.Text.ToLower().Contains("spouse"))) { _repository.RemoveRange(userSurvey.UserDependentSurvey); if (userSurvey.UserAssessmentSurvey != null && userSurvey.UserAssessmentSurvey.Any() && userSurvey.UserAssessmentSurvey .Select(ua => ua.UserAssessmentBlob).Any()) { _repository.RemoveRange(userSurvey.UserAssessmentSurvey .Select(ua => ua.UserAssessmentBlob).ToList()); } if (userSurvey.UserAssessmentSurvey != null && userSurvey.UserAssessmentSurvey.Any()) { _repository.RemoveRange(userSurvey.UserAssessmentSurvey); } } else { var allDependents = await _membershipServiceApi.MembershipLinkedUserApiService.ListByUser( new MembershipService.ApiClient.Models.BaseModel { Id = generalDataService.User.Id }); var dependentIds = allDependents.Data.Where(ad => ad.RelationType.ToLower() != "spouse") .ToList() .Select(ad => ad.FirstUser.Id).ToList(); _repository.RemoveRange( userSurvey.UserDependentSurvey.Where(ud => dependentIds.Contains(ud.UserId)) .ToList()); } } if (actions.Any(a => a.Type == (int)ActionType.AddRelative)) { _repository.RemoveRange(userSurvey.UserRelativeSurvey); } previousAnswers.ForEach(previousAnswer => userSurvey.UserAnswer.Remove(previousAnswer)); _repository.RemoveRange(previousAnswers); } answers.ToList().ForEach( answer => userSurvey.UserAnswer.Add(new UserAnswer { Id = Guid.NewGuid(), Answer = answer, Text = model.UserAnswer })); } QuestionCoreModel nextQuestionCoreModel = CalculateNextQuestion(answers.FirstOrDefault(), userSurvey); var userResult = await _membershipServiceApi.AuthAuthApiService.Setting( new MembershipService.ApiClient.Models.BaseModel { Id = generalDataService.User.Id }); var profile = await _membershipServiceApi.AuthAuthApiService.Profile( new MembershipService.ApiClient.Models.BaseModel { Id = generalDataService.User.Id }); var isFinished = SurveyIsFinished(userSurvey).Data; var makeAppointment = false; var userCartUpdated = false; Guid?invoiceId = null; if (isFinished) // Perform actions after survey is finished { var result = (await PerformActions(userSurvey)).Data; invoiceId = result.Item1; makeAppointment = result.Item2; await _messageBiz.Add(new CreateMessageModel { Title = "Survey Finished", Body = "you have successfully finished your survey , we will check and contact you about the results as soon as possible ", Priority = MessagePriority.High }); _coreSmtpClient.SendSurveySubmittedNotif(profile.Data.Email, profile.Data.Mobile, profile.Data.Username, DateTime.Now.ToString("F")); // _coreSmtpClient.Send(userResult.Data.Email, // $"Dear {userResult.Data.Firstname} {userResult.Data.Lastname} ,\n you have finished our survey , we will check and contact you about the results as soon as possible. \n Best Regards", // "Finished Survey "); // _smsHttpClient.Send(userResult.Data.Mobile, // $"Dear {userResult.Data.Firstname} {userResult.Data.Lastname} , You have finished doing a survey, we will check and contact you about the results as soon as possible. \n Best Regards "); } userSurvey.IsFinsihed = isFinished; await _repository.CommitAsync(); return(Result <UserSurveyModel> .Successful(new UserSurveyModel { NextQuestion = nextQuestionCoreModel, SurveyId = answers.FirstOrDefault().Question.Survey.Id, MakeAnAppointment = makeAppointment, UserCartUpdated = userCartUpdated, SurveyName = answers.FirstOrDefault().Question.Survey.Name, IsFinished = isFinished, IsStarted = true, QuestionCount = userSurvey.Survey.Question.Count, InvoiceId = invoiceId, User = userResult.Data })); });