from django.urls import path, include
from . import views
from rest_framework.routers import DefaultRouter
from rest_framework.authtoken.views import obtain_auth_token
from schema_graph.views import Schema
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from django_spaghetti.views import Plate
from rest_framework import permissions

app_name = 'v1'

router = DefaultRouter(trailing_slash=False)
router.register(r'offices', views.OfficeViewSet, basename='offices'),
router.register(r'agents', views.AgentViewSet, basename='agents'),
router.register(r'types', views.TypeViewSet, basename='types'),
router.register(r'usages', views.UsageViewSet, basename='usages'),
router.register(r'features', views.FeatureViewSet, basename='features'),
#router.register(r'properties', views.PropertyViewSet, basename='properties'),
router.register(r'medias', views.PropertyMediaViewSet, basename='medias'),
#router.register(r'properties_features', views.PropertyFeatureViewSet, basename='properties_features'),
router.register(r'locations', views.LocationViewSet, basename='locations'),

router.register(r'properties_nested', views.PropertiesNestedViewSet, basename='properties_nested'),

router.register(r'neighborhoods', views.NeighborhoodViewSet, basename='neighborhoods'),
router.register(r'cities', views.CityViewSet, basename='cities'),
router.register(r'states', views.StateViewSet, basename='states'),


#router.register(r'new_properties_nested', views.NewPropertiesNestedViewSet, basename='new_properties_nested'),

# router.register(r'lancamentos', views.LancamentoNestedViewSet, basename='lancamentos'),
# router.register(r'lancamentos-unidades', views.LancamentoUnidadeNestedViewSet, basename='lancamentos-unidades'),


#router.register(r'locations-aggregated', views.PropertiesLocationAggregateViewSet, basename='locations-aggregated'),




#router.register(r'properties_simple', views.PropertySimpleViewSet, basename='properties_simple'),



#from .views import PropertiesLocationAggregateView

urlpatterns = [
    #path('locations/aggregate/', PropertiesLocationAggregateView.as_view(), name='properties-location-aggregate'),

    path('', include(router.urls)),
    path('totals/', views.TotalCountsAPIView.as_view(), name='totals'),
]

urlpatterns += [
    path("schema/", Schema.as_view()),
]


schema_view = get_schema_view(
   openapi.Info(
      title="Portal RE/Max API",
      default_version='v1',
      description="API for retrieve data for website",  
      #terms_of_service="https://www.google.com/policies/terms/",
      #contact=openapi.Contact(name="TEste", url="", email="contact@snippets.local"),
      #license=openapi.License(name="BSD License", url="", version="1.0.1"),
      version="1.0.1",
   ),
   public=False,
   permission_classes=(permissions.IsAuthenticated,),
   patterns=[path('v1/', include(router.urls))],
   
)


urlpatterns += [
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('swagger<format>/', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]


#urlpatterns += [path('plate/', include('django_spaghetti.urls'), name='v1_spaghetti')]

urlpatterns += [
    path("plate/", Plate.as_view()),
]