86 lines
1.9 KiB
Go
86 lines
1.9 KiB
Go
|
package services
|
||
|
|
||
|
import (
|
||
|
"learnsteam/cslms-api/internal/models"
|
||
|
"learnsteam/cslms-api/internal/repositories"
|
||
|
"time"
|
||
|
|
||
|
"github.com/google/uuid"
|
||
|
)
|
||
|
|
||
|
type quizService struct {
|
||
|
repository repositories.QuizRepository
|
||
|
}
|
||
|
|
||
|
type QuizService interface {
|
||
|
List(int64, int, int) (*[]models.Quiz, error)
|
||
|
Total(int64) (int64, error)
|
||
|
|
||
|
Find(int64) (*models.Quiz, error)
|
||
|
Create(*models.Quiz) (*models.Quiz, error)
|
||
|
Update(*models.Quiz) (*models.Quiz, error)
|
||
|
Delete(int64) error
|
||
|
}
|
||
|
|
||
|
func NewQuizService(repository repositories.QuizRepository) QuizService {
|
||
|
return &quizService{
|
||
|
repository: repository,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (s *quizService) List(quiz_paper_id int64, page int, limit int) (*[]models.Quiz, error) {
|
||
|
return s.repository.List(quiz_paper_id, page, limit)
|
||
|
}
|
||
|
|
||
|
func (s *quizService) Total(quiz_paper_id int64) (int64, error) {
|
||
|
return s.repository.Total(quiz_paper_id)
|
||
|
}
|
||
|
|
||
|
func (s *quizService) Find(id int64) (*models.Quiz, error) {
|
||
|
return s.repository.Find(id)
|
||
|
}
|
||
|
|
||
|
func (s *quizService) Create(quiz *models.Quiz) (*models.Quiz, error) {
|
||
|
result, err := s.repository.Create(quiz)
|
||
|
|
||
|
return result, err
|
||
|
}
|
||
|
|
||
|
func (s *quizService) Update(quiz *models.Quiz) (*models.Quiz, error) {
|
||
|
result, err := s.repository.Update(quiz)
|
||
|
|
||
|
return result, err
|
||
|
}
|
||
|
|
||
|
func (s *quizService) Delete(id int64) error {
|
||
|
err := s.repository.Delete(id)
|
||
|
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (s *quizService) Generate(quizpaper *models.QuizPaper) ([]models.Quiz, error) {
|
||
|
templates, err := s.repository.List(quizpaper.ID, 1, 1000)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var quizzes []models.Quiz
|
||
|
for _, q := range *templates {
|
||
|
quiz := models.Quiz{
|
||
|
GUID: uuid.NewString(),
|
||
|
CenterID: quizpaper.CenterID,
|
||
|
QuizPaperID: quizpaper.ID,
|
||
|
No: q.No,
|
||
|
QuestionType: q.QuestionType,
|
||
|
Question: q.Question,
|
||
|
Content: q.Content,
|
||
|
Answer: q.Answer,
|
||
|
UpdatedAt: time.Now(),
|
||
|
CreatedAt: time.Now(),
|
||
|
}
|
||
|
quizzes = append(quizzes, quiz)
|
||
|
}
|
||
|
|
||
|
return quizzes, nil
|
||
|
}
|