Add Columbia Coatings API client, DTOs, and sync settings
Phase 1b of the Columbia Coatings integration: the typed read client and its configuration, ahead of the sync/mapper service. - ColumbiaProductDtos: wire-shape models for GET /products. tiered_pricing is captured as JsonElement because the API returns it as an object on simple products but an empty array on variable ones — binding it raw avoids a deserialization throw; the mapper interprets it. - IColumbiaCoatingsApiClient / ColumbiaCoatingsApiClient: pages the catalog via GET /products (NOT the export download_url, which is Cloudflare-blocked for server clients). Sends X-API-Key from config, honors 429/Retry-After, and THROWS on any page failure so a partial pull can never be mistaken for the full catalog (protects the later discontinuation sweep). - ColumbiaIntegrationConstants: single home for config keys, setting keys, and the derived Source/manufacturer/category values. - Config: Columbia:ApiKey (blank — secret supplied per environment) and Columbia:BaseUrl in appsettings. - SeedColumbiaSyncSettings migration: seeds SuperAdmin-managed platform settings ColumbiaSyncEnabled (off by default), ColumbiaSyncIntervalDays (7), and last-sync tracking, under a new "Integrations" group. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -7234,7 +7234,7 @@ namespace PowderCoating.Infrastructure.Migrations
|
||||
{
|
||||
Id = 1,
|
||||
CompanyId = 0,
|
||||
CreatedAt = new DateTime(2026, 6, 17, 14, 21, 27, 126, DateTimeKind.Utc).AddTicks(6644),
|
||||
CreatedAt = new DateTime(2026, 6, 17, 14, 44, 40, 147, DateTimeKind.Utc).AddTicks(5997),
|
||||
Description = "Standard pricing for regular customers",
|
||||
DiscountPercent = 0m,
|
||||
IsActive = true,
|
||||
@@ -7245,7 +7245,7 @@ namespace PowderCoating.Infrastructure.Migrations
|
||||
{
|
||||
Id = 2,
|
||||
CompanyId = 0,
|
||||
CreatedAt = new DateTime(2026, 6, 17, 14, 21, 27, 126, DateTimeKind.Utc).AddTicks(6651),
|
||||
CreatedAt = new DateTime(2026, 6, 17, 14, 44, 40, 147, DateTimeKind.Utc).AddTicks(6002),
|
||||
Description = "5% discount for preferred customers",
|
||||
DiscountPercent = 5m,
|
||||
IsActive = true,
|
||||
@@ -7256,7 +7256,7 @@ namespace PowderCoating.Infrastructure.Migrations
|
||||
{
|
||||
Id = 3,
|
||||
CompanyId = 0,
|
||||
CreatedAt = new DateTime(2026, 6, 17, 14, 21, 27, 126, DateTimeKind.Utc).AddTicks(6652),
|
||||
CreatedAt = new DateTime(2026, 6, 17, 14, 44, 40, 147, DateTimeKind.Utc).AddTicks(6003),
|
||||
Description = "10% discount for premium customers",
|
||||
DiscountPercent = 10m,
|
||||
IsActive = true,
|
||||
|
||||
Reference in New Issue
Block a user