using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace foodmarket.Infrastructure.Persistence.Migrations
{
    /// <summary>VAT теперь основывается на стране, но хранится и на товаре:
    ///   - countries.VatRate (numeric(5,2), default 0) — ставка страны, источник правды.
    ///   - organizations.ShowVatEnabledOnProduct (bool, default false) — показывать ли
    ///     поля Vat/VatEnabled на карточке товара в UI; внутренне они есть всегда.
    ///   - organizations.DefaultVat (int) удаляется (заменён на Country.VatRate).
    ///   - products.Vat ОСТАЁТСЯ: для KZ есть льготные категории (хлеб/молоко/
    ///     лекарства = 0%) и фискальный чек требует ставку на каждой позиции.
    /// Seed: KZ=16%, RU=20%, BY=20%, US=0%, DE=19%, CN=13%, TR=18%, UZ=12%, KG=12%,
    /// KR=10%, IT=22%, PL=23%.</summary>
    public partial class Phase5_VatAsCountryProperty : Migration
    {
        protected override void Up(MigrationBuilder b)
        {
            b.AddColumn<decimal>(
                name: "VatRate", schema: "public", table: "countries",
                type: "numeric(5,2)", precision: 5, scale: 2, nullable: false, defaultValue: 0m);

            b.AddColumn<bool>(
                name: "ShowVatEnabledOnProduct", schema: "public", table: "organizations",
                type: "boolean", nullable: false, defaultValue: false);

            b.DropColumn(name: "DefaultVat", schema: "public", table: "organizations");

            b.Sql("""
                UPDATE public.countries SET "VatRate" = CASE "Code"
                    WHEN 'KZ' THEN 16
                    WHEN 'RU' THEN 20
                    WHEN 'BY' THEN 20
                    WHEN 'DE' THEN 19
                    WHEN 'CN' THEN 13
                    WHEN 'TR' THEN 18
                    WHEN 'UZ' THEN 12
                    WHEN 'KG' THEN 12
                    WHEN 'KR' THEN 10
                    WHEN 'IT' THEN 22
                    WHEN 'PL' THEN 23
                    ELSE 0
                END;
            """);
        }

        protected override void Down(MigrationBuilder b)
        {
            b.AddColumn<int>(
                name: "DefaultVat", schema: "public", table: "organizations",
                type: "integer", nullable: false, defaultValue: 16);

            b.DropColumn(name: "ShowVatEnabledOnProduct", schema: "public", table: "organizations");
            b.DropColumn(name: "VatRate", schema: "public", table: "countries");
        }
    }
}
