mchstest/internal/model/mtparse.go
2023-01-19 15:10:14 +10:00

76 lines
1.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import (
"strconv"
"strings"
excelize "github.com/xuri/excelize/v2"
)
type MTParseT struct {
QuestionNumber int `json:"question_number"`
QuestionCount int `json:"questions_count"`
ContentQuestion string `json:"content_question"`
Answers []AnswerT `json:"answers"`
}
type AnswerT struct {
Title string `json:"title"`
Correct bool `json:"correct"`
}
func (data *MTType) Parse() MTParseT {
var ret MTParseT
ret.QuestionNumber = data.QuestionNumber
ret.QuestionCount = data.QuestionCount
ret.ContentQuestion = data.CurrentQuestion.Content
answers := strings.Split(data.ValidAnswers, ",")
for _, d := range data.CurrentAnswers {
var a AnswerT
a.Title = d.Title
for _, as := range answers {
if d.Id.String() == as {
a.Correct = true
}
}
ret.Answers = append(ret.Answers, a)
}
return ret
}
func SaveToExel(filename string, data *[]MTParseT) error {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
return
}
}()
// Create a new sheet.
f.SetCellValue("Sheet1", "A2", "№ п/п")
f.SetCellValue("Sheet1", "B2", "ВОПРОСЫ")
f.SetCellValue("Sheet1", "C2", "Варианты ответа")
f.SetCellValue("Sheet1", "D2", "Результат")
i := 3
for _, d := range *data {
f.SetCellValue("Sheet1", "A"+strconv.Itoa(i), d.QuestionNumber)
f.SetCellValue("Sheet1", "B"+strconv.Itoa(i), d.ContentQuestion)
for _, a := range d.Answers {
f.SetCellValue("Sheet1", "C"+strconv.Itoa(i), a.Title)
if a.Correct {
f.SetCellValue("Sheet1", "D"+strconv.Itoa(i), "ПРАВИЛЬНЫЙ ОТВЕТ")
} else {
f.SetCellValue("Sheet1", "D"+strconv.Itoa(i), "Ответ не верный")
}
i++
}
i++
}
// Save spreadsheet by the given path.
if err := f.SaveAs(filename); err != nil {
return err
}
return nil
}