cslms-api/internal/services/userquizpaper.go
2023-12-27 17:31:49 +09:00

84 lines
2.2 KiB
Go

package services
import (
"learnsteam/cslms-api/internal/models"
"learnsteam/cslms-api/internal/repositories"
"github.com/google/uuid"
)
type userQuizPaperService struct {
repository repositories.UserQuizPaperRepository
}
type UserQuizPaperService interface {
List(string, int, int) (*[]models.UserQuizPaper, error)
Total(string) (int64, error)
Find(int64) (*models.UserQuizPaper, error)
Create(*models.UserQuizPaper) (*models.UserQuizPaper, error)
Insert([]models.UserQuizPaper) ([]models.UserQuizPaper, error)
Update(*models.UserQuizPaper) (*models.UserQuizPaper, error)
Delete(string) error
Generate([]int64, *models.QuizPaper) []models.UserQuizPaper
}
func NewUserQuizPaperService(repository repositories.UserQuizPaperRepository) UserQuizPaperService {
return &userQuizPaperService{
repository: repository,
}
}
func (s *userQuizPaperService) List(q string, page int, limit int) (*[]models.UserQuizPaper, error) {
return s.repository.List(q, page, limit)
}
func (s *userQuizPaperService) Total(q string) (int64, error) {
return s.repository.Total(q)
}
func (s *userQuizPaperService) Find(id int64) (*models.UserQuizPaper, error) {
return s.repository.Find(id)
}
func (s *userQuizPaperService) Create(userQuizPaper *models.UserQuizPaper) (*models.UserQuizPaper, error) {
result, err := s.repository.Create(userQuizPaper)
return result, err
}
func (s *userQuizPaperService) Insert(items []models.UserQuizPaper) ([]models.UserQuizPaper, error) {
result, err := s.repository.Insert(items)
return result, err
}
func (s *userQuizPaperService) Update(userQuizPaper *models.UserQuizPaper) (*models.UserQuizPaper, error) {
result, err := s.repository.Update(userQuizPaper)
return result, err
}
func (s *userQuizPaperService) Delete(id string) error {
err := s.repository.Delete(id)
return err
}
func (s *userQuizPaperService) Generate(users []int64, quizPaper *models.QuizPaper) []models.UserQuizPaper {
var userQuizPapers []models.UserQuizPaper
for _, user_id := range users {
userQuizPaper := models.UserQuizPaper{
GUID: uuid.NewString(),
CenterID: quizPaper.CenterID,
UserID: user_id,
QuizPaperID: quizPaper.ID,
}
userQuizPapers = append(userQuizPapers, userQuizPaper)
}
return userQuizPapers
}