public ActionResult AskQuestion()
        {
            AskQuestionViewModel askQuestionViewModel = new AskQuestionViewModel();
            UnitOfWork           unitOfWork           = new UnitOfWork();

            unitOfWork.CategoryRepository.GetAll().ForEach(x => askQuestionViewModel.AllCategories.Add(new CategoryViewModel(x)));
            return(View(askQuestionViewModel));
        }
        public ActionResult AskQuestion(AskQuestionViewModel askQuestionViewModel)
        {
            if (string.IsNullOrWhiteSpace(askQuestionViewModel.Title))
            {
                ModelState.AddModelError("", "Please enter a valid question title");
                UnitOfWork unitOfWork = new UnitOfWork();
                unitOfWork.CategoryRepository.GetAll().ForEach(x => askQuestionViewModel.AllCategories.Add(new CategoryViewModel(x)));
                return(View(askQuestionViewModel));
            }

            if (string.IsNullOrWhiteSpace(askQuestionViewModel.QuestionText))
            {
                ModelState.AddModelError("", "Please enter a valid question");
                UnitOfWork unitOfWork = new UnitOfWork();
                unitOfWork.CategoryRepository.GetAll().ForEach(x => askQuestionViewModel.AllCategories.Add(new CategoryViewModel(x)));
                return(View(askQuestionViewModel));
            }

            if (askQuestionViewModel.ChosenCategoriesIds.Count == 0)
            {
                ModelState.AddModelError("", "Please choose at least 1 category");
                UnitOfWork unitOfWork = new UnitOfWork();
                unitOfWork.CategoryRepository.GetAll().ForEach(x => askQuestionViewModel.AllCategories.Add(new CategoryViewModel(x)));
                return(View(askQuestionViewModel));
            }

            if (ModelState.IsValid)
            {
                UnitOfWork unitOfWork    = new UnitOfWork();
                Question   questionInput = new Question();
                questionInput.Title        = askQuestionViewModel.Title;
                questionInput.QuestionText = askQuestionViewModel.QuestionText;
                questionInput.DateAsked    = DateTime.Now;
                questionInput.UserId       = LoginUserSession.Current.UserID;
                questionInput.IsDeleted    = false;
                askQuestionViewModel.ChosenCategoriesIds.ForEach(c => questionInput.Categories.Add(unitOfWork.CategoryRepository.GetFirst(x => x.Id == c)));
                unitOfWork.QuestionRepository.Create(questionInput);
                bool isAdded = unitOfWork.Save() > 0;
                if (isAdded)
                {
                    TempData["Message"] = "Question asked successfully";
                }
                else
                {
                    TempData["Message"] = "Ooops something went wrong";
                }
                return(RedirectToAction("Index", "Home"));
            }
            return(RedirectToAction("AskQuestion", "Questions"));
        }
        public ActionResult EditQuestion(AskQuestionViewModel editQuestionViewModel)
        {
            if (editQuestionViewModel.QuestionId == 0)
            {
                TempData["ErrorMessage"] = "Question not found";
                return(RedirectToAction("Index", "Home"));
            }

            if (string.IsNullOrWhiteSpace(editQuestionViewModel.Title))
            {
                ModelState.AddModelError("", "Please enter a valid question title");
                TempData["ErrorMessage"] = "Please enter a valid question title";
            }

            if (string.IsNullOrWhiteSpace(editQuestionViewModel.QuestionText))
            {
                ModelState.AddModelError("", "Please enter a valid question");
                TempData["ErrorMessage"] = "Please enter a valid question";
            }

            if (editQuestionViewModel.ChosenCategoriesIds.Count == 0)
            {
                ModelState.AddModelError("", "Please choose at least 1 category");
                TempData["ErrorMessage"] = "Please choose at least 1 category";
            }

            if (ModelState.IsValid)
            {
                UnitOfWork unitOfWork = new UnitOfWork();
                Question   questionDb = unitOfWork.QuestionRepository.GetFirst(x => x.Id == editQuestionViewModel.QuestionId);
                questionDb.Title        = editQuestionViewModel.Title;
                questionDb.QuestionText = editQuestionViewModel.QuestionText;
                questionDb.UserId       = LoginUserSession.Current.UserID;
                questionDb.IsDeleted    = false;
                questionDb.Categories.Clear();
                editQuestionViewModel.ChosenCategoriesIds.ForEach(c => questionDb.Categories.Add(unitOfWork.CategoryRepository.GetFirst(x => x.Id == c)));
                bool isAdded = unitOfWork.Save() > 0;
                if (isAdded)
                {
                    TempData["Message"] = "Question edited successfully";
                }
                else
                {
                    TempData["Message"] = "Ooops something went wrong";
                }
                return(RedirectToAction("Index", "Home"));
            }
            return(RedirectToAction("EditQuestion", editQuestionViewModel.QuestionId));
        }
