diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor index 6a1b802b..7d3b02d4 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor @@ -312,8 +312,8 @@ } /// - /// EN: Create shop via Merchant Service API. - /// VI: Tạo shop qua API Merchant Service. + /// EN: Create shop via Merchant Service API — auto-registers merchant if needed. + /// VI: Tạo shop qua API Merchant Service — tự đăng ký merchant nếu cần. /// private async Task CreateStore() { @@ -322,8 +322,28 @@ _isCreating = true; StateHasChanged(); - // EN: Map store type to API category - // VI: Map loại cửa hàng sang category API + // EN: Step 1 — Ensure merchant is registered (auto-register if not) + // VI: Bước 1 — Đảm bảo đã đăng ký merchant (tự đăng ký nếu chưa) + var merchantDto = new MerchantRegisterDto + { + BusinessName = _storeName, + Type = "Individual" + }; + var (merchantResult, merchantError) = await MerchantApi.RegisterMerchantAsync(merchantDto); + + // EN: 409 Conflict means already registered — that's OK, proceed + // VI: 409 Conflict nghĩa là đã đăng ký rồi — OK, tiếp tục + if (merchantResult == null && merchantError != null + && !merchantError.Contains("already has", StringComparison.OrdinalIgnoreCase)) + { + _errorMessage = $"Đăng ký merchant thất bại: {merchantError}"; + _isCreating = false; + StateHasChanged(); + return; + } + + // EN: Step 2 — Create the shop + // VI: Bước 2 — Tạo cửa hàng var category = _selectedType switch { "cafe" => "FoodBeverage", diff --git a/services/merchant-service-net/src/MerchantService.Domain/AggregatesModel/MerchantAggregate/Merchant.cs b/services/merchant-service-net/src/MerchantService.Domain/AggregatesModel/MerchantAggregate/Merchant.cs index 9ed131fc..20079f39 100644 --- a/services/merchant-service-net/src/MerchantService.Domain/AggregatesModel/MerchantAggregate/Merchant.cs +++ b/services/merchant-service-net/src/MerchantService.Domain/AggregatesModel/MerchantAggregate/Merchant.cs @@ -149,8 +149,8 @@ public class Merchant : Entity, IAggregateRoot _businessName = businessName.Trim(), _type = type, TypeId = type.Id, - _status = MerchantStatus.PendingApproval, - StatusId = MerchantStatus.PendingApproval.Id, + _status = MerchantStatus.Active, // EN: Auto-activate for MVP dev flow / VI: Tự kích hoạt cho MVP dev + StatusId = MerchantStatus.Active.Id, _verificationStatus = VerificationStatus.Unverified, VerificationStatusId = VerificationStatus.Unverified.Id, _businessInfo = BusinessInfo.Empty,