public ActionResult AddQuestion(int id, SubjectTypeEnum subjectType) { subjectType = SubjectTypeEnum.判断题; QuestionInputModel question = null; return(View(subjectType.ToString(), question)); }
protected override Yw_SubjectContent GetContent( QuestionInputModel sub, SubjectBll bll, int currentUser, Yw_SubjectContent content) { FillInBlank subject = sub as FillInBlank; Yw_FillInBlankContent derivedContent = null; if (content == null) { derivedContent = new Yw_FillInBlankContent(); derivedContent.Ysc_CreateTime = DateTime.Now; derivedContent.Ysc_Creator = currentUser; derivedContent.Ysc_SubjectType = subject.SubjectType; } else { derivedContent = content as Yw_FillInBlankContent; } derivedContent.Ysc_Editor = currentUser; derivedContent.Ysc_Explain = subject.Explain; derivedContent.Ysc_Content_Obj = new FillInBlankContentObj { Stem = UeditorContentFactory.Blank(subject.Name) }; derivedContent.Ysc_Answer_Obj = new FillInBlankAnswerObj { Correct = subject.Correct.Blanks, Other = subject.Other.Blanks, Perfect = subject.Perfect.Blanks }; derivedContent.Ysc_UpdateTime = DateTime.Now; return(derivedContent); }
protected override Yw_SubjectContent GetContent( QuestionInputModel sub, SubjectBll bll, int currentUser, Yw_SubjectContent content) { TrueFalse subject = sub as TrueFalse; Yw_TrueFalseContent derivedContent = null; if (content == null) { derivedContent = new Yw_TrueFalseContent(); derivedContent.Ysc_CreateTime = DateTime.Now; derivedContent.Ysc_Creator = currentUser; derivedContent.Ysc_SubjectType = subject.SubjectType; } else { derivedContent = content as Yw_TrueFalseContent; } derivedContent.Ysc_Editor = currentUser; derivedContent.Ysc_Explain = subject.Explain; derivedContent.Ysc_Content_Obj = new TrueFalseContentObj { StemType = (int)subject.StemType, Stem = UeditorContentFactory.FetchUrl(subject.Name, subject.StemType) }; derivedContent.Ysc_Answer_Obj = new TrueFalseAnswerObj { Answer = subject.Answer }; derivedContent.Ysc_UpdateTime = DateTime.Now; return(derivedContent); }
public ActionResult Create(QuestionInputModel inputModel) { try { if (ModelState.IsValid) { var question = Mapper.Map <QuestionInputModel, Core.Entities.Question>(inputModel); question.CreatedByUserId = ClaimsUser == null ? null : ClaimsUser.Id; _questionService.Store(question); DocumentSession.SaveChanges(); return(RedirectToAction("Index", "Home", new { area = "" })); } } catch (Exception exception) { ModelState.AddModelError("RuRoh", exception.Message); } var viewModel = new QuestionViewModel(ClaimsUser); Mapper.Map(inputModel, viewModel); return(View("Create", viewModel)); }
public ActionResult <int> PostQuestion(QuestionInputModel questionModel) { Mapper mapper = new Mapper(); QuestionDTO questionDto = mapper.ConvertQuestionInputModelToQuestionDTO(questionModel); AuthorDataAccess questions = new AuthorDataAccess(); var test = questions.GetTestById(questionModel.TestID); if (test == null) { return(BadRequest("Теста не существует")); } if (string.IsNullOrWhiteSpace(questionModel.Value)) { return(BadRequest("Введите вопрос")); } if (questionModel.TypeID == null) { return(BadRequest("Введите тип вопроса")); } if (questionModel.AnswersCount == null) { return(BadRequest("Введите количество ответов на вопрос")); } if (questionModel.Weight == null) { return(BadRequest("Введите вес вопроса")); } return(Ok(questions.AddQuestion(questionDto))); }
public IActionResult Create(QuestionInputModel questionInput) { var questionDTO = new QuestionDTO { Title = questionInput.Title, Text = questionInput.Text, FacultyId = questionInput.FacultyId, Date = DateTime.Now, ApplicationUserId = this._userService.GetUserId(this.User), }; this._questionService.CreateQuestion(questionDTO); if (questionInput.Tags != null) { foreach (var tag in questionInput.Tags) { var tagId = this._tagService.FindOrCreate(tag); this._questionService.AddTag(questionDTO.Id, tagId); } } this._logger.LogInformation($"Question #{questionDTO.Id} created."); return(this.RedirectToAction("Details", "Question", new { id = questionDTO.Id })); }
/// <summary> /// 获取Yw_SubjectContent对象,以及对对象如何操作(添加/更新) /// 用于向数据库添加或更新数据 /// </summary> /// <param name="subject"></param> /// <param name="bll"></param> /// <param name="currentUser"></param> /// <param name="entity"></param> /// <returns></returns> public Action <Yw_SubjectContent> Fetch( QuestionInputModel subject, SubjectBll bll, int currentUser, out Yw_SubjectContent entity) { Check.IfNull(subject, nameof(subject)); if (currentUser < 10000) { throw new ArgumentException( "当前登录用户的ID不能小于10000", nameof(currentUser)); } Action <Yw_SubjectContent> saveContentMethod = null; Yw_SubjectContent contentInDb = bll.GetSubjectContent(subject.Id); if (contentInDb == null) { saveContentMethod = bll.InsertContent; } else { saveContentMethod = bll.UpdateContent; } Yw_SubjectContent content = GetContent(subject, bll, currentUser, contentInDb); entity = content; return(saveContentMethod); }
public async Task <IActionResult> Update(QuestionInputModel model) { await this.questionsService.Update(model.Id, model.Text); var page = this.HttpContext.Session.GetInt32(Constants.PageToReturnTo); return(this.RedirectToAction("Display", "Quizzes", new { page })); }
public async Task <IActionResult> AddNewQuestion(QuestionInputModel model) { var quizId = this.HttpContext.Session.GetString(Constants.QuizSeesionId); var questionId = await this.questionService.CreateQuestionAsync(quizId, model.Text); this.HttpContext.Session.SetString(Constants.CurrentQuestionId, questionId); return(this.RedirectToAction("AnswerInput", "Answers")); }
protected override ICollection <string> ResolveCore(QuestionInputModel createInputModel) { if (createInputModel == null || createInputModel.Tags == null) { return(null); } return(createInputModel.Tags.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)); }
public async Task <IActionResult> AddQuestion(QuestionInputModel input) { var user = await this.userManager.GetUserAsync(this.User); var email = user.Email; await this.service.AddQuestionAsync(input.Text, email); return(this.Redirect("/QuestionsAndAnswers/All")); }
public static IList <Yw_SubjectKnowledge> Fetch( QuestionInputModel subject, SubjectBll bll, int currentUser, out IEnumerable <int> toDelete) { Check.IfNull(subject, nameof(subject)); Check.IfNull(bll, nameof(bll)); if (currentUser < 10000) { throw new ArgumentException( "当前登录用户的ID不能小于10000", nameof(currentUser)); } DateTime now = DateTime.Now; IEnumerable <Yw_SubjectKnowledge> knowledgeEntities = bll.GetKnowledgesBySubject(subject.Id); IEnumerable <Yw_SubjectKnowledge> secondaryKnowledgeEntities = knowledgeEntities.Where(k => !k.Ysw_IsMain); //前台传过来的次级知识点 IList <int> knowledges = new List <int>(); if (subject.Knowledges.HasValue()) { knowledges = subject.Knowledges.Split(',').Select(k => int.Parse(k)).ToList(); } //需要添加的次级知识点 IEnumerable <Yw_SubjectKnowledge> knowledgesToAdd = null; //需要删除的次级知识点 IEnumerable <int> idsOfknowledgeToDelete = null; //数据库的次级知识点 var knowledgesInDb = secondaryKnowledgeEntities.Select(k => k.Ysw_KnowledgeId); knowledgesToAdd = knowledges.Except(knowledgesInDb) .Select(k => new Yw_SubjectKnowledge { Ysw_KnowledgeId = k, Ysw_IsMain = false, Ysw_CreateTime = now, Ysw_Creator = currentUser, Ysw_UpdateTime = now, Ysw_Editor = currentUser }); var knowledgesToDelete = knowledgesInDb.Except(knowledges); idsOfknowledgeToDelete = secondaryKnowledgeEntities .Where(k => knowledgesToDelete.Contains(k.Ysw_KnowledgeId)) .Select(k => k.Ysw_Id); toDelete = idsOfknowledgeToDelete; return(knowledgesToAdd.ToList()); }
public QuestionDTO ConvertQuestionInputModelToQuestionDTO(QuestionInputModel questionmodel) { return(new QuestionDTO() { TestID = questionmodel.TestID, Value = questionmodel.Value, TypeID = questionmodel.TypeID, AnswersCount = questionmodel.AnswersCount, Weight = questionmodel.Weight, }); }
public static Action <Yw_Subject> Fetch( QuestionInputModel subject, SubjectBll bll, int currentUser, out Yw_Subject entity) { Check.IfNull(subject, nameof(subject)); if (currentUser < 10000) { throw new ArgumentException( "当前登录用户的ID不能小于10000", nameof(currentUser)); } Action <Yw_Subject> saveSubject = null; Yw_Subject subjectEntity = null; if (subject.Id == 0) { subjectEntity = new Yw_Subject(); subjectEntity.Ysj_CreateTime = DateTime.Now; subjectEntity.Ysj_Creator = currentUser; subjectEntity.Ysj_Status = (int)SubjectStatusEnum.编辑中; saveSubject = bll.InsertSubject; } else { subjectEntity = bll.GetSubject(subject.Id); saveSubject = bll.UpdateSubject; } subjectEntity.Ysj_UpdateTime = DateTime.Now; if (!string.IsNullOrWhiteSpace(subject.PlainName)) { string n = subject.PlainName; if (n.Length <= 50) { subjectEntity.Ysj_Name = n; } else { subjectEntity.Ysj_Name = n.Substring(0, 50); } } subjectEntity.Ysj_Keywords = subject.Keywords; subjectEntity.Ysj_Grade = subject.Grade; subjectEntity.Ysj_Editor = currentUser; subjectEntity.Ysj_Difficulty = subject.Difficulty; subjectEntity.Ysj_SubjectType = subject.SubjectType; subjectEntity.Ysj_MainKnowledgeId = subject.Knowledge; entity = subjectEntity; return(saveSubject); }
protected override Yw_SubjectContent GetContent( QuestionInputModel sub, SubjectBll bll, int currentUser, Yw_SubjectContent content) { MultipleChoice subject = sub as MultipleChoice; Yw_SubjectSelectContent selectContent = null; if (content == null) { selectContent = new Yw_SubjectSelectContent(); selectContent.Ysc_CreateTime = DateTime.Now; selectContent.Ysc_Creator = currentUser; selectContent.Ysc_SubjectType = subject.SubjectType; } else { selectContent = content as Yw_SubjectSelectContent; } selectContent.Ysc_Editor = currentUser; selectContent.Ysc_Explain = subject.Explain; if (subject.ContentType == UeditorType.Image) { subject.Options = subject.Options.Select(o => UeditorContentFactory.FetchUrl(o, subject.ContentType)).ToList(); } var options = subject.Options .Select((o, i) => new SubjectOption { Text = o, Key = i }) .ToList(); selectContent.Ysc_Answer_Obj = new SubjectSelectAnswerObj { Answers = subject.Answers }; string stem = UeditorContentFactory.FetchUrl(subject.Name, subject.StemType); selectContent.Ysc_Content_Obj = new SubjectSelectContentObj { StemType = (int)subject.StemType, Stem = stem, ContentType = (int)subject.ContentType, Options = options, Display = subject.Display, Random = subject.Random }; selectContent.Ysc_UpdateTime = DateTime.Now; return(selectContent); }
public async Task <IActionResult> CreateAsync(QuestionInputModel model) { if (!this.ModelState.IsValid) { return(this.View(model)); } var user = await this.userManager.GetUserAsync(this.User); var questionId = await this.questionsService.CreateAsync(model.Title, model.Description, user.Id); return(this.RedirectToAction("ById", new { id = questionId })); }
public static IList <Yw_SubjectIndex> Fetch( QuestionInputModel subject, SubjectBll bll, int currentUser, out IList <int> toDelete) { Check.IfNull(subject, nameof(subject)); Check.IfNull(bll, nameof(bll)); if (currentUser < 10000) { throw new ArgumentException( "当前登录用户的ID不能小于10000", nameof(currentUser)); } DateTime now = DateTime.Now; //前端传值过来的关键词 IList <string> keywords = new List <string>(); if (!string.IsNullOrWhiteSpace(subject.Keywords)) { keywords = subject.Keywords.Split(','); } //数据库中的关键词 IEnumerable <Yw_SubjectIndex> keywordEntities = bll.GetKeywordsBySubject(subject.Id); //要删除的关键词 IList <int> keywordIdsToDelete = null; //要添加的关键词 IList <Yw_SubjectIndex> keywordsToAdd = null; IEnumerable <string> keywordsInDb = keywordEntities.Select(k => k.Ysi_Keyword); IEnumerable <string> keywordsToDelete = keywordsInDb.Except(keywords); keywordIdsToDelete = keywordEntities.Where(k => keywordsToDelete.Contains(k.Ysi_Keyword)) .Select(k => k.Ysi_Id) .ToList(); keywordsToAdd = keywords.Except(keywordsInDb) .Select(k => new Yw_SubjectIndex { Ysi_CreateTime = now, Ysi_Creator = currentUser, Ysi_Difficulty = subject.Difficulty, Ysi_Id = 0, Ysi_Keyword = k }).ToList(); toDelete = keywordIdsToDelete; return(keywordsToAdd); }
public async Task <string> Create(QuestionInputModel model) { var cloudinary = SetCloudinary(); var url = await UploadImage(cloudinary, model.Image, model.QuestionText); var question = Mapper.Map <Question>(model); question.ImageUrl = url ?? GlobalConstants.NoImageAvailableUrl; this.Context.Questions.Add(question); await this.Context.SaveChangesAsync(); return(question.Id); }
public async Task <IActionResult> Create(QuestionInputModel model) { if (!this.ModelState.IsValid) { this.ViewData[GlobalConstants.ExamId] = model.ExamId; return(this.View()); } await this.questionService.Create(model); return(this.RedirectToAction("Index", "Home")); //var assembly = this.assemblyService.GetAssemblyById(model.AssemblyId); //return this.RedirectToAction("Details", "Robots", new { id = assembly.RobotId }); }
public static Action<Yw_SubjectKnowledge> Fetch( QuestionInputModel subject, SubjectBll bll, int currentUser, out Yw_SubjectKnowledge entity) { Check.IfNull(subject, nameof(subject)); Check.IfNull(bll, nameof(bll)); if (currentUser < 10000) { throw new ArgumentException( "当前登录用户的ID不能小于10000", nameof(currentUser)); } DateTime now = DateTime.Now; Action<Yw_SubjectKnowledge> saveKnowledge = null; IEnumerable<Yw_SubjectKnowledge> knowledgeEntities = bll.GetKnowledgesBySubject(subject.Id); Yw_SubjectKnowledge mainKnowledgeEntity = knowledgeEntities.FirstOrDefault(k => k.Ysw_IsMain); if (subject.Knowledge == 0)//不在指定主知识点 { saveKnowledge = bll.DeleteKnowledge; } else { if (mainKnowledgeEntity == null) { mainKnowledgeEntity = new Yw_SubjectKnowledge(); mainKnowledgeEntity.Ysw_IsMain = true; mainKnowledgeEntity.Ysw_CreateTime = now; mainKnowledgeEntity.Ysw_Creator = currentUser; saveKnowledge = bll.InsertMainKnowledge; } else { mainKnowledgeEntity.EnableAudit(); saveKnowledge = bll.UpdateMainKnowledge; } mainKnowledgeEntity.Ysw_Editor = currentUser; mainKnowledgeEntity.Ysw_KnowledgeId = subject.Knowledge; mainKnowledgeEntity.Ysw_UpdateTime = now; } entity = mainKnowledgeEntity; return saveKnowledge; }
public void GivenAValidQuestionAndNoOneIsLoggedIn_Create_ReturnsAResultView() { // Arrange. var questionService = new QuestionService(DocumentSession); var questionsController = new QuestionsController(DocumentSession, questionService); ControllerUtilities.SetUpControllerContext(questionsController); var createInputModel = new QuestionInputModel(); // Act. var result = questionsController.Create(createInputModel) as ViewResult; // Assert. Assert.NotNull(result); Assert.Equal("Create", result.ViewName); }
[HttpPost] // Authorize public ActionResult Ask(QuestionInputModel inputModel) { if (ModelState.IsValid) { var q = inputModel.ToQuestion(); q.CreatedBy = "users/1"; // Just a stupid default because we haven't implemented log-in RavenSession.Store(q); RavenSession.Store(new Stats(), q.Id + "/stats"); return(RedirectToAction("Index", "Home", new { area = "" })); } var viewModel = new AskViewModel(User); viewModel.Question = inputModel; return(View(viewModel)); }
public void GivenAnInvalidQuestion_Create_ReturnsAResultView() { // Arrange. var questionService = new QuestionService(DocumentSession); var questionsController = new QuestionsController(DocumentSession, questionService); ControllerUtilities.SetUpControllerContext(questionsController); var createInputModel = new QuestionInputModel(); // Now pretend the model binding raised an error with the input model. questionsController.ModelState.AddModelError("key", "error message"); // Act. var result = questionsController.Create(createInputModel) as ViewResult; // Assert. Assert.NotNull(result); Assert.Equal("Create", result.ViewName); }
[HttpPost] // Authorize public ActionResult Ask(QuestionInputModel inputModel) { if (ModelState.IsValid) { var q = inputModel.ToQuestion(); q.CreatedBy = "users/1"; // Just a stupid default because we haven't implemented log-in return(RedirectToAction("Index", "Home", new { area = "" })); } dynamic viewModel = new ExpandoObject(); viewModel.User = new UserViewModel(User) { Id = User.Identity.Name, Name = User.Identity.Name }; viewModel.Question = inputModel; return(View(viewModel)); }
public async Task E_GetByIdAsyncShouldReturnCorrectModel() { AutoMapperConfig.RegisterMappings(typeof(QuestionInputModel).GetTypeInfo().Assembly); var text = "First question text"; var quizId = await this.CreateQuizAsync(); var newQuestionId = await this.Service.CreateQuestionAsync(quizId, text); var model = new QuestionInputModel() { Id = newQuestionId, Text = text, }; var resultModel = await this.Service.GetByIdAsync <QuestionInputModel>(newQuestionId); Assert.Equal(model.Id, resultModel.Id); Assert.Equal(model.Text, resultModel.Text); }
public HttpResponseMessage PostQuestion(QuestionInputModel question) { var dto = question.ToDto(); using (var ctx = _contextFactory.CreateContext()) { ctx.Questions.Add(dto); ctx.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.Created, new QuestionInputResultModel { AnswerText = dto.AnswerText, QuestionText = dto.QuestionText, QuestionHint = dto.QuestionHint, QuestionId = dto.QuestionId })); }
public ActionResult GetDetails2(int id = 0) { SubjectBll bll = new SubjectBll(); DtoSubject subject = bll.GetSubjectDetails2(id); QuestionInputModel derived = ConvertToDerived2(subject?.Content); if (subject != null) { derived.Difficulty = subject.Difficulty; derived.Explain = subject.Content.Ysc_Explain; derived.Grade = subject.Grade; derived.Id = subject.Id; derived.Mark = subject.Mark; derived.SubjectStatus = (SubjectStatusEnum)subject.Status; derived.Keywords = subject.Keywords; derived.Knowledge = subject.MainKnowledge; derived.KnowledgeText = subject.MainKnowledgeName; derived.Knowledges = string.Join(",", subject.Knowledges); derived.KnowledgeTexts = subject.KnowledgeNames; derived.PlainName = subject.Name; derived.Name = FormatStem(derived.Name); } else { derived.Difficulty = 0; derived.Explain = string.Empty; derived.Grade = 0; derived.Id = 0; derived.Mark = new List <string>(); derived.SubjectStatus = SubjectStatusEnum.编辑中; derived.Keywords = string.Empty; derived.Knowledge = 0; derived.KnowledgeText = string.Empty; derived.Knowledges = string.Empty; derived.KnowledgeTexts = new List <string>(); derived.PlainName = string.Empty; derived.Name = string.Empty; } var response = new SuccessJsonResponse(derived); return(Json(response, JsonRequestBehavior.AllowGet)); }
protected override Yw_SubjectContent GetContent( QuestionInputModel sub, SubjectBll bll, int currentUser, Yw_SubjectContent content) { Mark2 subject = sub as Mark2; Yw_SubjectMark2Content selectContent = null; if (content == null) { selectContent = new Yw_SubjectMark2Content(); selectContent.Ysc_CreateTime = DateTime.Now; selectContent.Ysc_Creator = currentUser; selectContent.Ysc_SubjectType = subject.SubjectType; } else { selectContent = content as Yw_SubjectMark2Content; } selectContent.Ysc_Editor = currentUser; selectContent.Ysc_Explain = subject.Explain; selectContent.Ysc_Content_Obj = new SubjectMark2ContentObj { Alignment = subject.Alignment, Color = subject.Color, Content = subject.Content, Stem = UeditorContentFactory.FetchUrl(subject.Name, subject.StemType), StemType = (int)subject.StemType }; selectContent.Ysc_Answer_Obj = new SubjectMark2AnswerObj { Answers = GenareteAnswers(subject.Content) }; selectContent.Ysc_UpdateTime = DateTime.Now; return(selectContent); }
public void GivenAValidQuestionAndALoggedInUser_Create_AddsTheQuestionAndRedicects() { // Arrange. var questionService = new QuestionService(DocumentSession); var questionsController = new QuestionsController(DocumentSession, questionService); ControllerUtilities.SetUpControllerContext(questionsController, "users/1"); var createInputModel = new QuestionInputModel() { Subject = "aaaad fdds fsd ds", Content = "sdhfskfhksd sd", Tags = "ahdakjdh" }; // Act. var result = questionsController.Create(createInputModel) as RedirectToRouteResult; // Assert. Assert.NotNull(result); Assert.Equal("Index", result.RouteValues["action"]); }
public ActionResult GetReadonlyDetails(int id) { SubjectBll bll = new SubjectBll(); DtoSubject subject = bll.GetSubjectDetails(id); QuestionInputModel derived = ConvertToDerived(subject.Content); derived.Difficulty = subject.Difficulty; derived.Explain = subject.Content.Ysc_Explain; derived.Grade = subject.Grade; derived.Id = subject.Id; derived.Mark = subject.Mark; derived.SubjectStatus = (SubjectStatusEnum)subject.Status; derived.Keywords = subject.Keywords; derived.Knowledge = subject.MainKnowledge; derived.KnowledgeText = subject.MainKnowledgeName; derived.Knowledges = string.Join(",", subject.Knowledges); derived.KnowledgeTexts = subject.KnowledgeNames; derived.PlainName = subject.Name; derived.Name = FormatReadonlyStem(derived.Name); var response = new SuccessJsonResponse(derived); return(Json(response, JsonRequestBehavior.AllowGet)); }