30 lines
689 B
Go
30 lines
689 B
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"hyapp/pkg/xerr"
|
|
)
|
|
|
|
func (s *Service) requireRoomOpenForEntry(ctx context.Context, roomID string) error {
|
|
closed, err := s.isRoomClosed(ctx, roomID)
|
|
if err != nil || !closed {
|
|
return err
|
|
}
|
|
return xerr.New(xerr.RoomClosed, "room closed")
|
|
}
|
|
|
|
func (s *Service) isRoomClosed(ctx context.Context, roomID string) (bool, error) {
|
|
roomMeta, exists, err := s.repository.GetRoomMeta(ctx, roomID)
|
|
if err != nil || !exists {
|
|
return false, err
|
|
}
|
|
return isClosedRoomStatus(roomMeta.Status), nil
|
|
}
|
|
|
|
func isClosedRoomStatus(status string) bool {
|
|
value := strings.TrimSpace(status)
|
|
return value != "" && !strings.EqualFold(value, "active")
|
|
}
|