Exemple #1
0
        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));
        }
Exemple #2
0
        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"));
        }
Exemple #3
0
        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);
        }