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);
        }
Ejemplo n.º 2
0
        public IActionResult Survey()
        {
            SurveyResultViewModel SurveyVM = new SurveyResultViewModel();

            SurveyVM.Parks = _parkDAO.GetParks();
            return(GetAuthenticatedView("Survey", SurveyVM));
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
        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;
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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;
        }
Ejemplo n.º 13
0
        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));
        }
Ejemplo n.º 14
0
        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));
        }
Ejemplo n.º 15
0
        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;
        }
Ejemplo n.º 16
0
        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;
                    }
                }
            }
        }