using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace foodmarket.Infrastructure.Persistence.Migrations
{
    /// <summary>Новая модель цен:
    /// - products.PurchasePrice → ReferencePrice (справочная цена закупа)
    /// - products.+ ReferencePriceUpdatedAt timestamptz NULL
    /// - products.+ Cost numeric(18,4) NOT NULL DEFAULT 0 (себестоимость, скользящее среднее)
    /// - products.+ LastSupplyAt timestamptz NULL
    /// - product_groups.+ MarkupPercent numeric(5,2) NULL (% наценки на cost для авто-розничной)
    /// - organizations.+ MultiplePriceTypesEnabled boolean DEFAULT false
    /// - organizations.+ ShowReferencePriceOnProduct boolean DEFAULT true
    /// - supply_lines.+ RetailPriceManuallyOverridden boolean DEFAULT false
    /// - supply_lines.+ RetailPriceOverride numeric(18,2) NULL
    /// </summary>
    public partial class Phase3a_PricingModel : Migration
    {
        protected override void Up(MigrationBuilder b)
        {
            b.RenameColumn(name: "PurchasePrice", schema: "public", table: "products", newName: "ReferencePrice");

            b.AddColumn<System.DateTime>(
                name: "ReferencePriceUpdatedAt", schema: "public", table: "products",
                type: "timestamp with time zone", nullable: true);

            b.AddColumn<decimal>(
                name: "Cost", schema: "public", table: "products",
                type: "numeric(18,4)", precision: 18, scale: 4, nullable: false, defaultValue: 0m);

            b.AddColumn<System.DateTime>(
                name: "LastSupplyAt", schema: "public", table: "products",
                type: "timestamp with time zone", nullable: true);

            b.AddColumn<decimal>(
                name: "MarkupPercent", schema: "public", table: "product_groups",
                type: "numeric(5,2)", precision: 5, scale: 2, nullable: true);

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

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

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

            b.AddColumn<decimal>(
                name: "RetailPriceOverride", schema: "public", table: "supply_lines",
                type: "numeric(18,2)", precision: 18, scale: 2, nullable: true);
        }

        protected override void Down(MigrationBuilder b)
        {
            b.DropColumn(name: "RetailPriceOverride", schema: "public", table: "supply_lines");
            b.DropColumn(name: "RetailPriceManuallyOverridden", schema: "public", table: "supply_lines");
            b.DropColumn(name: "ShowReferencePriceOnProduct", schema: "public", table: "organizations");
            b.DropColumn(name: "MultiplePriceTypesEnabled", schema: "public", table: "organizations");
            b.DropColumn(name: "MarkupPercent", schema: "public", table: "product_groups");
            b.DropColumn(name: "LastSupplyAt", schema: "public", table: "products");
            b.DropColumn(name: "Cost", schema: "public", table: "products");
            b.DropColumn(name: "ReferencePriceUpdatedAt", schema: "public", table: "products");
            b.RenameColumn(name: "ReferencePrice", schema: "public", table: "products", newName: "PurchasePrice");
        }
    }
}
