#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
from django.contrib import admin
from django.db.models import F, Sum

from eboutic.models import Basket, BasketItem, Invoice, InvoiceItem


@admin.register(Basket)
class BasketAdmin(admin.ModelAdmin):
    list_display = ("user", "date", "total")
    autocomplete_fields = ("user",)
    date_hierarchy = "date"

    def get_queryset(self, request):
        return (
            super()
            .get_queryset(request)
            .annotate(
                total=Sum(F("items__quantity") * F("items__unit_price"), default=0)
            )
        )


@admin.register(BasketItem)
class BasketItemAdmin(admin.ModelAdmin):
    list_display = ("label", "unit_price", "quantity")
    search_fields = ("label",)


@admin.register(Invoice)
class InvoiceAdmin(admin.ModelAdmin):
    list_display = ("user", "date", "validated")
    search_fields = ("user__username", "user__first_name", "user__last_name")
    autocomplete_fields = ("user",)


@admin.register(InvoiceItem)
class InvoiceItemAdmin(admin.ModelAdmin):
    list_display = ("label", "unit_price", "quantity")
    search_fields = ("label",)
    list_select_related = ("price",)
