lv8girl!
This commit is contained in:
98
internal/services/admin.go
Normal file
98
internal/services/admin.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"lv8girl/internal/models"
|
||||
"lv8girl/internal/repositories"
|
||||
)
|
||||
|
||||
type AdminService struct {
|
||||
userRepo *repositories.UserRepository
|
||||
discussionRepo *repositories.DiscussionRepository
|
||||
commentRepo *repositories.CommentRepository
|
||||
likeRepo *repositories.LikeRepository
|
||||
}
|
||||
|
||||
func NewAdminService() *AdminService {
|
||||
return &AdminService{
|
||||
userRepo: repositories.NewUserRepository(),
|
||||
discussionRepo: repositories.NewDiscussionRepository(),
|
||||
commentRepo: repositories.NewCommentRepository(),
|
||||
likeRepo: repositories.NewLikeRepository(),
|
||||
}
|
||||
}
|
||||
|
||||
type Stats struct {
|
||||
Posts int64
|
||||
Users int64
|
||||
Comments int64
|
||||
Likes int64
|
||||
Online int64
|
||||
Approved int64
|
||||
Rejected int64
|
||||
Pending int64
|
||||
}
|
||||
|
||||
func (s *AdminService) GetStats() (*Stats, error) {
|
||||
stats := &Stats{}
|
||||
stats.Posts, _ = s.discussionRepo.Count()
|
||||
stats.Users, _ = s.userRepo.Count()
|
||||
stats.Comments, _ = s.commentRepo.Count()
|
||||
stats.Likes, _ = s.likeRepo.Count()
|
||||
stats.Online, _ = s.userRepo.CountOnline()
|
||||
stats.Approved, _ = s.discussionRepo.CountByStatus("approved")
|
||||
stats.Rejected, _ = s.discussionRepo.CountByStatus("rejected")
|
||||
stats.Pending, _ = s.discussionRepo.CountByStatus("pending")
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
func (s *AdminService) GetPendingPosts() ([]models.Discussion, error) {
|
||||
return s.discussionRepo.FindPending()
|
||||
}
|
||||
|
||||
func (s *AdminService) GetPendingUsers() ([]models.User, error) {
|
||||
return s.userRepo.FindPending()
|
||||
}
|
||||
|
||||
func (s *AdminService) ApprovePost(id uint) error {
|
||||
return s.discussionRepo.UpdateStatus(id, "approved")
|
||||
}
|
||||
|
||||
func (s *AdminService) RejectPost(id uint) error {
|
||||
return s.discussionRepo.UpdateStatus(id, "rejected")
|
||||
}
|
||||
|
||||
func (s *AdminService) DeletePost(id uint) error {
|
||||
return s.discussionRepo.Delete(id)
|
||||
}
|
||||
|
||||
func (s *AdminService) ApproveUser(id uint) error {
|
||||
return s.userRepo.UpdateField(id, "status", "approved")
|
||||
}
|
||||
|
||||
func (s *AdminService) RejectUser(id uint) error {
|
||||
return s.userRepo.UpdateField(id, "status", "rejected")
|
||||
}
|
||||
|
||||
func (s *AdminService) UpdateUserRole(id uint, role string) error {
|
||||
return s.userRepo.UpdateField(id, "role", role)
|
||||
}
|
||||
|
||||
func (s *AdminService) DeleteUser(id uint) error {
|
||||
return s.userRepo.Delete(id)
|
||||
}
|
||||
|
||||
func (s *AdminService) GetAllPosts() ([]models.Discussion, error) {
|
||||
return s.discussionRepo.FindAll()
|
||||
}
|
||||
|
||||
func (s *AdminService) GetAllUsers() ([]models.User, error) {
|
||||
return s.userRepo.FindAll()
|
||||
}
|
||||
|
||||
func (s *AdminService) GetAllComments() ([]models.Comment, error) {
|
||||
return s.commentRepo.FindAll()
|
||||
}
|
||||
|
||||
func (s *AdminService) DeleteComment(id uint) error {
|
||||
return s.commentRepo.Delete(id)
|
||||
}
|
||||
Reference in New Issue
Block a user