feat: localize membership tier display
All checks were successful
deploy-socialize / image (push) Successful in 1m11s
deploy-socialize / deploy (push) Successful in 19s

This commit is contained in:
2026-05-07 20:43:08 -04:00
parent 6d92119c9c
commit 7a8a0a44bf
17 changed files with 2937 additions and 72 deletions

View File

@@ -1724,11 +1724,6 @@ namespace Socialize.Api.Migrations
b.Property<int?>("ActiveContentLimit")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)");
b.Property<int?>("ExternalReviewerLimit")
.HasColumnType("integer");
@@ -1746,11 +1741,6 @@ namespace Socialize.Api.Migrations
b.Property<int?>("MonthlyPriceCents")
.HasColumnType("integer");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<int>("SortOrder")
.HasColumnType("integer");
@@ -1771,13 +1761,11 @@ namespace Socialize.Api.Migrations
{
Id = new Guid("20000000-0000-0000-0000-000000000001"),
ActiveContentLimit = 3,
Description = "For trying Socialize on one real approval workflow.",
ExternalReviewerLimit = 1,
IsCustom = false,
Key = "free",
MemberLimit = 2,
MonthlyPriceCents = 0,
Name = "Free",
SortOrder = 10,
WorkspaceLimit = 1
},
@@ -1785,13 +1773,11 @@ namespace Socialize.Api.Migrations
{
Id = new Guid("20000000-0000-0000-0000-000000000002"),
ActiveContentLimit = 25,
Description = "For solo operators managing recurring client reviews.",
ExternalReviewerLimit = 10,
IsCustom = false,
Key = "freelance",
MemberLimit = 5,
MonthlyPriceCents = 1900,
Name = "Freelance",
SortOrder = 20,
WorkspaceLimit = 3
},
@@ -1799,26 +1785,120 @@ namespace Socialize.Api.Migrations
{
Id = new Guid("20000000-0000-0000-0000-000000000003"),
ActiveContentLimit = 250,
Description = "For agencies that need repeatable client approval operations.",
IsCustom = false,
Key = "agency",
MemberLimit = 25,
MonthlyPriceCents = 7900,
Name = "Agency",
SortOrder = 30,
WorkspaceLimit = 15
},
new
{
Id = new Guid("20000000-0000-0000-0000-000000000004"),
Description = "For larger organizations with governance and access needs.",
IsCustom = true,
Key = "enterprise",
Name = "Enterprise",
SortOrder = 40
});
});
modelBuilder.Entity("Socialize.Api.Modules.Organizations.Data.OrganizationMembershipTierTranslation", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property<string>("Culture")
.IsRequired()
.HasMaxLength(16)
.HasColumnType("character varying(16)");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("character varying(512)");
b.Property<Guid>("MembershipTierId")
.HasColumnType("uuid");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.HasKey("Id");
b.HasIndex("MembershipTierId", "Culture")
.IsUnique();
b.ToTable("OrganizationMembershipTierTranslations", (string)null);
b.HasData(
new
{
Id = new Guid("20000000-0000-0001-0000-000000000001"),
Culture = "en",
Description = "For trying Socialize on one real approval workflow.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000001"),
Name = "Free"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000002"),
Culture = "fr",
Description = "Pour essayer Socialize sur un vrai workflow d'approbation.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000001"),
Name = "Free"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000003"),
Culture = "en",
Description = "For solo operators managing recurring client reviews.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000002"),
Name = "Freelance"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000004"),
Culture = "fr",
Description = "Pour les independants qui gerent des revisions client recurrentes.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000002"),
Name = "Freelance"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000005"),
Culture = "en",
Description = "For agencies that need repeatable client approval operations.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000003"),
Name = "Agency"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000006"),
Culture = "fr",
Description = "Pour les agences qui veulent des operations d'approbation client repetables.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000003"),
Name = "Agency"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000007"),
Culture = "en",
Description = "For larger organizations with governance and access needs.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000004"),
Name = "Enterprise"
},
new
{
Id = new Guid("20000000-0000-0001-0000-000000000008"),
Culture = "fr",
Description = "Pour les grandes organisations avec des besoins de gouvernance et d'acces.",
MembershipTierId = new Guid("20000000-0000-0000-0000-000000000004"),
Name = "Enterprise"
});
});
modelBuilder.Entity("Socialize.Api.Modules.Workspaces.Data.Workspace", b =>
{
b.Property<Guid>("Id")
@@ -2256,6 +2336,15 @@ namespace Socialize.Api.Migrations
.IsRequired();
});
modelBuilder.Entity("Socialize.Api.Modules.Organizations.Data.OrganizationMembershipTierTranslation", b =>
{
b.HasOne("Socialize.Api.Modules.Organizations.Data.OrganizationMembershipTier", null)
.WithMany()
.HasForeignKey("MembershipTierId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Socialize.Api.Modules.Workspaces.Data.Workspace", b =>
{
b.HasOne("Socialize.Api.Modules.Organizations.Data.Organization", null)