from django.conf import settings
from django.contrib import admin
from api.models import *


# Register your models here.

@admin.register(Device)
class DeviceAdmin(admin.ModelAdmin):
    list_display = ['pk', 'deviceToken', 'deviceType', 'productId', 'lastPurchaseToken', 'isSubscription',
                    'appleTransactionId', 'originalTransactionId', 'expireAt', 'createdAt', 'updatedAt']
    search_fields = ['description']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ['pk', 'description', 'image']
    search_fields = ['description']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Craptitude)
class CraptitudeAdmin(admin.ModelAdmin):
    list_display = ['pk', 'category_description', 'roundNumber', 'diaperPrefix', 'dumpsterPrefix']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE

    def category_description(self, obj):
        return f'{obj.category} - {obj.category.description}'


@admin.register(Team)
class TeamAdmin(admin.ModelAdmin):
    list_display = ['pk', 'name']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(GameSession)
class GameSessionAdmin(admin.ModelAdmin):
    list_display = ['pk', 'device', 'category', 'craptitude', 'createdAt', 'updatedAt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Player)
class PlayerAdmin(admin.ModelAdmin):
    list_display = ['pk', 'session', 'team', 'name', 'createdAt', 'updatedAt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Sentence)
class SentenceAdmin(admin.ModelAdmin):
    list_display = ['pk', 'session', 'team', 'player', 'text', 'createdAt', 'updatedAt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Rating)
class RatingAdmin(admin.ModelAdmin):
    list_display = ['pk', 'session', 'diaperScore', 'dumpsterScore', 'createdAt', 'updatedAt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(CraptitudeHistory)
class CraptitudeHistoryAdmin(admin.ModelAdmin):
    list_display = ['pk', 'session', 'levelCompleted', 'createdAt', 'updatedAt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Plan)
class PlanAdmin(admin.ModelAdmin):
    list_display = ['pk', 'name', 'price', 'description', 'unlockCategory', 'type', 'productId', 'period', 'createdAt', 'updatedAt']
    search_fields = ['description']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(AndroidTransaction)
class AndroidTransactionAdmin(admin.ModelAdmin):
    list_display = ['pk', 'device', 'productId', 'orderId', 'purchaseToken', 'notificationType', 'startAt', 'expireAt',
                    'createdAt', 'updatedAt']
    search_fields = ['productId', 'purchaseToken']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(AppleTransaction)
class AppleTransactionAdmin(admin.ModelAdmin):
    list_display = ['pk', 'device', 'productId', 'startAt', 'expireAt', 'appleReceipt', 'appleTransactionId',
    'originalTransactionId', 'environment', 'transactionReason', 'notificationType', 'createdAt', 'updatedAt']
    search_fields = ['productId', 'purchaseToken', 'appleReceipt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(Transaction)
class TransactionAdmin(admin.ModelAdmin):
    list_display = ['pk', 'device', 'plan', 'productId', 'orderId', 'purchaseToken', 'originalTransactionId',
    'appleTransactionId', 'amount', 'startAt', 'expireAt', 'notificationType', 'createdAt', 'updatedAt']
    search_fields = ['purchaseId', 'purchaseToken']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE


@admin.register(AppVersion)
class AppVersionAdmin(admin.ModelAdmin):
    list_display = ['pk', 'versionCode', 'deviceType', 'deletedAt', 'createdAt', 'updatedAt']
    ordering = ['pk']
    list_per_page = settings.ADMIN_PAGE_SIZE
