public bool SaveSurvey(SurveyView newSurvey)
        {
            bool wasSuccessful = true;

            using (SqlConnection conn = new SqlConnection(_connectionString))
            {
                conn.Open();

                string sqlSaveSurvey = "INSERT INTO survey_result (parkCode, emailAddress, state, activityLevel) VALUES (@ParkCode, @Email, @State, @ActivityLevel)";

                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sqlSaveSurvey;
                cmd.Connection  = conn;
                cmd.Parameters.AddWithValue("@ActivityLevel", newSurvey.ActivityLevel);
                //cmd.Parameters.AddWithValue("@SurveyID", newSurvey.SurveyID);
                cmd.Parameters.AddWithValue("@State", newSurvey.State);
                cmd.Parameters.AddWithValue("@Email", newSurvey.Email);
                cmd.Parameters.AddWithValue("@ParkCode", newSurvey.ParkCode);

                int rowsAffected = cmd.ExecuteNonQuery();

                if (rowsAffected == 0)
                {
                    wasSuccessful = false;
                    throw new Exception("Error: Review could not be made.");
                }
            }
            return(wasSuccessful);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Removes a page from a survey
        /// </summary>
        /// <param name="view"></param>
        /// <param name="pageId"></param>
        public void RemoveSurveyPage(SurveyView view, int pageId)
        {
            List <QuestionPartView> pages    = view.QuestionPartViews as List <QuestionPartView>;
            QuestionPartView        toDelete = null;
            int pageIndex = Int32.MaxValue;

            for (int i = 0; i < pages.Count; i++)
            {
                if (pages[i].Order > pageIndex)
                {
                    pages[i].Order--;
                }
                else if (pages[i].Id == pageId)
                {
                    toDelete  = pages[i];
                    pageIndex = toDelete.Order;
                }
            }

            //remove children question part views (to trigger question part deletes)
            var pageData = this._unitOfWork.QuestionPartViews.GetQuestionPartViewWithStructure(toDelete.Id);
            var childIds = pageData.QuestionPartViewChildren.Select(q => q.Id).ToList();

            childIds.ForEach(id => this.RemoveQuestionPartView(pageData, id, false));
            view.QuestionPartViews.Remove(toDelete);

            if (toDelete.CATIDependent != null)
            {
                var catiView = this._unitOfWork.SurveyViews.GetSurveyViewWithPagesStructure(view.SurveyId, "CATI");
                this.RemoveSurveyPage(catiView, toDelete.CATIDependent.Id);
            }
        }
Ejemplo n.º 3
0
        public ActionResult Survey()
        {
            SurveyView survey = new SurveyView();

            survey.Parks = _dal.GetAllParks();
            return(View("Surveys", survey));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> GenerateCATIView(int surveyId, string language)
        {
            var supportedLanguages = this._localizationOptions.Value.SupportedCultures.Select(c => c.Name);

            if (supportedLanguages.Contains(language))
            {
                var survey = await this._unitOfWork.Surveys.GetSurveyLabelsAndPartsAsync(surveyId);

                if (survey.Owner == this.User.Identity.Name || await HasModifySurveyPermissions(surveyId))
                {
                    // get current standard view structure to duplicate
                    SurveyView standardSurveyStructure = survey.SurveyViews.Where(v => v.ViewName == "Standard").SingleOrDefault();                       //this._unitOfWork.SurveyViews.GetSurveyViewQuestionStructure(surveyId, "Standard");
                    // add CATI or get existing view
                    SurveyView catiView = this._surveyBuilderService.AddSurveyView(survey, "CATI");
                    // duplicate structure and create labels for language
                    this._surveyBuilderService.DuplicateSurveyViewStructure(standardSurveyStructure, catiView, language);
                    // save to database
                    await this._unitOfWork.SaveChangesAsync();

                    return(Ok(standardSurveyStructure.ToLocalizedModel <SBSurveyViewViewModel> (language)));
                }
                else
                {
                    return(BadRequest("Insufficient privileges."));
                }
            }
            else
            {
                return(BadRequest("Incorrect language."));
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="view"></param>
        /// <param name="part"></param>
        /// <param name="definition"></param>
        /// <param name="position"></param>
        public QuestionPartView AddQuestion(SurveyView view, QuestionTypeDefinition definition, int position = -1)
        {
            QuestionPartView qpv = new QuestionPartView();

            qpv.QuestionPart = new QuestionPart()
            {
                QuestionType = definition.TypeName
            };
            if (position < 0)
            {
                view.QuestionPartViews.Add(qpv);
            }
            else
            {
                ((List <QuestionPartView>)view.QuestionPartViews).Insert(position, qpv);
            }

            //add more question part views
            if (definition.QuestionPartSlots.Count > 0)
            {
                foreach (var slot in definition.QuestionPartSlots)
                {
                    var questionSlot = new QuestionPartView();
                    questionSlot.ParentView   = qpv;
                    questionSlot.QuestionPart = new QuestionPart()
                    {
                        QuestionType = definition.TypeName
                    };
                    qpv.QuestionPartViewChildren.Add(questionSlot);
                }
            }

            return(qpv);
        }
        public ActionResult Survey(SurveyView survey)
        {
            //Survey result = new Survey();
            //result.ActivityLevel = survey.ActivityLevel;
            //result.EmailAddress = survey.EmailAddress;
            //result.State = survey.State;
            //result.ParkCode = Park;
            bool         wasSuccesful = false;
            ActionResult redirect;

            if (!ModelState.IsValid)
            {
                survey.Parks = _dal.GetAllParks();
                redirect     = View("Surveys", survey);
            }
            else
            {
                _dal.SaveSurvey(survey);
                var favorites = _dal.GetFavorites();
                redirect = View("Favorites", favorites);
            }
            //if (wasSuccesful)
            //{
            //    var favorites = _dal.GetFavorites();
            //    redirect = View("Favorites", favorites);
            //}
            //else
            //{
            //    redirect = View("Surveys", survey);
            //}

            return(redirect);
        }
Ejemplo n.º 7
0
        public void ReOrderPages(SurveyView view, List <QuestionPartView> newOrder)
        {
            Dictionary <int, int> newOrderDict = newOrder.ToDictionary(r => r.Id, r => r.Order);

            foreach (var qpartView in view.QuestionPartViews)
            {
                qpartView.Order = newOrderDict[qpartView.Id];
            }
        }
Ejemplo n.º 8
0
        public ActionResult Next(SurveyView model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Survey", model));
            }

            foreach (var userQuestionView in model.Questions)
            {
                UserQuestion userQuestion = new UserQuestion
                {
                    Answer     = userQuestionView.Answer,
                    QuestionId = userQuestionView.QuestionId,
                    UserId     = model.UserId
                };

                _database.Add(userQuestion);
            }

            if (!HasOpenQuestions(model.UserId, model.CategoryId))
            {
                return(RedirectToAction("SurveyCompleted", new { categoryId = model.CategoryId }));
            }

            var counter = _database.UserQuestions
                          .Where(uq => uq.Question.CategoryId == model.CategoryId &&
                                 uq.UserId == model.UserId)
                          .Count();

            var remainingQuestions = _database.Questions
                                     .Where(nq => nq.Category.Id == model.CategoryId &&
                                            !_database.UserQuestions
                                            .Where(uq => uq.UserId == model.UserId)
                                            .Select(q => q.QuestionId)
                                            .Contains(nq.Id))
                                     .Take(numberOfQuestions)
                                     .Select(q => new UserQuestionView
            {
                QuestionId          = q.Id,
                QuestionDescription = q.Description,
                Counter             = ++counter
            })
                                     .ToList();

            var survey = new SurveyView
            {
                CategoryName = model.CategoryName,
                CategoryId   = model.CategoryId,
                Questions    = remainingQuestions,
                UserId       = model.UserId,
            };

            ModelState.Clear();

            return(View("Survey", survey));
        }
Ejemplo n.º 9
0
 private Survey SurveyViewToSurvey(SurveyView view, Survey oldSurvey)
 {
     oldSurvey.Title          = view.Title;
     oldSurvey.Description    = view.Description;
     oldSurvey.Ending         = view.Ending;
     oldSurvey.ExpirationDate = view.ExpirationDate;
     oldSurvey.Status         = view.Status;
     oldSurvey.Pages          = view.Pages;
     return(oldSurvey);
 }
Ejemplo n.º 10
0
        public ActionResult Show(int Id)
        {
            var geosurvey     = Database.Session.Load <GeoSurvey>(Id);
            var surveyProfile = Database.Session.Query <SurveyProfile>().Where(x => x.GeoSurvey.Id == Id).ToList <SurveyProfile>();

            var model = new SurveyView();

            //model.SurveyId = data.surveyId;

            model.Client.Name    = geosurvey.Client.Name;
            model.Client.Address = geosurvey.Client.Address;
            model.Client.Region  = geosurvey.Client.Region.Name;
            model.Client.Phone   = geosurvey.Client.Phone;
            model.Client.Email   = geosurvey.Client.Email;


            model.Region             = geosurvey.Region.Name;
            model.District           = geosurvey.District.Name;
            model.Village            = geosurvey.Village;
            model.SurveyorType       = geosurvey.SurveyType;
            model.Cost               = geosurvey.Cost;
            model.SurveyorName       = geosurvey.Staff.Name;
            model.StartDate          = geosurvey.StartDate;
            model.EndDate            = geosurvey.EndDate;
            model.SiteRecommendation = geosurvey.SiteRecommendation;


            model.ProfileEditor1.Id           = surveyProfile[0].Id;
            model.ProfileEditor1.VESPoints    = surveyProfile[0].VesPoint.ToString();
            model.ProfileEditor1.Northing     = surveyProfile[0].Northing;
            model.ProfileEditor1.Easting      = surveyProfile[0].Easting;
            model.ProfileEditor1.Elevation    = surveyProfile[0].Elevation;
            model.ProfileEditor1.SurveyMethod = surveyProfile[0].SurveyMethod;
            model.ProfileEditor1.Recommend    = surveyProfile[0].Recommend;


            model.ProfileEditor2.Id           = surveyProfile[1].Id;
            model.ProfileEditor2.VESPoints    = surveyProfile[1].VesPoint.ToString();
            model.ProfileEditor2.Northing     = surveyProfile[1].Northing;
            model.ProfileEditor2.Easting      = surveyProfile[1].Easting;
            model.ProfileEditor2.Elevation    = surveyProfile[1].Elevation;
            model.ProfileEditor2.SurveyMethod = surveyProfile[1].SurveyMethod;
            model.ProfileEditor2.Recommend    = surveyProfile[1].Recommend;

            model.ProfileEditor3.Id           = surveyProfile[2].Id;
            model.ProfileEditor3.VESPoints    = surveyProfile[2].VesPoint.ToString();
            model.ProfileEditor3.Northing     = surveyProfile[2].Northing;
            model.ProfileEditor3.Easting      = surveyProfile[2].Easting;
            model.ProfileEditor3.Elevation    = surveyProfile[2].Elevation;
            model.ProfileEditor3.SurveyMethod = surveyProfile[2].SurveyMethod;
            model.ProfileEditor3.Recommend    = surveyProfile[2].Recommend;

            return(View(model));
        }
Ejemplo n.º 11
0
        public void EditSurvey(SurveyView view, int id)
        {
            var oldSurvey = _surveys.FindOne(variable => variable.SurveyId == id);

            if (oldSurvey == null)
            {
                return;
            }
            _surveys.Delete(s => s.SurveyId == id);
            var newSurvey = SurveyViewToSurvey(view, oldSurvey);

            _surveys.Insert(newSurvey);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Creates and initializes a list of test survey objects with relevent test data created.
        /// </summary>
        /// <returns></returns>
        public static IList <ISurvey> GetTestSurveys()
        {
            IList <ISurvey> testSurveys = new List <ISurvey>();

            var testSurvey1 = new Survey()
            {
                // Title = "Test Survey 1",
                Id          = 1,
                Name        = "Test Survey Name 1",
                CreatedDate = new System.DateTime()
            };
            var testSurvey2 = new Survey()
            {
                //  Title = "Test Survey 2",
                Id          = 2,
                Name        = "Test Survey Name 2",
                CreatedDate = new System.DateTime()
            };
            var testSurvey3 = new Survey()
            {
                //     Title = "Test Survey 3",
                Id          = 3,
                Name        = "Test Survey Name 3",
                CreatedDate = new System.DateTime()
            };

            testSurveys.Add(testSurvey1);
            testSurveys.Add(testSurvey2);
            testSurveys.Add(testSurvey3);

            //survey view for first survay
            var surveyView1 = new SurveyView();

            surveyView1.Id = 1;
            testSurvey1.SurveyViews.Add(surveyView1);

            //2nd survey view for first sturvey
            var surveyView2 = new SurveyView();

            surveyView2.Id = 2;
            testSurvey1.SurveyViews.Add(surveyView2);

            var surveyView3 = new SurveyView();

            surveyView3.Id = 3;
            testSurvey2.SurveyViews.Add(surveyView3);

            //third survey has no survey views

            return(testSurveys);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Adds a new view to the specified survey
        /// </summary>
        /// <param name="survey"></param>
        /// <param name="viewName"></param>
        public SurveyView AddSurveyView(Survey survey, string viewName)
        {
            // ensure view doesn't already exist with that name
            var surveyView = survey.SurveyViews.Where(s => s.ViewName == viewName).FirstOrDefault();

            if (surveyView == null)
            {
                surveyView = new SurveyView()
                {
                    ViewName = viewName
                };
                survey.SurveyViews.Add(surveyView);
            }
            return(surveyView);
        }
Ejemplo n.º 14
0
        public ActionResult Load(int categoryId)
        {
            var user = _database.Users
                       .Find(u => u.UserName == loggedInUserName);

            var category = _database.Categories
                           .Find(c => c.Id == categoryId);

            if (!HasOpenQuestions(user.Id, category.Id))
            {
                return(RedirectToAction("SurveyCompleted", new { categoryId = category.Id }));
            }

            var answeredQuestions = _database.UserQuestions
                                    .Where(uq => uq.Question.Category.Id == categoryId &&
                                           uq.UserId == user.Id);


            int counter = answeredQuestions.Count();

            var survey = new SurveyView
            {
                CategoryId   = category.Id,
                CategoryName = category.Name,
                UserId       = user.Id
            };


            survey.Questions = _database.Questions
                               .Where(nq => nq.Category.Id == categoryId &&
                                      !answeredQuestions
                                      .Select(q => q.Question.Id)
                                      .Contains(nq.Id))
                               .Take(numberOfQuestions)
                               .Select(q => new UserQuestionView
            {
                Counter             = ++counter,
                QuestionDescription = q.Description,
                QuestionId          = q.Id,
            })
                               .ToList();

            ModelState.Clear();

            return(View("Survey", survey));
        }
Ejemplo n.º 15
0
        private SurveyView ToSurveyView(Survey survey)
        {
            var view = new SurveyView()
            {
                SurveyId       = survey.SurveyId,
                Title          = survey.Title,
                Description    = survey.Description,
                Ending         = survey.Ending,
                CreateDate     = survey.CreateDate,
                ExpirationDate = survey.ExpirationDate,
                Status         = survey.Status,
                PersonalData   = survey.PersonalData,
                Pages          = survey.Pages
            };

            return(view);
        }
Ejemplo n.º 16
0
        public async Task <IActionResult> CreateSurvey([FromBody] SurveyView surveyView)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var survey = mapper.Map <SurveyView, Survey>(surveyView);
            var userId = HttpContext.User.Claims.First().Value;

            survey.UserId = new Guid(userId);
            await context.Surveys.AddAsync(survey);

            await context.SaveChangesAsync();

            var result = mapper.Map <Survey, SurveyView>(survey);

            return(Ok(result));
        }
Ejemplo n.º 17
0
        public ActionResult Create(SurveyView surveyView)
        {
            if (Request.Form["SurveyID"] != "0" && Request.Form["SurveyID"] != null)
            {
                surveyView.survey.surveyID = Convert.ToInt32(Request.Form["SurveyID"]);
                surveyView.survey.dateFrom = DateTime.ParseExact(Request.Form["CtrlDateFrom"], "dd/MM/yyyy", null);
                surveyView.survey.dateTo   = DateTime.ParseExact(Request.Form["CtrlDateTo"], "dd/MM/yyyy", null);

                db.Entry(surveyView.survey).State = EntityState.Modified;
                db.SaveChanges();

                surveyView.surveyDetail.surveyID = surveyView.survey.surveyID;
                surveyView.surveyDetail.name     = Request.Form["surveyDetail_name"];
                surveyView.surveyDetail.type     = Request.Form["typeDetail"];
                surveyView.surveyDetail.option1  = Request.Form["option1"];
                surveyView.surveyDetail.option2  = Request.Form["option2"];
                surveyView.surveyDetail.option3  = Request.Form["option3"];
                surveyView.surveyDetail.option4  = Request.Form["option4"];
                surveyView.surveyDetail.option5  = Request.Form["option5"];
                surveyView.surveyDetail.option6  = Request.Form["option6"];
                surveyView.surveyDetail.active   = true;

                if (Request.Form["HDSurveyDetailID"] == "0" || Request.Form["HDSurveyDetailID"] == "" || Request.Form["HDSurveyDetailID"] == null)
                {
                    db.SurveyDetail.Add(surveyView.surveyDetail);
                    db.SaveChanges();
                }
                else
                {
                    surveyView.surveyDetail.surveyDetailID  = Convert.ToInt32(Request.Form["HDSurveyDetailID"]);
                    db.Entry(surveyView.surveyDetail).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else
            {
                surveyView.survey.dateFrom = DateTime.ParseExact(Request.Form["CtrlDateFrom"], "dd/MM/yyyy", null);
                surveyView.survey.dateTo   = DateTime.ParseExact(Request.Form["CtrlDateTo"], "dd/MM/yyyy", null);
                db.Survey.Add(surveyView.survey);
                db.SaveChanges();
            }
            surveyView.surveyDetailList = db.SurveyDetail.Where(x => x.surveyID == surveyView.survey.surveyID).ToList();
            return(View(surveyView));
        }
Ejemplo n.º 18
0
        public ActionResult Survey(int categoryId)
        {
            int questionCounter = 0;

            var category = _database.Categories
                           .Find(c => c.Id == categoryId);

            var user = _database.Users
                       .Find(u => u.UserName == loggedInUserName);

            if (!HasOpenQuestions(user.Id, category.Id))
            {
                return(RedirectToAction("SurveyCompleted", new { categoryId = category.Id }));
            }

            if (category != null)
            {
                var questions = _database.Questions
                                .Where(q => q.Category.Id == categoryId)
                                .Take(numberOfQuestions)
                                .Select(q => new UserQuestionView
                {
                    QuestionDescription = q.Description,
                    QuestionId          = q.Id,
                    Counter             = ++questionCounter
                })
                                .ToList();

                var survey = new SurveyView
                {
                    CategoryName = category.Name,
                    CategoryId   = category.Id,
                    Questions    = questions,
                    UserId       = user.Id,
                };

                return(View(survey));
            }
            else
            {
                return(HttpNotFound("Unable to find a categroy with matching identifier."));
            }
        }
Ejemplo n.º 19
0
        public ActionResult Survey(SurveyView survey)
        {
            ActionResult redirect;

            if (!ModelState.IsValid)
            {
                survey.Parks = _dal.GetAllParks();
                redirect     = View("Surveys", survey);
            }
            else
            {
                _dal.SaveSurvey(survey);
                var favorites = _dal.GetFavorites();
                redirect = RedirectToAction("Favorites", favorites);
            }


            return(redirect);
        }
Ejemplo n.º 20
0
        public async Task <IActionResult> UpdateSurvey([FromBody] SurveyView surveyView)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var survey = await context.Surveys.Include(s => s.Groups).Include(s => s.Templates).SingleOrDefaultAsync(s => s.Id == new Guid(surveyView.Id));

            if (survey == null)
            {
                return(NotFound());
            }
            mapper.Map <SurveyView, Survey>(surveyView, survey);
            context.Surveys.Update(survey);
            await context.SaveChangesAsync();

            var result = mapper.Map <Survey, SurveyView>(survey);

            return(Ok(result));
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Adds a question part to the specified SurveyView - this creates a new QuestionPartView from the part
        /// </summary>
        /// <param name="view"></param>
        /// <param name="part"></param>
        /// <param name="position">0-index order, position of the qustion</param>
        /// <returns>A reference to the created QuestionPartView</returns>
        public QuestionPartView AddQuestionPart(SurveyView view, QuestionPart part, QuestionTypeDefinition definition,
                                                int position = -1)
        {
            QuestionPartView questionPartView = new QuestionPartView
            {
                QuestionPart = part
            };

            if (position >= 0)
            {
                questionPartView.Order = position;
                (view.QuestionPartViews as List <QuestionPartView>)?.Insert(position, questionPartView);
            }
            else
            {
                (view.QuestionPartViews as List <QuestionPartView>)?.Add(questionPartView);
                questionPartView.Order = view.QuestionPartViews.Count - 1;
            }

            return(questionPartView);
        }
Ejemplo n.º 22
0
        public ActionResult Create(int?id)
        {
            SurveyView objSurveyView = new SurveyView();

            objSurveyView.survey       = new Survey();
            objSurveyView.surveyDetail = new SurveyDetail();

            if (id != null)
            {
                objSurveyView.surveyDetail     = db.SurveyDetail.FirstOrDefault(x => x.surveyDetailID == id);
                objSurveyView.survey           = db.Survey.FirstOrDefault(x => x.surveyID == id);
                objSurveyView.surveyDetailList = db.SurveyDetail.Where(u => u.surveyID == id).ToList();
            }
            else
            {
                objSurveyView.survey           = new Survey();
                objSurveyView.survey.active    = true;
                objSurveyView.surveyDetail     = new SurveyDetail();
                objSurveyView.surveyDetailList = new List <SurveyDetail>();
            }
            return(View(objSurveyView));
        }
Ejemplo n.º 23
0
 public bool DeleteCATITranslation(SurveyView surveyView, string language)
 {
     if (surveyView.WelcomePageLabels.Where(l => l.Language == language).Any())
     {
         surveyView.WelcomePageLabels.RemoveWhere(l => l.Language == language);
         surveyView.TermsAndConditionsLabels.RemoveWhere(l => l.Language == language);
         surveyView.ThankYouPageLabels.RemoveWhere(l => l.Language == language);
         foreach (var page in surveyView.QuestionPartViews)
         {
             page.Labels.RemoveWhere(l => l.Language == language);
             foreach (var question in page.QuestionPartViewChildren)
             {
                 question.Labels.RemoveWhere(l => l.Language == language);
                 foreach (var subQuestion in question.QuestionPartViewChildren)
                 {
                     subQuestion.Labels.RemoveWhere(l => l.Language == language);
                 }
             }
         }
     }
     return(surveyView.WelcomePageLabels.Any());
 }
Ejemplo n.º 24
0
        public async Task <IActionResult> DeleteCATIView(int surveyId, string language)
        {
            var survey = await this._unitOfWork.Surveys.GetSurveyLabelsAndPartsAsync(surveyId);

            if (survey.Owner == this.User.Identity.Name || await HasModifySurveyPermissions(surveyId))
            {
                // get current standard view structure to duplicate
                SurveyView CATISurveyStructure = this._unitOfWork.SurveyViews.GetSurveyViewQuestionStructure(surveyId, "CATI");
                // add CATI or get existing view
                bool keepView = this._surveyBuilderService.DeleteCATITranslation(CATISurveyStructure, language);
                if (!keepView)
                {
                    this._unitOfWork.SurveyViews.Remove(CATISurveyStructure);
                }
                // save to database
                await this._unitOfWork.SaveChangesAsync();

                return(Ok());
            }
            else
            {
                return(BadRequest("Insufficient privileges."));
            }
        }
Ejemplo n.º 25
0
        public void DuplicateSurveyViewStructure(SurveyView sourceView, SurveyView targetView, string language)
        {
            bool structureExists            = true;
            bool structureAndLanguageExists = false;

            //deal with base labels (welcome, t&c, thank you)

            if (targetView.WelcomePageLabels == null)
            {
                structureExists = false;
                targetView.WelcomePageLabels        = new LabelCollection <WelcomePageLabel>();
                targetView.TermsAndConditionsLabels = new LabelCollection <TermsAndConditionsPageLabel>();
                targetView.ThankYouPageLabels       = new LabelCollection <ThankYouPageLabel>();
            }
            else if (targetView.WelcomePageLabels[language] != null)
            {
                structureAndLanguageExists = true;
            }

            if (!structureAndLanguageExists)
            {
                targetView.WelcomePageLabels[language] = new WelcomePageLabel {
                    Value = null
                };
                targetView.TermsAndConditionsLabels[language] = new TermsAndConditionsPageLabel {
                    Value = null
                };
                targetView.ThankYouPageLabels[language] = new ThankYouPageLabel {
                    Value = null
                };

                // if structure exists, just create new labels under the language

                if (structureExists)
                {
                    foreach (var sourcePage in sourceView.QuestionPartViews)
                    {
                        var page = sourcePage.CATIDependent;
                        page.Labels[language] = new QuestionPartViewLabel {
                            Value = sourcePage.Labels[language].Value
                        };
                        foreach (var question in page.QuestionPartViewChildren)
                        {
                            question.Labels[language] = new QuestionPartViewLabel {
                                Value = null
                            };

                            foreach (var subQuestion in question.QuestionPartViewChildren)
                            {
                                subQuestion.Labels[language] = new QuestionPartViewLabel {
                                    Value = null
                                };
                            }
                        }
                    }
                }
                else
                {
                    foreach (var page in sourceView.QuestionPartViews)
                    {
                        QuestionPartView targetPage = new QuestionPartView
                        {
                            Order = page.Order,
                            Icon  = page.Icon
                        };
                        page.CATIDependent = targetPage;
                        targetView.QuestionPartViews.Add(targetPage);
                        targetPage.Labels[language] = new QuestionPartViewLabel {
                            Value = page.Labels[language].Value
                        };
                        foreach (var question in page.QuestionPartViewChildren)
                        {
                            QuestionPartView targetQuestion = new QuestionPartView
                            {
                                Order        = question.Order,
                                IsOptional   = question.IsOptional,
                                IsHousehold  = question.IsHousehold,
                                RepeatSource = question.RepeatSource,
                                QuestionPart = question.QuestionPart
                            };
                            question.CATIDependent = targetQuestion;
                            targetPage.QuestionPartViewChildren.Add(targetQuestion);
                            targetQuestion.Labels[language] = new QuestionPartViewLabel {
                                Value = null
                            };
                            foreach (var subQuestion in question.QuestionPartViewChildren)
                            {
                                QuestionPartView targetSubQuestion = new QuestionPartView
                                {
                                    Order        = subQuestion.Order,
                                    IsOptional   = subQuestion.IsOptional,
                                    RepeatSource = subQuestion.RepeatSource,
                                    QuestionPart = subQuestion.QuestionPart
                                };
                                subQuestion.CATIDependent = targetSubQuestion;
                                targetQuestion.QuestionPartViewChildren.Add(targetSubQuestion);
                                targetSubQuestion.Labels[language] = new QuestionPartViewLabel {
                                    Value = null
                                };
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Cleans up conditionals, removing any that are invalid (source question now after original)
        /// </summary>
        /// <param name="modifiedViews"></param>
        public void ValidateConditionals(SurveyView structure, int questionPartViewMovedId)
        {
            List <int> questionPartIdsBefore = new List <int>();
            List <int> questionPartIdsAfter  = new List <int>();

            int questionPartId = 0;

            bool foundQuestion = false;

            structure.QuestionPartViews.OrderBy(q => q.Order).ToList().ForEach(page =>
            {
                page.QuestionPartViewChildren.OrderBy(q => q.Order).ToList().ForEach(firstLayerQuestion =>
                {
                    if (firstLayerQuestion.QuestionPart != null)
                    {
                        if (firstLayerQuestion.Id == questionPartViewMovedId)
                        {
                            foundQuestion  = true;
                            questionPartId = firstLayerQuestion.QuestionPart.Id;
                        }
                        else
                        {
                            if (!foundQuestion)
                            {
                                questionPartIdsBefore.Add(firstLayerQuestion.QuestionPart.Id);
                            }
                            else
                            {
                                questionPartIdsAfter.Add(firstLayerQuestion.QuestionPart.Id);
                            }
                        }
                    }
                    else
                    {
                        firstLayerQuestion.QuestionPartViewChildren.OrderBy(q => q.Order).ToList().ForEach(secondLayerQuestion =>
                        {
                            if (secondLayerQuestion.Id == questionPartViewMovedId)
                            {
                                foundQuestion  = true;
                                questionPartId = secondLayerQuestion.QuestionPart.Id;
                            }
                            else
                            {
                                if (!foundQuestion)
                                {
                                    questionPartIdsBefore.Add(secondLayerQuestion.QuestionPart.Id);
                                }
                                else
                                {
                                    questionPartIdsAfter.Add(secondLayerQuestion.QuestionPart.Id);
                                }
                            }
                        });
                    }
                });
            });

            // call repository functions to remove conditionals that don't belong for the specific question
            this._unitOfWork.QuestionConditionals.ValidateSourceConditionals(questionPartId, questionPartIdsAfter);
            this._unitOfWork.QuestionOptionConditionals.ValidateSourceConditionals(questionPartId, questionPartIdsAfter);
            this._unitOfWork.QuestionConditionals.ValidateTargetConditionals(questionPartId, questionPartIdsBefore);
            this._unitOfWork.QuestionOptionConditionals.ValidateTargetConditionals(questionPartId, questionPartIdsBefore);
        }
Ejemplo n.º 27
0
 /// <summary>
 /// Adds a page to a survey
 /// </summary>
 /// <param name="view"></param>
 /// <param name="newPage"></param>
 public void AddSurveyPage(SurveyView view, QuestionPartView newPage)
 {
     view.QuestionPartViews.Add(newPage);
     newPage.Order = view.QuestionPartViews.Count - 1;
 }