-- Standard je pravi besplatni nivo. Bronze ostaje prvi plaćeni paket.
-- Enum se rekreira da bi STANDARD pouzdano bio dostupan i za backfill u istoj
-- migraciji (ALTER TYPE ... ADD VALUE se u PostgreSQL transakciji ne može odmah
-- koristiti u UPDATE-u).
ALTER TABLE "Plan" ALTER COLUMN "tier" TYPE TEXT USING "tier"::TEXT;
ALTER TABLE "Company" ALTER COLUMN "tier" DROP DEFAULT;
ALTER TABLE "Company" ALTER COLUMN "tier" TYPE TEXT USING "tier"::TEXT;

ALTER TYPE "Tier" RENAME TO "Tier_old";
CREATE TYPE "Tier" AS ENUM ('STANDARD', 'BRONZE', 'SILVER', 'GOLD', 'PLATINUM');

ALTER TABLE "Plan"
  ALTER COLUMN "tier" TYPE "Tier" USING "tier"::"Tier";
ALTER TABLE "Company"
  ALTER COLUMN "tier" TYPE "Tier" USING "tier"::"Tier";
ALTER TABLE "Company" ALTER COLUMN "tier" SET DEFAULT 'STANDARD';

DROP TYPE "Tier_old";

-- Svaki profil bez plaćenog/dodeljenog plana je Standard, nikada Bronze.
UPDATE "Company"
SET "tier" = 'STANDARD'
WHERE "planId" IS NULL;

-- Besplatan plan postoji u cenovniku kao eksplicitna početna tačka. Nema
-- naplate, logotipa/cover galerije ni premium modula.
INSERT INTO "Plan" (
  "id", "slug", "nameSr", "nameEn", "descriptionSr", "descriptionEn",
  "tier", "priceRsd", "priceEur", "isActive", "isFeaturedDefault",
  "priorityDefault", "durationDays", "maxGalleryImages", "maxCategories",
  "maxAmenities", "maxBadges", "eventsLimit", "realEstateLimit",
  "carListingsLimit", "createdAt", "updatedAt"
)
VALUES (
  'plan_standard_free', 'standard', 'Standardni', 'Standard',
  'Besplatan profil sa nazivom, kategorijom, lokacijom, kratkim opisom, recenzijama i Biznis Portal vizuelima.',
  'Free basic profile without premium contact and visual elements.',
  'STANDARD', 0, 0, TRUE, FALSE, 0, NULL, 0, 1, 0, 0, 0, 0, 0, NOW(), NOW()
)
ON CONFLICT ("slug") DO UPDATE SET
  "nameSr" = EXCLUDED."nameSr",
  "nameEn" = EXCLUDED."nameEn",
  "descriptionSr" = EXCLUDED."descriptionSr",
  "descriptionEn" = EXCLUDED."descriptionEn",
  "tier" = EXCLUDED."tier",
  "priceRsd" = 0,
  "priceEur" = 0,
  "isActive" = TRUE,
  "isFeaturedDefault" = FALSE,
  "priorityDefault" = 0,
  "durationDays" = NULL,
  "maxGalleryImages" = 0,
  "maxCategories" = 1,
  "maxAmenities" = 0,
  "maxBadges" = 0,
  "eventsLimit" = 0,
  "realEstateLimit" = 0,
  "carListingsLimit" = 0,
  "updatedAt" = NOW();
