//FitsRequirements checks if the player fits the requirement to be added to the given slot in the lobby func (l *Lobby) FitsRequirements(player *player.Player, slot int) (bool, error) { //BUG(vibhavp): FitsRequirements doesn't check reliability var req *Requirement slotReq, err := l.GetSlotRequirement(slot) if err == nil { req = slotReq } db.DB.Preload("Stats").First(player, player.ID) if time.Since(player.ProfileUpdatedAt) < time.Hour*time.Duration(req.Hours-player.GameHours) { //update player info only if the number of hours needed > the number of hours //passed since player info was last updated err = player.UpdatePlayerInfo() if err != nil { logrus.Error(err) } } if player.GameHours < req.Hours { return false, ErrReqHours } if player.Stats.TotalLobbies() < req.Lobbies { return false, ErrReqLobbies } return true, nil }