from .views import GroceryIndex, GroceryIndexV2, ShoppingListDetailView, MarkItemCheckedView, MarkItemUnCheckedView, \
    MarkShoppingListCheckedView, MarkShoppingListUnCheckedView, DeleteShoppingItemView, ArchivedGroceryIndex, \
    MarkShoppingListUnArchivedView, MarkShoppingListArchivedView, DuplicateShoppingListView, DuplicateAsTemplateView, \
    DeleteShoppingListView, CreateShoppingListView, AddItemToShoppingListView, EditShoppingListItemView, \
    CategoryListView, CategoryCreateView, CategoryUpdateView, CategoryDeleteView, \
    ItemListView, ItemCreateView, ItemUpdateView, ItemDeleteView, \
    CustomLoginView, CustomLogoutView
from django.urls import path

urlpatterns = [
    path("login/", CustomLoginView.as_view(), name="login"),
    path("logout/", CustomLogoutView.as_view(), name="logout"),
    path("", GroceryIndex.as_view(), name="grocery_index"),
    path("v2/", GroceryIndexV2.as_view(), name="grocery_index_v2"),
    path("archived", ArchivedGroceryIndex.as_view(), name="archived_index"),
    path(
        "shopping-list/<int:pk>/",
        ShoppingListDetailView.as_view(),
        name="shopping_list_detail",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/delete-item/<int:item_id>/",
        DeleteShoppingItemView.as_view(),
        name="delete_item",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/mark-item-checked/<int:item_id>/",
        MarkItemCheckedView.as_view(),
        name="mark_item_checked",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/mark-item-unchecked/<int:item_id>/",
        MarkItemUnCheckedView.as_view(),
        name="mark_item_unchecked",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/mark-all-item-checked/",
        MarkShoppingListCheckedView.as_view(),
        name="mark_all_items_checked",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/mark-all-item-unchecked/",
        MarkShoppingListUnCheckedView.as_view(),
        name="mark_all_items_unchecked",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/mark-archived/",
        MarkShoppingListArchivedView.as_view(),
        name="mark_shopping_list_archived",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/mark-unarchived/",
        MarkShoppingListUnArchivedView.as_view(),
        name="mark_shopping_list_unarchived",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/duplicate/",
        DuplicateShoppingListView.as_view(),
        name="duplicate_shopping_list",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/duplicate-as-template/",
        DuplicateAsTemplateView.as_view(),
        name="duplicate_as_template",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/delete/",
        DeleteShoppingListView.as_view(),
        name="delete_shopping_list",
    ),
    path(
        "shopping-list/create/",
        CreateShoppingListView.as_view(),
        name="create_shopping_list",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/add-item/",
        AddItemToShoppingListView.as_view(),
        name="add_item_to_shopping_list",
    ),
    path(
        "shopping-list/<int:shopping_list_id>/edit-item/<int:item_id>/",
        EditShoppingListItemView.as_view(),
        name="edit_item",
    ),
    path(
        "categories/",
        CategoryListView.as_view(),
        name="category_list",
    ),
    path(
        "categories/create/",
        CategoryCreateView.as_view(),
        name="category_create",
    ),
    path(
        "categories/<int:pk>/edit/",
        CategoryUpdateView.as_view(),
        name="category_edit",
    ),
    path(
        "categories/<int:pk>/delete/",
        CategoryDeleteView.as_view(),
        name="category_delete",
    ),
    path(
        "items/",
        ItemListView.as_view(),
        name="item_list",
    ),
    path(
        "items/create/",
        ItemCreateView.as_view(),
        name="item_create",
    ),
    path(
        "items/<int:pk>/edit/",
        ItemUpdateView.as_view(),
        name="item_edit",
    ),
    path(
        "items/<int:pk>/delete/",
        ItemDeleteView.as_view(),
        name="item_delete",
    ),
]