from django.urls import path
from service.views.service_views import ServiceListCreateAPIView, ServiceDetailAPIView, ServicePublicListAPIView, ServiceSearchAPIView
from service.views.summarized_service_views import FilteredServicesByCategory
from service.views.review_only_services_view import ReviewOnlyServiceDetailAPIView
from service.views.home_search_view import SectionSearchAPIView
from service.views.flag_review import ServiceFlagAPIView, ServiceFlaggedListAPIView, ServiceUnflagAPIView
from service.views.service_review import (
    ServicesReviewListCreateAPIView,
    ServicesReviewDetailAPIView,
    ServicesReviewPublicListAPIView
)
from service.views.contact_service import (
    ContactServiceProviderListCreateAPIView,
    ContactServiceProviderDetailAPIView
)

urlpatterns = [
    path("services/search/", ServiceSearchAPIView.as_view(), name="service-search"),
    path("services/public/", ServicePublicListAPIView.as_view(), name="service-public-list"), 
    path("services/", ServiceListCreateAPIView.as_view(), name="service-list-create"),
    path("services/<int:pk>/", ServiceDetailAPIView.as_view(), name="service-detail"),
    path('services-avgreview/<int:pk>/', ReviewOnlyServiceDetailAPIView.as_view(), name='review-only-services'),
    path("home/search/", SectionSearchAPIView.as_view(), name="section-search"),

    # Flag endpoints
    path("services/<int:pk>/flag/", ServiceFlagAPIView.as_view(), name="service-flag"),
    path("services/<int:pk>/unflag/", ServiceUnflagAPIView.as_view(), name="service-unflag"),
    path("services/flagged/", ServiceFlaggedListAPIView.as_view(), name="service-flagged-list"),

    # Review CRUD endpoints
    path("services/reviews/public/", ServicesReviewPublicListAPIView.as_view(), name="service-review-public-list"), 
    path("services/reviews/", ServicesReviewListCreateAPIView.as_view(), name="service-review-list-create"),
    path("services/reviews/<int:pk>/", ServicesReviewDetailAPIView.as_view(), name="service-review-detail"),

    # Contact Service Provider endpoints
    path("service-contact/", ContactServiceProviderListCreateAPIView.as_view(), name="contact-service-provider-list-create"),
    path("service-contact/<int:pk>/", ContactServiceProviderDetailAPIView.as_view(), name="contact-service-provider-detail"),
    path('services/<str:category>/', FilteredServicesByCategory.as_view(), name='services-by-category'),

]
