// GET: Specialist public ActionResult Index(string surveyCode) { if (!string.IsNullOrEmpty(surveyCode)) { var surveyDto = _serviceSurvey.GetBySurveyCode(surveyCode); if (surveyDto == null) { ViewBag.Message = Messages.GetMessage(Messages.MessageType.NotExist); return View("../Message/Message"); } if (surveyDto != null && surveyDto.SurveyType != Core.Common.SurveyType.Specialist) { return RedirectToAction("Index", "Survey", new { surveyCode = surveyCode }); } if (surveyDto != null && surveyDto.IsComplete) { ViewBag.Message = Messages.GetMessage(Messages.MessageType.Completed, surveyDto.ProviderLastName, surveyDto.FacilityName); return View("../Message/Message"); } if (surveyDto != null && surveyDto.IsExpired) { ViewBag.Message = Messages.GetMessage(Messages.MessageType.Expired, surveyDto.ProviderLastName, surveyDto.FacilityName); return View("../Message/Message"); } if (surveyDto != null) { var questionsDto = _serviceQuestion.GetBySurveyType(surveyDto.SurveyType); SpecialistSurvey specialistSurvey = new SpecialistSurvey(surveyDto); var props = specialistSurvey.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList(); props.ForEach(prop => { if (prop.PropertyType == typeof(Question)) { var attr = prop.GetCustomAttribute<QuestionKeyAttribute>(); var question = new Question(); if (questionsDto != null && questionsDto.Count > 0) { var questionDto = questionsDto.First(d => d.Key.Equals(attr.QuestionKey)); if (questionDto != null) { question.QuestionText = questionDto.QuestionText; } } prop.SetValue(specialistSurvey, question); } }); return View(specialistSurvey); } } return null;//View("../Message/Message"); }
public ActionResult Index(SpecialistSurvey specialistSurvey) { if (ModelState.IsValid) { var surveyDto = _serviceSurvey.GetBySurveyCode(specialistSurvey.Survey.SurveyCode); bool isEscalationReport = false; if (surveyDto != null && !surveyDto.IsComplete && !surveyDto.IsExpired) { List<AnswerDto> answerList = new List<AnswerDto>(); var questionsDto = _serviceQuestion.GetBySurveyType(surveyDto.SurveyType); var props = specialistSurvey.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList(); var surveyAnswerDto = new SurveyAnswerDto() { SurveyId = specialistSurvey.Survey.Id, RespondDate = DateTime.Today }; surveyAnswerDto = _serviceSurveyAnswer.Insert(surveyAnswerDto); props.ForEach(prop => { if (prop.PropertyType == typeof(Question)) { var attr = prop.GetCustomAttribute<QuestionKeyAttribute>(); var question = questionsDto.First(d => d.Key.Equals(attr.QuestionKey)); var answer = new AnswerDto() { SurveyAnswerId = surveyAnswerDto.Id, QuestionId = question.Id, ResponseText = ((Question)prop.GetValue(specialistSurvey, null)).Response, Note = ((Question)prop.GetValue(specialistSurvey, null)).Note }; answerList.Add(answer); //To know if Disagre or Strongly Disagree was selected as an answer, for send an email if ((answer.ResponseText != null) && QuestionKey.SpecialistSurvey.ContainsKey(question.Key)) { if (answer.ResponseText.ToLower().Equals("disagree") || answer.ResponseText.ToLower().Equals("strongly disagree")) isEscalationReport = true; } } }); //Add answer _serviceAnswer.Insert(answerList); _serviceSurvey.UpdateComplete(specialistSurvey.Survey.Id); ViewBag.Message = Messages.GetMessage(Messages.MessageType.Succefully); //Send Email To Performance Management if (isEscalationReport) { HospitalDetailsDto hospitalDetails = _serviceSurvey.GetHospitalDetailsByName(specialistSurvey.Survey.FacilityName); byte[] fileToSend = GetDataToExportSpecialistSurvey(specialistSurvey, hospitalDetails); _serviceEmailSender.SendEmail(fileToSend, ConfigurationManager.AppSettings["PerformanceManagementEmail"].ToString()); } return View("../Message/Message"); } if (surveyDto != null && surveyDto.IsComplete) { ViewBag.Message = Messages.GetMessage(Messages.MessageType.Completed, surveyDto.ProviderLastName, surveyDto.FacilityName); return View("../Message/Message"); } } return View(specialistSurvey); }