public async Task <IActionResult> Answer(int id) { if (id <= 0) { return(RedirectToAction("Index", "Home")); } var survey = await _surveyService.GetSurveyByIdAsync(id); if (survey == null) { RedirectToAction("Index", "Home"); } var surveyModel = new SurveyViewModel() { Id = survey.Id, Title = survey.Title, CreatedAt = survey.CreatedAt, UpdatedAt = survey.UpdatedAt, Questions = survey.Questions, FilledSurveys = survey.FilledSurveys }; var filledSurveyModel = new FilledSurveyViewModel() { Survey = survey }; var tupleModel = new Tuple <SurveyViewModel, FilledSurveyViewModel>(surveyModel, filledSurveyModel); return(View(tupleModel)); }
public async Task <IActionResult> AnswerPost(FilledSurveyViewModel model) { if (!ModelState.IsValid) { string messages = string.Join("; ", ModelState.Values .SelectMany(x => x.Errors) .Select(x => x.ErrorMessage)); return(RedirectToAction("Answer")); } var isEmailUsed = await _surveyService.isEmailAnsweredSurvey(model.Email, model.SurveyId); if (isEmailUsed) { return(RedirectToAction("Answer")); // TODO: implement an error structure } var isSuccessful = await _surveyService.CreateFilledSurveyAsync(model); if (!isSuccessful) { return(RedirectToAction("Answer")); } return(RedirectToAction("Index", "Home")); }
public async Task <bool> CreateFilledSurveyAsync(FilledSurveyViewModel model) { var survey = await GetSurveyByIdAsync(model.SurveyId); var filledSurvey = new FilledSurvey { CreatedAt = DateTime.Now, Survey = survey, Email = model.Email, SurveyId = model.SurveyId, FilledSurveyOptions = model.FilledSurveyOptions }; _context.FilledSurveys.Add(filledSurvey); var saveResult = await _context.SaveChangesAsync(); return(saveResult > 1); }