from django.contrib import admin
from .models import (
    BusinessPlan,
    MarketingActivity,
    Investment,
    HumanResource,
    StartupCost,
    RevenueForecast,
    ExpenseForecast,
)


class MarketingActivityInline(admin.TabularInline):
    model = MarketingActivity
    extra = 0
    fields = ("activity_name", "description")


class InvestmentInline(admin.TabularInline):
    model = Investment
    extra = 0
    fields = ("name", "invest_type", "quantity", "unit_price", "duration_years", "description")


class HumanResourceInline(admin.TabularInline):
    model = HumanResource
    extra = 0
    fields = ("position", "count", "monthly_salary", "description")


class StartupCostInline(admin.TabularInline):
    model = StartupCost
    extra = 0
    fields = ("category", "designation", "monthly_amount", "months_needed")


class RevenueForecastInline(admin.TabularInline):
    model = RevenueForecast
    extra = 0
    fields = ("product_name", "year_1", "year_2", "year_3", "year_4")


class ExpenseForecastInline(admin.TabularInline):
    model = ExpenseForecast
    extra = 0
    fields = ("designation", "year_1", "year_2", "year_3", "year_4")


@admin.register(BusinessPlan)
class BusinessPlanAdmin(admin.ModelAdmin):
    list_display = ("company_name", "entrepreneur", "legal_status", "created_at")
    list_filter = ("legal_status", "created_at")
    search_fields = ("company_name", "entrepreneur__email", "promoter_name")
    readonly_fields = ("created_at", "updated_at")
    inlines = [
        MarketingActivityInline,
        InvestmentInline,
        HumanResourceInline,
        StartupCostInline,
        RevenueForecastInline,
        ExpenseForecastInline,
    ]
    fieldsets = (
        ("Entrepreneur", {"fields": ("entrepreneur",)}),
        (
            "En-tête (page de garde)",
            {
                "fields": (
                    "project_title",
                    "elaboration_month",
                    "elaboration_year",
                )
            },
        ),
        (
            "I. Présentation du promoteur",
            {
                "fields": (
                    "promoter_name",
                    "company_name",
                    "legal_status",
                    "creation_date",
                    "receipt_number",
                    "rc_number",
                    "ninea",
                    "address",
                )
            },
        ),
        (
            "Contact",
            {
                "fields": (
                    "contact_name",
                    "contact_phone",
                    "contact_email",
                    "contact_address",
                )
            },
        ),
        (
            "I.2 Capacité et compétences",
            {
                "fields": (
                    "capacity_reasons",
                    "experience_text",
                    "training_text",
                    "skills_text",
                )
            },
        ),
        (
            "II. Présentation du projet",
            {
                "fields": (
                    "project_object",
                    "project_objectives",
                    "location_reason",
                )
            },
        ),
        (
            "III. Étude de marché",
            {
                "fields": (
                    "product_description",
                    "competition_analysis",
                    "customer_analysis",
                )
            },
        ),
        (
            "III. Stratégie marketing (globale)",
            {"fields": ("marketing_strategy",)},
        ),
        (
            "IV. Étude technique",
            {"fields": ("process_description",)},
        ),
        (
            "V. Plan de financement",
            {
                "fields": (
                    "personal_contribution",
                    "other_funding",
                    "loan_interest_rate",
                    "loan_duration_months",
                    "loan_deferral_months",
                    "loan_repayment_periodicity",
                )
            },
        ),
        (
            "Dates système",
            {"fields": ("created_at", "updated_at"), "classes": ("collapse",)},
        ),
    )


@admin.register(MarketingActivity)
class MarketingActivityAdmin(admin.ModelAdmin):
    list_display = ("activity_name", "plan", "id")
    list_filter = ("plan",)
    search_fields = ("activity_name", "description")


@admin.register(Investment)
class InvestmentAdmin(admin.ModelAdmin):
    list_display = ("name", "plan", "invest_type", "quantity", "unit_price", "duration_years")
    list_filter = ("invest_type",)
    search_fields = ("name", "description")


@admin.register(HumanResource)
class HumanResourceAdmin(admin.ModelAdmin):
    list_display = ("position", "plan", "count", "monthly_salary")
    search_fields = ("position",)


@admin.register(StartupCost)
class StartupCostAdmin(admin.ModelAdmin):
    list_display = ("designation", "plan", "category", "monthly_amount", "months_needed")
    list_filter = ("category",)
    search_fields = ("designation",)


@admin.register(RevenueForecast)
class RevenueForecastAdmin(admin.ModelAdmin):
    list_display = ("product_name", "plan", "year_1", "year_2", "year_3", "year_4")
    search_fields = ("product_name",)


@admin.register(ExpenseForecast)
class ExpenseForecastAdmin(admin.ModelAdmin):
    list_display = ("designation", "plan", "year_1", "year_2", "year_3", "year_4")
    search_fields = ("designation",)
