func (c SecuredApplication) SaveQuestion(mpNumString string, questionNumString string) revel.Result { var answer string mpNum, err := strconv.Atoi(mpNumString) questionNum, err := strconv.Atoi(questionNumString) c.Params.Bind(&answer, "answer") if answer == "" { return c.RenderJson(map[string]interface{}{ "status": "error", "data": "Blank answer was not saved.", }) } user := c.connected() mp, err := models.FindOrCreateMachineProblemByUser(user, mpNum) if err != nil { return c.RenderJson(map[string]interface{}{ "status": "error", "data": "Cannot find machine problem.", }) } conf, _ := ReadMachineProblemConfig(mp.Number) if MachineProblemCodingDeadlineExpiredQ(conf) { return c.RenderJson(map[string]interface{}{ "status": "error-deadline", "data": "Coding deadline has passed.", }) } questions, err := models.FindOrCreateQuestionsByMachineProblem(mp) if err != nil { return c.RenderJson(map[string]interface{}{ "status": "error", "data": "Error: create questions.", }) } err = models.SaveQuestion(mp, questions, int64(questionNum), answer) stats.Incr("App", "QuestionSave") return c.RenderJson(map[string]interface{}{ "status": "success", "data": answer, }) }
func machineProblemQuestions(user models.User, mp models.MachineProblem) ([]models.QuestionItem, error) { questions, err := models.FindOrCreateQuestionsByMachineProblem(mp) if err != nil { return nil, err } questionItems, err := models.FindQuestionItems(mp, questions) if err != nil { stats.TRACE.Println("Cannot get question items.") return nil, err } return questionItems, nil }
func (c SecuredApplication) QuestionHistory(mpNumString string, questionNumString string) revel.Result { mpNum, err := strconv.Atoi(mpNumString) if err != nil { c.Flash.Error("Invalid mp number") return c.Render(routes.PublicApplication.Index()) } questionNum, err := strconv.Atoi(questionNumString) if err != nil { c.Flash.Error("Invalid question number") return c.Render(routes.PublicApplication.Index()) } user := c.connected() mp, err := models.FindOrCreateMachineProblemByUser(user, mpNum) if err != nil { c.Flash.Error("Invalid mp Id") return c.Render(routes.PublicApplication.Index()) } qs, err := models.FindOrCreateQuestionsByMachineProblem(mp) if err != nil { c.Flash.Error("Invalid questions") return c.Render(routes.PublicApplication.Index()) } q, err := models.FindQuestionHistory(qs, int64(questionNum)) if err != nil { c.Flash.Error("Invalid question items") return c.Render(routes.PublicApplication.Index()) } c.RenderArgs["mp"] = mp c.RenderArgs["number"] = questionNum c.RenderArgs["questions"] = q return c.Render() }