public bool HasChild(int categoryId)
 {
     using (BDictionaryEntities db = new BDictionaryEntities())
     {
         return(db.QuestionCategories.Any(c => c.ParentID == categoryId));
     }
 }
 public IEnumerable <QuestionCategory> Search(string input)
 {
     using (BDictionaryEntities db = new BDictionaryEntities())
     {
         return(db.QuestionCategories.Where(c => (c.Name.Contains(input) || c.Id.ToString().StartsWith(input)) && !c.QuestionCategory1.Any()).OrderBy(c => c.Name).Take(20).ToList());
     }
 }
 public IEnumerable <Question> GetQuestions(int categoryId)
 {
     using (BDictionaryEntities db = new BDictionaryEntities())
     {
         return(db.QuestionCategories.Include(x => x.QuestionAnswers).Where(c => c.Id == categoryId).FirstOrDefault().Questions);
     }
 }
 public QuestionCategory GetQuestionCategory(string categoryName)
 {
     using (BDictionaryEntities db = new BDictionaryEntities())
     {
         return(db.QuestionCategories.Where(c => c.Name == categoryName).FirstOrDefault());
     }
 }
 public QuestionCategory GetQuestionCategory(int categoryId)
 {
     using (BDictionaryEntities db = new BDictionaryEntities())
     {
         return(db.QuestionCategories.Where(c => c.Id == categoryId).FirstOrDefault());
     }
 }
 public QuestionCategory GetParent(int categoryId)
 {
     using (BDictionaryEntities db = new BDictionaryEntities())
     {
         var parentId = db.QuestionCategories.FirstOrDefault(c => c.Id == categoryId).ParentID;
         return(db.QuestionCategories.FirstOrDefault(c => c.Id == parentId));
     }
 }
        public List <QuestionCategory> GetChildren(int?parentId)
        {
            List <QuestionCategory> result = new List <QuestionCategory>();

            using (BDictionaryEntities db = new BDictionaryEntities())
            {
                foreach (QuestionCategory c in db.QuestionCategories.Where(c => c.ParentID == parentId))
                {
                    result.Add(c);
                }
            }
            return(result);
        }
        public void AddOrUpdate(QuestionCategory category)
        {
            using (BDictionaryEntities db = new BDictionaryEntities())
            {
                QuestionCategory existingCategory = db.QuestionCategories.FirstOrDefault(qc => qc.Id == category.Id);
                if (existingCategory != null)
                {
                    existingCategory.Name       = category.Name;
                    existingCategory.ParentID   = category.ParentID != 0 ? category.ParentID : null;
                    existingCategory.AnswerType = category.AnswerType;

                    List <QuestionAnswer> existingAnswers = db.QuestionAnswers.Where(qa => qa.CategoryID == category.Id).ToList();
                    foreach (QuestionAnswer existingAnswer in existingAnswers)
                    {
                        if (!category.QuestionAnswers.Any(qa => qa.Id == existingAnswer.Id))
                        {
                            db.QuestionAnswers.Remove(existingAnswer);
                        }
                    }

                    foreach (QuestionAnswer modelAnswer in category.QuestionAnswers)
                    {
                        QuestionAnswer existingAnswer = db.QuestionAnswers.Where(qa => qa.Id == modelAnswer.Id).FirstOrDefault();
                        if (existingAnswer == null)
                        {
                            QuestionAnswer newAnswer = new QuestionAnswer()
                            {
                                CategoryID = category.Id,
                                Value      = ParseAnswer(modelAnswer.Value, category.AnswerType)
                            };

                            db.QuestionAnswers.Add(newAnswer);
                        }
                        else
                        {
                            existingAnswer.Value = ParseAnswer(modelAnswer.Value, category.AnswerType);
                        }

                        db.SaveChanges();
                    }
                }
                else
                {
                    QuestionCategory newCategory = new QuestionCategory()
                    {
                        Name       = category.Name,
                        ParentID   = category.ParentID != 0 ? category.ParentID : null,
                        AnswerType = category.AnswerType
                    };

                    db.SaveChanges();

                    foreach (QuestionAnswer modelAnswer in category.QuestionAnswers)
                    {
                        modelAnswer.CategoryID = newCategory.Id;
                        db.QuestionAnswers.Add(modelAnswer);
                    }

                    db.QuestionCategories.Add(newCategory);
                }

                db.SaveChanges();
            }
        }