public List <SurveyResultViewModel> GetTopRankedParks() { List <SurveyResultViewModel> output = new List <SurveyResultViewModel>(); using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(SQL_GetTopRankedParks, conn); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { SurveyResultViewModel srvm = new SurveyResultViewModel(); srvm.ParkCode = Convert.ToString(reader["parkCode"]); srvm.ParkName = Convert.ToString(reader["parkName"]); srvm.VoteCount = Convert.ToInt32(reader["numVotes"]); output.Add(srvm); } } return(output); }
public IActionResult Survey() { SurveyResultViewModel SurveyVM = new SurveyResultViewModel(); SurveyVM.Parks = _parkDAO.GetParks(); return(GetAuthenticatedView("Survey", SurveyVM)); }
public IHttpActionResult SaveFile(int id) { Survey survey = surveyService.GetWithResult(id); if (survey == null) { return(NotFound()); } survey.Questions.ToList().ForEach(q => { q.QuestionAnswers = q.QuestionAnswers.OrderBy(qa => qa.OrdinalNumber).ToList(); }); var users = surveyService.UsersWhoFilledSurvey(survey.Users.Select(u => u.UserId).ToList()); SurveyResultViewModel surveyVM = AutoMapper.Mapper.Map <Survey, SurveyResultViewModel>(survey); this.SetSurveyResultVMValues(surveyVM, survey, users, 0, true); using (var xlPackage = new ExcelPackage()) { var ws = xlPackage.Workbook.Worksheets.Add("Anketa: " + survey.Name); CreateExcelFile createEF = new CreateExcelFile(surveyService); if (!survey.Anonymous) { createEF.CreateSurveyWorksheet(ws, surveyVM); } createEF.CreateQuestionsOnSurveyWorksheet(ws, surveyVM); surveyVM.Questions.ToList().ForEach(q => { createEF.CreateQuestionWorksheet(xlPackage, q, surveyVM, survey); }); users.ForEach(u => { var answers = surveyService.GetAnswersForUser(u.Id).ToList(); createEF.CreateUserWorksheet(xlPackage, u, survey, answers, users.IndexOf(u)); }); ExcelFiles obj = new ExcelFiles() { Bytes = xlPackage.GetAsByteArray(), SurveyId = survey.Id, CreationDate = DateTime.Now, Name = survey.Name + DateTime.Now.ToString() + ".xlsx" }; surveyService.AddExcel(obj); unitOfWork.Commit(); } return(Ok()); }
public IHttpActionResult GetSurveyWithResult(int id, string uuu) { int userId = 0; if (!int.TryParse(uuu, out userId)) { uuu = uuu.Replace("=", "+"); uuu = uuu.Replace("*", "/"); int.TryParse(StringCipher.Decrypt(uuu, "WebSurveying2017"), out userId); } var identity = (ClaimsIdentity)User.Identity; var claims = identity.Claims; var loggedUserId = int.Parse(claims.Where(c => c.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value); Survey survey = surveyService.GetWithResult(id); int resultForUser = 0; //if want result for specific user, logged user must be author of survey if (userId != 0) { if (loggedUserId != survey.UserId || !survey.Users.Select(u => u.UserId).Contains((int)userId)) { return(Unauthorized()); } resultForUser = (int)userId; } else { if (loggedUserId != survey.UserId && !survey.Users.Select(u => u.UserId).Contains(loggedUserId) || (survey.ResultAuthor && survey.UserId != loggedUserId)) { return(Unauthorized()); } resultForUser = loggedUserId; } //author - all //user - 1. Filled 2. !ResultAuthor 3. userId == loggedUserId if (survey == null) { return(NotFound()); } var users = surveyService.UsersWhoFilledSurvey(survey.Users.Select(u => u.UserId).ToList()); MapSurveyResultToSurveyResultViewModel myMapper = new MapSurveyResultToSurveyResultViewModel(surveyService); SurveyResultViewModel surveyVM = AutoMapper.Mapper.Map <Survey, SurveyResultViewModel>(survey); myMapper.SetSurveyResultVMValues(surveyVM, survey, users, resultForUser, false); // this.SetSurveyResultVMValues(surveyVM, survey, users, resultForUser, false); return(Ok(surveyVM)); }
public IActionResult Results() { Dictionary <string, int> surveyResults = dal.GetFavoriteParkBySurveys(); SurveyResultViewModel results = new SurveyResultViewModel() { Results = surveyResults, Parks = parkDal.GetAllParks() }; return(View(results)); }
public async Task <IActionResult> ThreadFeedbacks(string threadHash) { if (string.IsNullOrWhiteSpace(threadHash)) { return(NotFound("ThreadHash not supplied")); } var feedbacks = await _context.Feedbacks.Include(y => y.SurveyThread).Where(x => x.SurveyThread.ThreadHash == threadHash).ToListAsync(); var resultViewModel = new SurveyResultViewModel(feedbacks); return(View(resultViewModel)); }
/// <summary> /// Get the results of current submitted surveys with 1+ votes /// </summary> /// <returns>IList of SurveyResultViewModels in Descending Order</returns> public IList <SurveyResultViewModel> ParkRankings() { IList <SurveyResultViewModel> parks = new List <SurveyResultViewModel>(); using (SqlConnection connection = new SqlConnection(_connectionString)) { connection.Open(); SqlCommand command = new SqlCommand("SELECT park.parkCode, " + "park.parkName, " + "park.state, " + "park.inspirationalQuote, " + "park.inspirationalQuoteSource, " + "Count(*) As count " + "FROM park " + "JOIN survey_result ON survey_result.parkCode = park.parkCode " + "GROUP BY park.parkCode, " + "park.parkName, " + "park.state, " + "park.inspirationalQuote, " + "park.inspirationalQuoteSource " + "ORDER BY count DESC;", connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { SurveyResultViewModel park = new SurveyResultViewModel(); park.ParkCode = Convert.ToString(reader["parkCode"]); park.Name = Convert.ToString(reader["parkName"]); park.State = Convert.ToString(reader["state"]); park.InspirationalQuote = Convert.ToString(reader["inspirationalQuote"]); park.InspirationalQuoteSrc = Convert.ToString(reader["inspirationalQuoteSource"]); park.count = Convert.ToInt16(reader["count"]); parks.Add(park); } } return(parks); }
private void SetQuestionInSurveyWorksheetStyle(ExcelWorksheet ws, SurveyResultViewModel surveyVM) { int numbOfRows = 9; surveyVM.Questions.Where(q => q.AnswerType != AnswerType.Text).ToList().ForEach( q => { numbOfRows++; ws.Cells["B" + numbOfRows + ":B" + numbOfRows].Style.Font.Bold = true; ws.Cells["B" + numbOfRows + ":B" + numbOfRows].Style.Font.Size = 12; ws.Cells["C" + numbOfRows + ":C" + numbOfRows].Style.Font.Bold = true; ws.Cells["C" + numbOfRows + ":C" + numbOfRows].Style.Font.Size = 12; ws.Cells["D" + (numbOfRows + 1) + ":D" + (numbOfRows + q.QuestionAnswers.Count)].Style.Font.Bold = true; ws.Cells["D" + (numbOfRows + 1) + ":D" + (numbOfRows + q.QuestionAnswers.Count)].Style.Font.Size = 12; ws.Cells["F" + (numbOfRows + 1) + ":F" + (numbOfRows + q.QuestionAnswers.Count)].Style.Font.Color.SetColor(Color.CornflowerBlue); ws.Cells["G" + (numbOfRows + 1) + ":G" + (numbOfRows + q.QuestionAnswers.Count)].Style.Font.Color.SetColor(Color.CornflowerBlue); ws.Cells["H" + (numbOfRows + 1) + ":H" + (numbOfRows + q.QuestionAnswers.Count)].Style.Font.Color.SetColor(Color.CornflowerBlue); ws.Cells["F" + (numbOfRows + 1) + ":F" + (numbOfRows + q.QuestionAnswers.Count)].Style.Numberformat.Format = "0.00"; ws.Cells["G" + (numbOfRows + 1) + ":G" + (numbOfRows + q.QuestionAnswers.Count)].Style.Numberformat.Format = "0.00"; ws.Cells["H" + (numbOfRows + 1) + ":H" + (numbOfRows + q.QuestionAnswers.Count)].Style.Numberformat.Format = "0.00"; numbOfRows += q.QuestionAnswers.Count; ws.Cells["B" + numbOfRows + ":H" + numbOfRows].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; }); ws.Cells["B9:H9"].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells["B9:H9"].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells["B9:B" + numbOfRows].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells["H9:H" + numbOfRows].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells["B" + numbOfRows + ":H" + numbOfRows].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells["F9:H9"].Style.Font.Color.SetColor(Color.CornflowerBlue); ws.Cells[9, 2, numbOfRows, 8].Style.WrapText = true; ws.Cells["B9:H9"].Style.Font.Bold = true; ws.Cells["B9:H9"].Style.Font.Size = 12; }
public void CreateQuestionsOnSurveyWorksheet(ExcelWorksheet ws, SurveyResultViewModel surveyVM) { var i = 9; ws.SetValue(i, 2, "Redni broj pitanja"); ws.SetValue(i, 3, "Tekst pitanja"); ws.SetValue(i, 4, "Ponudjeni odgovori"); ws.SetValue(i, 5, "Broj korisnika koji su izabrali odgovor"); ws.SetValue(i, 6, "% u odnosu na broj korisnika koji su popunili anketu"); ws.SetValue(i, 7, "% u odnosu na broj korisnika koji su odgovorili na pitanje"); ws.SetValue(i, 8, "% u odnosu na broj odgovara na pitanje"); i++; surveyVM.Questions.Where(q => q.AnswerType != AnswerType.Text).ToList().ForEach(q => { ws.SetValue(i, 2, q.OrdinalNumber); ws.SetValue(i, 3, q.QuestionText); ws.SetValue(i, 6, surveyVM.NumbOfUsers); ws.SetValue(i, 7, q.NumbOfUsers); ws.SetValue(i, 8, q.NumbOfUA); i++; q.QuestionAnswers.ForEach(qa => { ws.SetValue(i, 4, qa.AnswerText); ws.SetValue(i, 5, qa.Count); ws.SetValue(i, 6, qa.Count * 100 / surveyVM.NumbOfUsers); ws.SetValue(i, 7, qa.Count * 100 / q.NumbOfUsers); ws.SetValue(i, 8, qa.Count * 100 / q.NumbOfUA); i++; }); }); this.SetQuestionInSurveyWorksheetStyle(ws, surveyVM); }
public void CreateSurveyWorksheet(ExcelWorksheet ws, SurveyResultViewModel surveyVM) { string[] secondRowValues = new string[] { "Manje od 18 godina", "%", "18 - 25", "%", "26 - 40", "%", "41 - 60", "%", "Vise od 60 godina", "%", "Svi godisnji uzrasti", "%" }; double[] thirdRowValues = new double[] { surveyVM.MaleUnder18, (double)surveyVM.MaleUnder18 * 100 / surveyVM.NumbOfUsers, surveyVM.Male18_25, (double)surveyVM.Male18_25 * 100 / surveyVM.NumbOfUsers, surveyVM.Male26_40, (double)surveyVM.Male26_40 * 100 / surveyVM.NumbOfUsers, surveyVM.Male41_60, (double)surveyVM.Male41_60 * 100 / surveyVM.NumbOfUsers, surveyVM.Male61, (double)surveyVM.Male61 * 100 / surveyVM.NumbOfUsers, surveyVM.MaleCount, (double)surveyVM.MaleCount * 100 / surveyVM.NumbOfUsers }; double[] fourthRowValues = new double[] { surveyVM.FemaleUnder18, (double)surveyVM.FemaleUnder18 * 100 / surveyVM.NumbOfUsers, surveyVM.Female18_25, (double)surveyVM.Female18_25 * 100 / surveyVM.NumbOfUsers, surveyVM.Female26_40, (double)surveyVM.Female26_40 * 100 / surveyVM.NumbOfUsers, surveyVM.Female41_60, (double)surveyVM.Female41_60 * 100 / surveyVM.NumbOfUsers, surveyVM.Female61, (double)surveyVM.Female61 * 100 / surveyVM.NumbOfUsers, surveyVM.FemaleCount, (double)surveyVM.FemaleCount * 100 / surveyVM.NumbOfUsers }; double[] fifthRowValues = new double[] { surveyVM.UsersUnder18Count, (double)surveyVM.UsersUnder18Count * 100 / surveyVM.NumbOfUsers, surveyVM.Users18_25Count, (double)surveyVM.Users18_25Count * 100 / surveyVM.NumbOfUsers, surveyVM.Users26_40Count, (double)surveyVM.Users26_40Count * 100 / surveyVM.NumbOfUsers, surveyVM.Users41_60Count, (double)surveyVM.Users41_60Count * 100 / surveyVM.NumbOfUsers, surveyVM.Users61Count, (double)surveyVM.Users61Count * 100 / surveyVM.NumbOfUsers, surveyVM.NumbOfUsers, (double)surveyVM.NumbOfUsers * 100 / surveyVM.NumbOfUsers }; ws.SetValue(2, 2, surveyVM.Name); ws.SetValue(4, 2, "Muskarci"); ws.SetValue(5, 2, "Zene"); ws.SetValue(6, 2, "Muskarci i zene"); for (int i = 3; i < secondRowValues.Count() + 3; i++) { ws.SetValue(3, i, secondRowValues[i - 3]); ws.SetValue(4, i, thirdRowValues[i - 3]); ws.SetValue(5, i, fourthRowValues[i - 3]); ws.SetValue(6, i, fifthRowValues[i - 3]); } this.SetSurveyStyle(ws); }
public void CreateQuestionWorksheet(ExcelPackage e, QuestionResultVM questionVM, SurveyResultViewModel surveyVM, Survey survey) { var ws = e.Workbook.Worksheets.Add((surveyVM.Questions.IndexOf(questionVM) + 1) + ". " + questionVM.QuestionText); //first row - question text var question = survey.Questions.Where(q => q.Id == questionVM.Id).FirstOrDefault(); if (questionVM.AnswerType == AnswerType.Text) { this.CreateForTextType(ws, survey, question); return; } ws.SetValue(2, 2, questionVM.QuestionText); var col = 4; //fill columns questionVM.QuestionAnswers.ForEach(qa => { var row = 3; // [2,3] ponudjen odgovor ws.SetValue(row, col, qa.AnswerText); var answer = question.QuestionAnswers.Where(an => an.Id == qa.Id).FirstOrDefault(); var users = answer.Users.Select(u => u.UserId); row++; //other questions if (survey.Questions.Where(q => q.AnswerType != AnswerType.Text).Count() > 1) { surveyVM.Questions.Where(q => q.Id != questionVM.Id && q.AnswerType != AnswerType.Text).ToList().ForEach(q => { var _question = survey.Questions.Where(_q => _q.Id == q.Id).FirstOrDefault(); //question text ws.SetValue(row, 2, q.QuestionText); row++; q.QuestionAnswers.ForEach(_qa => { var _answer = _question.QuestionAnswers.Where(an => an.Id == _qa.Id).FirstOrDefault(); var _users = _answer.Users.Select(u => u.UserId); //answer text if (col == 4) { ws.SetValue(row, 3, _qa.AnswerText); } var value = users.Where(u => _users.Contains(u)).Count(); ws.SetValue(row, col, value); row++; }); }); col++; } else { col++; } }); { var users = surveyService.UsersWhoFilledSurvey(survey.Users.Select(us => us.UserId).ToList()).ToList(); col++; var row = 3; var oldCol = col; users.ToList().ForEach(user => { col = oldCol; ws.Cells[row, col].Value = survey.Anonymous ? "******" : user.FirstName; col++; ws.Cells[row, col].Value = survey.Anonymous ? "******" : user.LastName; col++; ws.Cells[row, col].Value = survey.Anonymous ? "******" : (user.City == null ? "" : user.City); col++; ws.Cells[row, col].Value = survey.Anonymous ? "******" : (user.Birthday == null ? "" : user.Birthday.ToString()); col++; var questionWithUserAnswer = survey.Questions.Where(quest => quest.Id == questionVM.Id).FirstOrDefault(); questionWithUserAnswer.QuestionAnswers.ToList().ForEach( a => { var color = a.Users.Select(ua => ua.UserId).Contains(user.Id) ? Color.Green : Color.Red; ws.Cells[row, col].Style.Font.Color.SetColor(color); ws.Cells[row, col].Value = a.AnswerText; col++; }); row++; }); ws.Cells[3, oldCol, row, col - 1].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Thick); ws.Cells[3, oldCol, row, col - 1].Style.Font.Italic = true; ws.Cells[3, oldCol, row, col - 1].Style.Font.Bold = true; ws.Cells[3, oldCol, row, col - 1].Style.WrapText = true; } if (question.AnswerType == AnswerType.MultiCheckBox || question.AnswerType == AnswerType.MultiSelect) { int min = question.MinNumbOfAnswers; int max = question.MaxNumbOfAnswers; var answers = question.QuestionAnswers.Select(a => a.Id).ToList(); var oldCol = col; col++; oldCol = col; var row = 3; for (var i = min; i <= max; i++) { //create combinations var combinations = new Combinations <int>(answers, i); foreach (var combination in combinations) { col = oldCol; //set answer text combination.ToList().ForEach(answerId => { ws.Cells[row, col].Value = question.QuestionAnswers.Where(a => a.Id == answerId).First().AnswerText; col++; }); var userAnswersByUser = question.UserAnswers.GroupBy(u => u.UserId); var numbOfUsers = 0; ws.Cells[row, oldCol, row, col - 1].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Thick); foreach (var userAnswers in userAnswersByUser) { if (userAnswers.All(ua => combination.Contains(ua.AnswerId)) && combination.All(c => userAnswers.Select(ua => ua.AnswerId).Contains(c))) { numbOfUsers++; } } ws.Cells[row, col].Value = numbOfUsers; ws.Cells[row, col].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Thick, Color.MediumAquamarine); row++; } } } this.SetQuestionStyle(ws, questionVM, surveyVM); }
private void SetQuestionStyle(ExcelWorksheet ws, QuestionResultVM questionVM, SurveyResultViewModel surveyVM) { ws.Cells[2, 2, 2, questionVM.QuestionAnswers.Count + 3].Merge = true; ws.Cells[2, 2, 2, questionVM.QuestionAnswers.Count + 3].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; ws.Cells[2, 2].Style.Font.Size = 16; ws.Cells[2, 2].Style.Font.Bold = true; ws.Row(2).Height = 24; ws.Cells[2, 2, 2, questionVM.QuestionAnswers.Count + 3].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; ws.Cells[3, 2, 3, questionVM.QuestionAnswers.Count + 3].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells[3, 3, 3, questionVM.QuestionAnswers.Count + 3].Style.Font.Size = 12; ws.Cells[3, 3, 3, questionVM.QuestionAnswers.Count + 3].Style.Font.Bold = true; var numbOfRows = 3; if (surveyVM.Questions.Where(q => q.AnswerType != AnswerType.Text).Count() > 1) { surveyVM.Questions.Where(q => q.Id != questionVM.Id && q.AnswerType != AnswerType.Text).ToList().ForEach( quest => { numbOfRows++; if (surveyVM.Questions.Where(q => q.AnswerType != AnswerType.Text).Count() > 1) { ws.Cells[numbOfRows, 2].Style.Font.Size = 14; ws.Cells[numbOfRows, 2].Style.Font.Bold = true; ws.Cells[numbOfRows, 2, numbOfRows, questionVM.QuestionAnswers.Count + 3].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; ws.Cells[numbOfRows, 2, numbOfRows, 2].Style.WrapText = true; } numbOfRows += quest.QuestionAnswers.Count; ws.Cells[numbOfRows, 2, numbOfRows, questionVM.QuestionAnswers.Count + 3].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells[numbOfRows - quest.QuestionAnswers.Count, 3, numbOfRows, quest.QuestionAnswers.Count + 3].Style.Font.Bold = true; ws.Cells[numbOfRows - quest.QuestionAnswers.Count, 3, numbOfRows, quest.QuestionAnswers.Count + 3].Style.Font.Italic = true; } ); } ws.Cells[2, 2, 2, questionVM.QuestionAnswers.Count + 3].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells[numbOfRows, 2, numbOfRows, questionVM.QuestionAnswers.Count + 3].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells[2, 2, numbOfRows, 2].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; if (surveyVM.Questions.Where(q => q.AnswerType != AnswerType.Text).Count() > 1) { ws.Cells[4, 3, numbOfRows, 3].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; } ws.Cells[2, questionVM.QuestionAnswers.Count + 3, numbOfRows, questionVM.QuestionAnswers.Count + 3].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thick; ws.Cells[2, 2, numbOfRows, questionVM.QuestionAnswers.Count + 3].Style.WrapText = true; }
public IActionResult Vote(int?vote, int idSurvey) { ViewBag.NbreVisitUnique = GetVisitIP(); ViewBag.NbrePagesVues = GetPageVues(); UserConnect(ViewBag); ConsentCookie(ViewBag); List <string> errors = new List <string>(); if (vote == null) { errors.Add("Vous devez cocher une case pour voter!"); ViewBag.errors = errors; Survey survey = new Survey { Id = idSurvey }; survey = survey.GetSurvey(); Membres membre = new Membres(); //Récupérer le membre auteur du sondage membre = membre.GetMembreById(survey.IdCreateur); SurveyViewModel viewModel = new SurveyViewModel { Survey = survey, Membre = membre }; return(View("ViewSurvey", viewModel)); } if (ViewBag.Logged) { AnswerByMembre answer = new AnswerByMembre { IdMembre = Convert.ToInt32(ViewBag.Id), IdSurvey = idSurvey, IdAnswer = (int)vote }; answer.SaveVoteMembre(); } else { Visiteur v = new Visiteur(); string remoteIpAddress = Convert.ToString(Request.HttpContext.Connection.RemoteIpAddress); AnswerByIp answer = new AnswerByIp { IdIp = v.GetIdIp(remoteIpAddress), IdAnswer = (int)vote, IdSurvey = idSurvey }; answer.SaveVoteIdIp(); CookieOptions option = new CookieOptions { Expires = DateTime.Now.AddDays(365), HttpOnly = true }; Response.Cookies.Append("Survey" + idSurvey, Convert.ToString(vote), option); } Survey s = new Survey { Id = idSurvey }; s = s.GetSurvey(); Membres m = new Membres(); //Récupérer le membre auteur du sondage m = m.GetMembreById(s.IdCreateur); List <Survey> surveys = s.GetAllSurveys(true); SurveyResultViewModel result = new SurveyResultViewModel { Survey = s, Surveys = surveys, Membre = m }; return(View("ResultSurvey", result)); }
public IActionResult DisplaySurvey(int id) { ViewBag.NbreVisitUnique = GetVisitIP(); ViewBag.NbrePagesVues = GetPageVues(); UserConnect(ViewBag); ConsentCookie(ViewBag); Survey s = new Survey { Id = id }; s = s.GetSurvey(); Membres m = new Membres(); //Récupérer le membre auteur du sondage m = m.GetMembreById(s.IdCreateur); SurveyViewModel viewModel = new SurveyViewModel { Survey = s, Membre = m }; bool DejaVote; // Vérifier si déjà voté if (ViewBag.Logged) { AnswerByMembre answer = new AnswerByMembre(); int IdMembre = Convert.ToInt32(ViewBag.Id); DejaVote = answer.VerifVoteMembre(IdMembre, id); } else { Visiteur v = new Visiteur(); string remoteIpAddress = Convert.ToString(Request.HttpContext.Connection.RemoteIpAddress); AnswerByIp answer = new AnswerByIp(); bool VerifByIp = answer.VerifVoteIp(v.GetIdIp(remoteIpAddress), id); bool VerifByCookie; if (Request.Cookies["Survey" + id] == null) { VerifByCookie = false; } else { VerifByCookie = true; } if (VerifByIp && VerifByCookie) { DejaVote = true; } else { DejaVote = false; } } if (DejaVote) { List <Survey> surveys = s.GetAllSurveys(true); SurveyResultViewModel result = new SurveyResultViewModel { Survey = s, Surveys = surveys, Membre = m }; return(View("ResultSurvey", result)); } return(View("ViewSurvey", viewModel)); }
private void CreateQuestionWorksheet(ExcelPackage e, QuestionResultVM questionVM, SurveyResultViewModel surveyVM, Survey survey) { var ws = e.Workbook.Worksheets.Add(questionVM.QuestionText); ws.SetValue(1, 3, questionVM.QuestionText); var col = 3; var question = survey.Questions.Where(q => q.Id == questionVM.Id).FirstOrDefault(); questionVM.QuestionAnswers.ForEach(qa => { var row = 2; ws.SetValue(row, col, qa.AnswerText); var answer = question.QuestionAnswers.Where(an => an.Id == qa.Id).FirstOrDefault(); var users = answer.Users.Select(u => u.UserId); row++; surveyVM.Questions.Where(q => q.Id != questionVM.Id).ToList().ForEach(q => { var _question = survey.Questions.Where(_q => _q.Id == q.Id).FirstOrDefault(); ws.SetValue(row, 1, q.QuestionText); ws.Cells[row, 1, row, questionVM.QuestionAnswers.Count() + 2].Merge = true; row++; q.QuestionAnswers.ForEach(_qa => { var _answer = _question.QuestionAnswers.Where(an => an.Id == _qa.Id).FirstOrDefault(); var _users = _answer.Users.Select(u => u.UserId); if (col == 3) { ws.SetValue(row, 2, _qa.AnswerText); } var value = users.Where(u => _users.Contains(u)).Count(); ws.SetValue(row, col, value); row++; }); }); col++; }); ws.Cells[1, 3, 1, questionVM.QuestionAnswers.Count() + 2].Merge = true; }
private void SetSurveyResultVMValues(SurveyResultViewModel surveyVM, Survey survey, List <ApplicationUser> users, int?userId, bool forExcel) { surveyVM.NumbOfUsers = survey.Users.Count(); if (!survey.Anonymous) { surveyVM.MaleCount = users.Where(u => u.Gender == Gender.MALE).Count(); surveyVM.FemaleCount = users.Where(u => u.Gender == Gender.FEMALE).Count(); var und18 = users.Where(u => u.Birthday != null && ((DateTime)u.Birthday).AddYears(18).CompareTo(DateTime.Now) > 0); var u18_25 = users.Where(u => u.Birthday != null && ((DateTime)u.Birthday).AddYears(26).CompareTo(DateTime.Now) > 0 && ((DateTime)u.Birthday).AddYears(18).CompareTo(DateTime.Now) <= 0); var u26_40 = users.Where(u => u.Birthday != null && ((DateTime)u.Birthday).AddYears(41).CompareTo(DateTime.Now) > 0 && ((DateTime)u.Birthday).AddYears(26).CompareTo(DateTime.Now) <= 0); var u41_60 = users.Where(u => u.Birthday != null && ((DateTime)u.Birthday).AddYears(61).CompareTo(DateTime.Now) > 0 && ((DateTime)u.Birthday).AddYears(41).CompareTo(DateTime.Now) <= 0); var u61 = users.Where(u => u.Birthday != null && ((DateTime)u.Birthday).AddYears(61).CompareTo(DateTime.Now) <= 0); surveyVM.Unknown = users.Where(u => u.Birthday == null).Count(); surveyVM.UsersUnder18Count = und18.Count(); surveyVM.Users18_25Count = u18_25.Count(); surveyVM.Users26_40Count = u26_40.Count(); surveyVM.Users41_60Count = u41_60.Count(); surveyVM.Users61Count = u61.Count(); if (forExcel) { surveyVM.MaleUnder18 = und18.Where(u => u.Gender == Gender.MALE).Count(); surveyVM.FemaleUnder18 = und18.Where(u => u.Gender == Gender.FEMALE).Count(); surveyVM.Male18_25 = u18_25.Where(u => u.Gender == Gender.MALE).Count(); surveyVM.Female18_25 = u18_25.Where(u => u.Gender == Gender.FEMALE).Count(); surveyVM.Male26_40 = u26_40.Where(u => u.Gender == Gender.MALE).Count(); surveyVM.Female26_40 = u26_40.Where(u => u.Gender == Gender.FEMALE).Count(); surveyVM.Male41_60 = u41_60.Where(u => u.Gender == Gender.MALE).Count(); surveyVM.Female41_60 = u41_60.Where(u => u.Gender == Gender.FEMALE).Count(); surveyVM.Male61 = u61.Where(u => u.Gender == Gender.MALE).Count(); surveyVM.Female61 = u61.Where(u => u.Gender == Gender.FEMALE).Count(); } } foreach (var questionVM in surveyVM.Questions) { questionVM.NumbOfUsers = surveyService.NumbOfUsers(questionVM.Id); if (questionVM.AnswerType == AnswerType.Text) { // if answer type text get answer from db UserAnswer userAnswer = surveyService.GetUserAnswerWithAnswerObj((int)questionVM.Id, (int)userId); if (userAnswer != null) { // must fill answer text UsersAnswersVM _ua = new UsersAnswersVM { AnswerText = userAnswer.Answer.AnswerText }; questionVM.QuestionAnswers.Add(_ua); } } else { var question = survey.Questions.Where(q => q.Id == questionVM.Id).FirstOrDefault(); foreach (var answerVM in questionVM.QuestionAnswers) { var answer = question.QuestionAnswers.Where(a => a.Id == answerVM.Id).FirstOrDefault(); answerVM.Count = answer.Users.ToList().Count(); answerVM.IsAnswerOfUser = false; foreach (var ua in answer.Users) { if (ua.UserId == userId) { answerVM.IsAnswerOfUser = true; break; } } questionVM.NumbOfUA += answerVM.Count; } } } }