from django.contrib.auth import views as auth_views
from django.urls import path

from . import views

urlpatterns = [
    # public
    path("", views.home, name="home"),
    path("about/", views.about, name="about"),
    path("services/", views.services, name="services"),
    path("pricing/", views.pricing, name="pricing"),
    path("portfolio/", views.portfolio, name="portfolio"),
    path("portfolio/<slug:slug>/", views.portfolio_detail, name="portfolio_detail"),
    path("contact/", views.contact, name="contact"),
    path("start-project/", views.start_project, name="start_project"),
    path("robots.txt", views.robots, name="robots"),

    # auth
    path("login/", auth_views.LoginView.as_view(template_name="registration/login.html"), name="login"),
    path("logout/", auth_views.LogoutView.as_view(), name="logout"),
    path("register/", views.register, name="register"),
    path("forgot-password/", auth_views.PasswordResetView.as_view(
        template_name="registration/password_reset.html"), name="password_reset"),
    path("forgot-password/sent/", auth_views.PasswordResetDoneView.as_view(
        template_name="registration/password_reset_done.html"), name="password_reset_done"),
    path("reset/<uidb64>/<token>/", auth_views.PasswordResetConfirmView.as_view(
        template_name="registration/password_reset_confirm.html"), name="password_reset_confirm"),
    path("reset/done/", auth_views.PasswordResetCompleteView.as_view(
        template_name="registration/password_reset_complete.html"), name="password_reset_complete"),
    path("password/", auth_views.PasswordChangeView.as_view(
        template_name="registration/password_change.html"), name="password_change"),
    path("password/done/", auth_views.PasswordChangeDoneView.as_view(
        template_name="registration/password_change_done.html"), name="password_change_done"),

    # client portal
    path("client/", views.client_dashboard, name="client_dashboard"),
    path("client/projects/", views.client_projects, name="client_projects"),
    path("client/projects/<slug:slug>/", views.client_project, name="client_project"),
    path("client/websites/", views.client_websites, name="client_websites"),
    path("client/invoices/", views.client_invoices, name="client_invoices"),
    path("client/invoices/<str:number>/", views.client_invoice_pdf, name="client_invoice"),
    path("client/payments/", views.client_payments, name="client_payments"),
    path("client/messages/", views.client_messages, name="client_messages"),
    path("client/support/", views.client_support, name="client_support"),
    path("client/support/<str:reference>/", views.client_ticket, name="client_ticket"),
    path("client/files/", views.client_files, name="client_files"),
    path("client/account/", views.client_account, name="client_account"),

    # admin panel
    path("admin/", views.admin_dashboard, name="admin_dashboard"),
    path("admin/login/", auth_views.LoginView.as_view(
        template_name="adminpanel/login.html",
        next_page="admin_dashboard"), name="admin_login"),
    path("admin/leads/", views.admin_leads, name="admin_leads"),
    path("admin/leads/new/", views.admin_lead_form, name="admin_lead_new"),
    path("admin/leads/<int:pk>/", views.admin_lead, name="admin_lead"),
    path("admin/leads/<int:pk>/edit/", views.admin_lead_form, name="admin_lead_edit"),
    path("admin/clients/", views.admin_clients, name="admin_clients"),
    path("admin/clients/new/", views.admin_client_form, name="admin_client_new"),
    path("admin/clients/<int:pk>/", views.admin_client, name="admin_client"),
    path("admin/clients/<int:pk>/edit/", views.admin_client_form, name="admin_client_edit"),
    path("admin/quotes/", views.admin_quotes, name="admin_quotes"),
    path("admin/quotes/new/", views.admin_quote_form, name="admin_quote_new"),
    path("admin/quotes/<int:pk>/edit/", views.admin_quote_form, name="admin_quote_edit"),
    path("admin/quotes/<int:pk>/accept/", views.admin_quote_accept, name="admin_quote_accept"),
    path("admin/projects/", views.admin_projects, name="admin_projects"),
    path("admin/projects/new/", views.admin_project_form, name="admin_project_new"),
    path("admin/projects/<slug:slug>/", views.admin_project, name="admin_project"),
    path("admin/projects/<slug:slug>/edit/", views.admin_project_form, name="admin_project_edit"),
    path("admin/projects/<slug:slug>/milestones/", views.admin_project_milestone,
         name="admin_project_milestone"),
    path("admin/projects/<slug:slug>/tasks/", views.admin_project_task,
         name="admin_project_task"),
    path("admin/projects/<slug:slug>/updates/", views.admin_project_update,
         name="admin_project_update"),
    path("admin/projects/<slug:slug>/files/", views.admin_project_file,
         name="admin_project_file"),
    path("admin/websites/", views.admin_websites, name="admin_websites"),
    path("admin/websites/new/", views.admin_website_form, name="admin_website_new"),
    path("admin/websites/<slug:slug>/", views.admin_website, name="admin_website"),
    path("admin/websites/<slug:slug>/edit/", views.admin_website_form, name="admin_website_edit"),
    path("admin/websites/<slug:slug>/credentials/", views.admin_website_credential,
         name="admin_website_credential"),
    path("admin/websites/<slug:slug>/activity/", views.admin_website_activity,
         name="admin_website_activity"),
    path("admin/domains/", views.admin_domains, name="admin_domains"),
    path("admin/hosting/", views.admin_hosting, name="admin_hosting"),
    path("admin/maintenance/", views.admin_maintenance, name="admin_maintenance"),
    path("admin/invoices/", views.admin_invoices, name="admin_invoices"),
    path("admin/invoices/new/", views.admin_invoice_form, name="admin_invoice_new"),
    path("admin/invoices/<str:number>/", views.admin_invoice, name="admin_invoice"),
    path("admin/invoices/<str:number>/edit/", views.admin_invoice_form, name="admin_invoice_edit"),
    path("admin/payments/", views.admin_payments, name="admin_payments"),
    path("admin/revenue/", views.admin_revenue, name="admin_revenue"),
    path("admin/portfolio/", views.admin_portfolio, name="admin_portfolio"),
    path("admin/portfolio/new/", views.admin_portfolio_form, name="admin_portfolio_new"),
    path("admin/portfolio/<slug:slug>/edit/", views.admin_portfolio_form, name="admin_portfolio_edit"),
    path("admin/categories/new/", views.admin_category_form, name="admin_category_new"),
    path("admin/categories/<int:pk>/edit/", views.admin_category_form, name="admin_category_edit"),
    path("admin/services/new/", views.admin_service_form, name="admin_service_new"),
    path("admin/services/<int:pk>/edit/", views.admin_service_form, name="admin_service_edit"),
    path("admin/packages/new/", views.admin_package_form, name="admin_package_new"),
    path("admin/packages/<int:pk>/edit/", views.admin_package_form, name="admin_package_edit"),
    path("admin/tickets/", views.admin_tickets, name="admin_tickets"),
    path("admin/tickets/<str:reference>/", views.admin_ticket, name="admin_ticket"),
    path("admin/messages/", views.admin_messages, name="admin_messages"),
    path("admin/tasks/", views.admin_tasks, name="admin_tasks"),
    path("admin/tasks/new/", views.admin_task_form, name="admin_task_new"),
    path("admin/tasks/<int:pk>/edit/", views.admin_task_form, name="admin_task_edit"),
    path("admin/tasks/<int:pk>/move/", views.admin_task_move, name="admin_task_move"),
    path("admin/tasks/<int:pk>/delete/", views.admin_task_delete, name="admin_task_delete"),
    path("admin/calendar/", views.admin_calendar, name="admin_calendar"),
    path("admin/files/", views.admin_files, name="admin_files"),
    path("admin/notifications/", views.admin_notifications, name="admin_notifications"),
    path("admin/activity/", views.admin_activity, name="admin_activity"),
    path("admin/settings/", views.admin_settings, name="admin_settings"),
]
