def check_if_game_code_isValid(request): if "game_code" not in request.data: return JsonResponse( {"error": "Enter game_code"}, status=status.HTTP_400_BAD_REQUEST ) if "user_name" not in request.data: return JsonResponse( {"error": "Enter user_name"}, status=status.HTTP_400_BAD_REQUEST ) try: game = Game.objects.get(game_code=request.data['game_code']) gameData = GameSerializer(game).data if gameData['user_name'] == request.data['user_name']: return JsonResponse({"error": "Admin cannot play the game"}, status=status.HTTP_400_BAD_REQUEST) if gameData['active']: ug = UserGames.objects.filter(game_code=request.data['game_code'], user_name=request.data['user_name']) if len(ug) != 0: return JsonResponse({ "error": "Already played game" }, status=status.HTTP_400_BAD_REQUEST) qList = Question.objects.filter(category=gameData['category']).values_list('id', flat=True) qRand = random.sample(list(qList), min(len(qList), 10)) questions = Question.objects.filter(id__in=qRand) questionData = QuestionSerializer(questions, many=True).data questions = [] for question in questionData: options = [] for option in question['options']: optionQuery = Options.objects.get(option=option) optionData = OptionsSerializer(optionQuery, many=False).data options.append(optionData['option']) question['options'] = options questions.append(question) serializer = UserGamesSerializer(data={ 'game_code': request.data['game_code'], 'category': gameData['category'], 'user_name': request.data['user_name'] }) if serializer.is_valid(): serializer.save() return JsonResponse({ "data": { 'questions': questions, 'usergameData': serializer.data } }, status=status.HTTP_200_OK) return JsonResponse({ "error": serializer.errors }, status=status.HTTP_400_BAD_REQUEST) else: return JsonResponse({"error": "Game code is expired"}, status=status.HTTP_400_BAD_REQUEST) except Game.DoesNotExist: return JsonResponse({ "error": "Invalid game code" }, status=status.HTTP_400_BAD_REQUEST) except Exception as error: return JsonResponse({"error": error}, status=status.HTTP_400_BAD_REQUEST)
def update_score_count_usergame(request): if "user_game_id" not in request.data: return JsonResponse( {"error": "Enter user_game_id"}, status=status.HTTP_400_BAD_REQUEST ) if "no_answers_crct" not in request.data: return JsonResponse( {"error": "Enter no_answers_crct"}, status=status.HTTP_400_BAD_REQUEST ) try: ug = UserGames.objects.get(id=request.data['user_game_id']) ug.score = ug.score + int(request.data['no_answers_crct']) ug.save() # ug = UserGames.objects.filter(id=request.data['user_game_id']).update(score=F['score'] + 1) ugSerializer = UserGamesSerializer(ug, many=False).data return JsonResponse({ "data": ugSerializer }, status=status.HTTP_200_OK) except UserGames.DoesNotExist: return JsonResponse({ "error": "Invalid user_game_id" }, status=status.HTTP_400_BAD_REQUEST) except Exception as error: return JsonResponse({ "error": error }, status=status.HTTP_400_BAD_REQUEST)
def get_leader_board_game_code(request): if request.query_params.get("game_code") is None: return JsonResponse({"error": "Enter game_code"}, status=status.HTTP_400_BAD_REQUEST) try: data = UserGames.objects.filter( game_code=request.query_params.get("game_code")).order_by('-score') if request.query_params.get("n") is not None: n = int(request.query_params.get("n")) data = data[:n] userGames = UserGamesSerializer(data, many=True).data return JsonResponse({"data": userGames}, status=status.HTTP_200_OK) except Exception as error: return JsonResponse({"error": error}, status=status.HTTP_400_BAD_REQUEST)
def check_if_game_code_isValid(request): if "isGeneral" not in request.data: if "game_code" not in request.data: return JsonResponse( {"error": "Enter game_code"}, status=status.HTTP_400_BAD_REQUEST ) if "user_name" not in request.data: return JsonResponse( {"error": "Enter user_name"}, status=status.HTTP_400_BAD_REQUEST ) game = Game.objects.get(game_code=request.data['game_code']) gameData = GameSerializer(game).data category = gameData['category'] if gameData['user_name'] == request.data['user_name']: return JsonResponse({"error": "Admin cannot play the game"}, status=status.HTTP_400_BAD_REQUEST) if not gameData['active']: return JsonResponse({"error": "Game code is expired"}, status=status.HTTP_400_BAD_REQUEST) else: ug = UserGames.objects.filter(game_code=request.data['game_code'], user_name=request.data['user_name']) if len(ug) != 0: return JsonResponse({ "error": "Already played game" }, status=status.HTTP_400_BAD_REQUEST) data = { 'game_code': request.data['game_code'], 'category': gameData['category'], 'user_name': request.data['user_name'] } else: if "email_address" not in request.data: return JsonResponse( {"error": "Enter email_address"}, status=status.HTTP_400_BAD_REQUEST ) if "category" not in request.data: return JsonResponse( {"error": "Enter category"}, status=status.HTTP_400_BAD_REQUEST ) categories = Category.objects.filter(name=request.data['category']) if len(categories) == 0: return JsonResponse( {"error": "Enter valid category"}, status=status.HTTP_400_BAD_REQUEST ) if categories[0].isSubCategory: parentCategoryId = categories[0].parentCategory allCategories = Category.objects.filter(parentCategory=parentCategoryId) ug = UserGames.objects.filter(email_address=request.data['email_address'], category__in=allCategories) if len(ug) != 0: return JsonResponse({ "error": "Already played game" }, status=status.HTTP_400_BAD_REQUEST) else: ug = UserGames.objects.filter(email_address=request.data['email_address'], category=request.data['category']) if len(ug) != 0: return JsonResponse({ "error": "Already played game" }, status=status.HTTP_400_BAD_REQUEST) category = request.data['category'] data = { 'category': category, 'email_address': request.data['email_address'] } try: qList = Question.objects.filter(category=category).values_list('id', flat=True) qRand = random.sample(list(qList), min(len(qList), 10)) questions = Question.objects.filter(id__in=qRand) questionData = QuestionSerializer(questions, many=True).data questions = [] for question in questionData: options = [] for option in question['options']: optionQuery = Options.objects.get(option=option) optionData = OptionsSerializer(optionQuery, many=False).data options.append(optionData['option']) question['options'] = options questions.append(question) serializer = UserGamesSerializer(data=data) if serializer.is_valid(): serializer.save() return JsonResponse({ "data": { 'questions': questions, 'usergameData': serializer.data } }, status=status.HTTP_200_OK) return JsonResponse({ "error": serializer.errors }, status=status.HTTP_400_BAD_REQUEST) except Game.DoesNotExist: return JsonResponse({ "error": "Invalid game code" }, status=status.HTTP_400_BAD_REQUEST) except Exception as error: return JsonResponse({"error": error}, status=status.HTTP_400_BAD_REQUEST)