from appservices.common.util import *

roles = Blueprint("roles",__name__)

# Add region
# @regions.route("/add_permission",methods=["POST","GET"])
# def add_permission():
#   try:
#         if not session.get("adminId"):
#             return redirect("admin_login")
        
#         adminId = session.get("adminId")
        
#         if request.method == "POST":
#             permissionName = request.form.get("permissionName", "")
#             servicePermissionsList = request.form.getlist("servicePermissionsList[]")




@roles.route("/get_all_sevices_list",methods=["POST","GET"])
@adminid_access_token_required
def get_all_sevices_list():
    data_status= {"responseStatus":0,"result":""}
    try:
        serviceGroupingsList = []

        service_groupings_queryset = ServiceGrouping.objects(status__in=[1]).all()

        for each_service_grouping in service_groupings_queryset:
            service_grouping = {
                "id": str(each_service_grouping.id),
                "name": each_service_grouping.name,
                "categoriesList": []
            }

            categories_queryset = Categories.objects(serviceGroupingId=str(each_service_grouping.id),status__in=[1]).all()

            for each_category in categories_queryset:
                category = {
                    "id": str(each_category.id),
                    "categoryName": each_category.categoryName,
                    "servicesList": []
                }

                services_queryset = Service.objects(categoryId=str(each_category.id),status__in=[1]).all()

                for each_service in services_queryset:
                    service = {
                        "id": str(each_service.id),
                        "serviceName": each_service.serviceName,
                        "operatorsList": []
                    }

                    operators_queryset = Operators.objects(serviceId=str(each_service.id),status__in=[1]).all()

                    for each_operator in operators_queryset:
                        operator = {
                            "id": str(each_operator.id),
                            "operatorName": each_operator.operatorName
                        }
                        service["operatorsList"].append(operator)

                    category["servicesList"].append(service)

                service_grouping["categoriesList"].append(category)

            serviceGroupingsList.append(service_grouping)

        data_status["result"] = "Data fetched successfully."
        data_status["responseStatus"] = 1
        data_status["serviceGroupingsList"] = serviceGroupingsList
        return jsonify(data_status)

    except:
        app.logger.error(traceback.format_exc())
        data_status["result"] = "Unable to fetch data." 
        return jsonify(data_status)

