예제 #1
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());
        }