Пример #4
0
        public IActionResult Ask(AskQuestionViewModel askQuestionModel)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            User user = _dataService.GetUser(this.User.Identity.Name);

            var q = new Question
            {
                UserId      = user.Id,
                Text        = askQuestionModel.Text,
                Title       = askQuestionModel.Title,
                DateCreated = System.DateTime.Now
            };

            _dataService.AddQuestion(q);

            return(RedirectToAction("Index"));
        }
Пример #5
0
        public IActionResult AskQuestion(int questionId)
        {
            AskQuestionViewModel askQuestionViewModel = new AskQuestionViewModel();

            askQuestionViewModel.classesViewModel = new List <ClassViewModel>();

            using (var unitOfWork = new UnitOfWork(new CuriousDriveContext()))
            {
                List <Class> classes = unitOfWork.Classes.GetAll().ToList();

                foreach (Class @class in classes)
                {
                    ClassViewModel classViewModel = new ClassViewModel();

                    classViewModel.classId   = @class.ClassId;
                    classViewModel.className = @class.ClassName;

                    askQuestionViewModel.classesViewModel.Add(classViewModel);
                }
            }

            return(View(askQuestionViewModel));
        }
        public ActionResult EditQuestion(int id)
        {
            UnitOfWork unitOfWork = new UnitOfWork();
            User       userDb     = unitOfWork.UserRepository.GetFirst(x => x.Id == LoginUserSession.Current.UserID);

            if (!userDb.Questions.Any(x => x.Id == id && x.IsDeleted == false))
            {
                ModelState.AddModelError("", "Question not found");
                TempData["ErrorMessage"] = "Question not found";
            }

            if (ModelState.IsValid)
            {
                Question             questionDb            = userDb.Questions.FirstOrDefault(x => x.Id == id);
                AskQuestionViewModel editQuestionViewModel = new AskQuestionViewModel(questionDb.Categories.ToList()); //already checked categories
                editQuestionViewModel.Title        = questionDb.Title;
                editQuestionViewModel.QuestionText = questionDb.QuestionText;
                editQuestionViewModel.QuestionId   = questionDb.Id;
                unitOfWork.CategoryRepository.GetAll().Where(x => !editQuestionViewModel.CheckedCategories.Any(c => c.Id == x.Id)).ToList().ForEach(x => editQuestionViewModel.AllCategories.Add(new CategoryViewModel(x)));
                return(View(editQuestionViewModel));
            }

            return(RedirectToAction("Index", "Home"));
        }
Пример #7
0
        public IActionResult AskQuestion(IFormCollection formCollection, AskQuestionViewModel askQuestionViewModel, string submitType)
        {
            using (var unitOfWork = new UnitOfWork(new CuriousDriveContext()))
            {
                int userId = HttpContext.Session.GetInt32("UserId") ?? 0;
                if (submitType == "UpdateQuestion")
                {
                    //new QuestionService().UpdateQuestion(aQuestion, lintUserId);
                    return(RedirectToAction("Question", new
                    {
                        id = askQuestionViewModel.questionId,
                        title = ""
                    }));
                }
                else if (submitType == "CancelUpdateQuestion")
                {
                    return(RedirectToAction("Question", new
                    {
                        id = askQuestionViewModel.questionId,
                        title = ""
                    }));
                }
                else
                {
                    Question question = new Question();

                    question.UserId        = userId;
                    question.QuestionTitle = askQuestionViewModel.questionTitle;
                    question.QuestionHtml  = askQuestionViewModel.questionHtml;

                    question.CreatedBy = question.ModifiedBy = userId;

                    //tag classes
                    string classIds = formCollection["txtClassIds"];

                    if (classIds.Length > 0)
                    {
                        question.QuestionClass = new List <QuestionClass>();

                        foreach (string classId in classIds.Split(','))
                        {
                            QuestionClass questionClass = new QuestionClass();
                            questionClass.ClassId = Convert.ToInt32(classId);

                            question.QuestionClass.Add(questionClass);
                        }
                    }

                    //tag users
                    string taggedUserIds = formCollection["txtUserTags"];

                    if (taggedUserIds.Length > 0)
                    {
                        question.Tag = new List <Tag>();

                        foreach (string taggedUserId in taggedUserIds.Split(','))
                        {
                            Tag tag = new Tag();

                            tag.UserGroupTypeId    = Constant.UserGroupTypeId;
                            tag.UserGroupTypeValue = Constant.UserGroupTypeIndividual;
                            tag.CreatedBy          = tag.ModifiedBy = userId;

                            tag.TagDetail = new List <TagDetail>();

                            TagDetail tagDetail = new TagDetail();
                            tagDetail.TaggedUserId = Convert.ToInt32(taggedUserId);

                            tag.TagDetail.Add(tagDetail);
                            question.Tag.Add(tag);
                        }
                    }

                    unitOfWork.Questions.Add(question);
                    unitOfWork.Complete();

                    return(RedirectToAction("Question", "Question", new { questionId = question.QuestionId }));
                }
            }
        }