This commit is contained in:
Tizian.Breuch
2025-07-23 22:42:43 +02:00
parent 8219bf8d98
commit b85e07f14e

View File

@@ -1,10 +1,12 @@
// src/Webshop.Api/SwaggerFilters/AddExampleSchemaFilter.cs // src/Webshop.Api/SwaggerFilters/AddExampleSchemaFilter.cs
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen; using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.OpenApi.Any; // Wichtig für OpenApiString, OpenApiDouble etc. using Microsoft.OpenApi.Any;
using Webshop.Application.DTOs; // ProductDto, AdminProductDto, SupplierDto using Webshop.Application.DTOs;
using Webshop.Application.DTOs.Auth; // LoginRequestDto, RegisterRequestDto, AuthResponseDto using Webshop.Application.DTOs.Auth;
using Webshop.Application.DTOs.Users; // UserDto using Webshop.Application.DTOs.Users;
using Webshop.Domain.Enums;
using System; // Für Guid.NewGuid()
namespace Webshop.Api.SwaggerFilters namespace Webshop.Api.SwaggerFilters
{ {
@@ -13,21 +15,23 @@ namespace Webshop.Api.SwaggerFilters
public void Apply(OpenApiSchema schema, SchemaFilterContext context) public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{ {
var type = context.Type; var type = context.Type;
// Eine eindeutige Kennung, die wir an SKU/Slug anhängen können
var uniqueId = Guid.NewGuid().ToString().Substring(0, 8); // Z.B. 8 Zeichen der GUID
// --- Authentifizierung & Benutzer --- // --- Authentifizierung & Benutzer (Allgemeine Schemas) ---
if (type == typeof(LoginRequestDto)) if (type == typeof(LoginRequestDto))
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["email"] = new OpenApiString("admin@yourwebshop.com"), ["email"] = new OpenApiString("user@example.com"),
["password"] = new OpenApiString("SecureAdminPass123!") ["password"] = new OpenApiString("Password123!")
}; };
} }
else if (type == typeof(RegisterRequestDto)) else if (type == typeof(RegisterRequestDto))
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["email"] = new OpenApiString("neuer.kunde@example.com"), ["email"] = new OpenApiString($"neuer.kunde.{uniqueId}@example.com"), // Eindeutige E-Mail
["password"] = new OpenApiString("NeuesPasswort123!"), ["password"] = new OpenApiString("NeuesPasswort123!"),
["confirmPassword"] = new OpenApiString("NeuesPasswort123!"), ["confirmPassword"] = new OpenApiString("NeuesPasswort123!"),
["firstName"] = new OpenApiString("Erika"), ["firstName"] = new OpenApiString("Erika"),
@@ -42,7 +46,7 @@ namespace Webshop.Api.SwaggerFilters
["errorMessage"] = new OpenApiString(""), ["errorMessage"] = new OpenApiString(""),
["token"] = new OpenApiString("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"), ["token"] = new OpenApiString("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"),
["userId"] = new OpenApiString(Guid.NewGuid().ToString()), ["userId"] = new OpenApiString(Guid.NewGuid().ToString()),
["email"] = new OpenApiString("test@example.com"), ["email"] = new OpenApiString("loggedin@example.com"),
["roles"] = new OpenApiArray { new OpenApiString("Customer") } ["roles"] = new OpenApiArray { new OpenApiString("Customer") }
}; };
} }
@@ -51,9 +55,9 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.NewGuid().ToString()), ["id"] = new OpenApiString(Guid.NewGuid().ToString()),
["email"] = new OpenApiString("admin@yourwebshop.com"), ["email"] = new OpenApiString("user@example.com"),
["userName"] = new OpenApiString("admin@yourwebshop.com"), ["userName"] = new OpenApiString("user@example.com"),
["roles"] = new OpenApiArray { new OpenApiString("Admin") }, ["roles"] = new OpenApiArray { new OpenApiString("Customer") },
["createdDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")), ["createdDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")),
["emailConfirmed"] = new OpenApiBoolean(true) ["emailConfirmed"] = new OpenApiBoolean(true)
}; };
@@ -63,36 +67,36 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), // Bei POST leer lassen/null ["id"] = new OpenApiString(Guid.Empty.ToString()),
["name"] = new OpenApiString("Beispiel Produkt X"), ["name"] = new OpenApiString($"Public Produkt Beispiel {uniqueId}"),
["description"] = new OpenApiString("Eine kurze Beschreibung für das Produkt X."), ["description"] = new OpenApiString("Eine kurze Beschreibung für das öffentliche Produkt."),
["sku"] = new OpenApiString("SKU-PUB-X001"), // Muss einzigartig sein! ["sku"] = new OpenApiString($"PUB-PROD-{uniqueId}"),
["price"] = new OpenApiDouble(29.99), ["price"] = new OpenApiDouble(29.99),
["isActive"] = new OpenApiBoolean(true), ["isActive"] = new OpenApiBoolean(true),
["isInStock"] = new OpenApiBoolean(true), ["isInStock"] = new OpenApiBoolean(true),
["stockQuantity"] = new OpenApiInteger(100), ["stockQuantity"] = new OpenApiInteger(100),
["imageUrl"] = new OpenApiString("https://example.com/images/productX.jpg") ["imageUrl"] = new OpenApiString("https://example.com/images/public_prod.jpg")
}; };
} }
else if (type == typeof(AdminProductDto)) else if (type == typeof(AdminProductDto))
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), // Bei POST leer lassen/null ["id"] = new OpenApiString(Guid.Empty.ToString()),
["name"] = new OpenApiString("Admin Produkt Z (Full Details)"), ["name"] = new OpenApiString($"Admin Produkt (Beispiel) {uniqueId}"),
["description"] = new OpenApiString("Detaillierte Beschreibung für das Admin-Produkt Z."), ["description"] = new OpenApiString("Detaillierte Beschreibung für das Admin-Produkt."),
["sku"] = new OpenApiString("SKU-ADM-Z001"), // Muss einzigartig sein! ["sku"] = new OpenApiString($"ADM-PROD-{uniqueId}"),
["price"] = new OpenApiDouble(149.99), ["price"] = new OpenApiDouble(149.99),
["oldPrice"] = new OpenApiNull(), ["oldPrice"] = new OpenApiNull(),
["isActive"] = new OpenApiBoolean(true), ["isActive"] = new OpenApiBoolean(true),
["isInStock"] = new OpenApiBoolean(true), ["isInStock"] = new OpenApiBoolean(true),
["stockQuantity"] = new OpenApiInteger(50), ["stockQuantity"] = new OpenApiInteger(50),
["weight"] = new OpenApiDouble(1.2), ["weight"] = new OpenApiDouble(1.2),
["imageUrl"] = new OpenApiString("https://example.com/images/admin_prodZ.jpg"), ["imageUrl"] = new OpenApiString("https://example.com/images/admin_prod.jpg"),
["slug"] = new OpenApiString("admin-produkt-z-details"), // Muss einzigartig sein! ["slug"] = new OpenApiString($"admin-produkt-beispiel-slug-{uniqueId}"),
["createdDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")), ["createdDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")),
["lastModifiedDate"] = new OpenApiNull(), ["lastModifiedDate"] = new OpenApiNull(),
["supplierId"] = new OpenApiNull(), // ODER new OpenApiString("IHR-ECHTER-LIEFERANTEN-GUID-HIER"), wenn schon in DB ["supplierId"] = new OpenApiNull(), // ODER new OpenApiString("IHR-ECHTER-LIEFERANTEN-GUID-HIER")
["purchasePrice"] = new OpenApiDouble(80.00) ["purchasePrice"] = new OpenApiDouble(80.00)
}; };
} }
@@ -100,12 +104,12 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), // Bei POST leer lassen/null ["id"] = new OpenApiString(Guid.Empty.ToString()),
["name"] = new OpenApiString("Zulieferer Solutions GmbH"), ["name"] = new OpenApiString($"Zulieferer Solutions GmbH {uniqueId}"),
["contactPerson"] = new OpenApiString("Anna Bauer"), ["contactPerson"] = new OpenApiString("Anna Bauer"),
["email"] = new OpenApiString("kontakt@zulieferer.com"), ["email"] = new OpenApiString($"kontakt.{uniqueId}@zulieferer.com"),
["phoneNumber"] = new OpenApiString("+49 151 98765432"), ["phoneNumber"] = new OpenApiString("+4915198765432"),
["addressId"] = new OpenApiNull(), // Oder new OpenApiString("IHR-ECHTER-ADRESS-GUID-HIER") ["addressId"] = new OpenApiNull(),
["notes"] = new OpenApiString("Wichtiger Lieferant für Rohstoffe.") ["notes"] = new OpenApiString("Wichtiger Lieferant für Rohstoffe.")
}; };
} }
@@ -114,12 +118,12 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), ["id"] = new OpenApiString(Guid.Empty.ToString()),
["productId"] = new OpenApiString("PRODUCT_ID_HERE"), // MUSS ECHTE Produkt-ID sein ["productId"] = new OpenApiString("EIN_PRODUKT_GUID_HIER"),
["name"] = new OpenApiString("Farbe"), ["name"] = new OpenApiString("Variante: Schwarz L"),
["value"] = new OpenApiString("Rot"), ["value"] = new OpenApiString("Schwarz, L"),
["sku"] = new OpenApiString("VAR-RED-001"), ["sku"] = new OpenApiString($"VARIANT-ABC-{uniqueId}"),
["priceAdjustment"] = new OpenApiDouble(5.00), ["priceAdjustment"] = new OpenApiDouble(5.00),
["stockQuantity"] = new OpenApiInteger(20), ["stockQuantity"] = new OpenApiInteger(25),
["imageUrl"] = new OpenApiString("https://example.com/images/prod-variant-red.jpg"), ["imageUrl"] = new OpenApiString("https://example.com/images/prod-variant-red.jpg"),
["isActive"] = new OpenApiBoolean(true) ["isActive"] = new OpenApiBoolean(true)
}; };
@@ -129,9 +133,9 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), ["id"] = new OpenApiString(Guid.NewGuid().ToString()),
["name"] = new OpenApiString("Elektronik"), ["name"] = new OpenApiString($"Elektronik {uniqueId}"),
["slug"] = new OpenApiString("elektronik"), ["slug"] = new OpenApiString($"elektronik-{uniqueId}"),
["description"] = new OpenApiString("Produkte rund um Elektronik."), ["description"] = new OpenApiString("Produkte rund um Elektronik."),
["parentCategoryId"] = new OpenApiNull(), ["parentCategoryId"] = new OpenApiNull(),
["imageUrl"] = new OpenApiString("https://example.com/images/category_electronics.jpg"), ["imageUrl"] = new OpenApiString("https://example.com/images/category_electronics.jpg"),
@@ -143,8 +147,8 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["name"] = new OpenApiString("Neue Kategorie"), ["name"] = new OpenApiString($"Neue Kategorie {uniqueId}"),
["slug"] = new OpenApiString("neue-kategorie"), // Muss einzigartig sein! ["slug"] = new OpenApiString($"neue-kategorie-{uniqueId}"),
["description"] = new OpenApiString("Eine Beschreibung für die neue Kategorie."), ["description"] = new OpenApiString("Eine Beschreibung für die neue Kategorie."),
["parentCategoryId"] = new OpenApiNull(), ["parentCategoryId"] = new OpenApiNull(),
["imageUrl"] = new OpenApiString("https://example.com/images/new_category.jpg"), ["imageUrl"] = new OpenApiString("https://example.com/images/new_category.jpg"),
@@ -163,7 +167,7 @@ namespace Webshop.Api.SwaggerFilters
["city"] = new OpenApiString("Musterstadt"), ["city"] = new OpenApiString("Musterstadt"),
["postalCode"] = new OpenApiString("12345"), ["postalCode"] = new OpenApiString("12345"),
["country"] = new OpenApiString("Deutschland"), ["country"] = new OpenApiString("Deutschland"),
["type"] = new OpenApiString(AddressType.Shipping.ToString()) // Enum-Beispiel ["type"] = new OpenApiString(AddressType.Shipping.ToString())
}; };
} }
// --- Kunden --- // --- Kunden ---
@@ -171,11 +175,11 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), ["id"] = new OpenApiString(Guid.NewGuid().ToString()),
["userId"] = new OpenApiString("EXISTING_IDENTITY_USER_ID"), // MUSS ECHTE IdentityUser ID sein ["userId"] = new OpenApiString("EIN_IDENTITY_USER_ID_HIER"),
["firstName"] = new OpenApiString("Max"), ["firstName"] = new OpenApiString("Max"),
["lastName"] = new OpenApiString("Mustermann"), ["lastName"] = new OpenApiString("Mustermann"),
["email"] = new OpenApiString("max.mustermann@example.com"), ["email"] = new OpenApiString($"max.mustermann.{uniqueId}@example.com"),
["phoneNumber"] = new OpenApiString("+491719876543"), ["phoneNumber"] = new OpenApiString("+491719876543"),
["defaultShippingAddressId"] = new OpenApiNull(), ["defaultShippingAddressId"] = new OpenApiNull(),
["defaultBillingAddressId"] = new OpenApiNull() ["defaultBillingAddressId"] = new OpenApiNull()
@@ -187,16 +191,17 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), ["id"] = new OpenApiString(Guid.Empty.ToString()),
["name"] = new OpenApiString("Sommerrabatt"), ["name"] = new OpenApiString($"Sommerrabatt {uniqueId}"),
["description"] = new OpenApiString("10% Rabatt auf alles"), ["description"] = new OpenApiString("10% Rabatt auf alles"),
["type"] = new OpenApiString(DiscountType.Percentage.ToString()), ["type"] = new OpenApiString(DiscountType.Percentage.ToString()),
["value"] = new OpenApiDouble(10.00), ["value"] = new OpenApiDouble(10.00),
["couponCode"] = new OpenApiString("SOMMER2025"), // Optional, muss eindeutig sein ["couponCode"] = new OpenApiString($"SOMMER-{uniqueId}"), // Optional, muss eindeutig sein
["startDate"] = new OpenApiString(DateTimeOffset.UtcNow.AddDays(1).ToString("o")), ["startDate"] = new OpenApiString(DateTimeOffset.UtcNow.AddDays(1).ToString("o")),
["endDate"] = new OpenApiString(DateTimeOffset.UtcNow.AddDays(30).ToString("o")), ["endDate"] = new OpenApiString(DateTimeOffset.UtcNow.AddDays(30).ToString("o")),
["isActive"] = new OpenApiBoolean(true), ["isActive"] = new OpenApiBoolean(true),
["maxUses"] = new OpenApiInteger(100), ["maxUses"] = new OpenApiInteger(100),
["currentUses"] = new OpenApiInteger(0) ["currentUses"] = new OpenApiInteger(0),
["description"] = new OpenApiString("Gültig vom 1. September bis 30. September.")
}; };
} }
// --- Bestellungen --- // --- Bestellungen ---
@@ -204,24 +209,24 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["customerId"] = new OpenApiString("CUSTOMER_ID_HERE"), // Oder null für Gastbestellung ["customerId"] = new OpenApiString("CUSTOMER_ID_HERE"),
["guestEmail"] = new OpenApiString("guest@example.com"), // Nur bei Gastbestellung ["guestEmail"] = new OpenApiString($"gast.besteller.{uniqueId}@example.com"),
["guestPhoneNumber"] = new OpenApiString("+491701234567"), ["guestPhoneNumber"] = new OpenApiString("+4917611223344"),
["shippingAddressId"] = new OpenApiString("VALID_ADDRESS_ID_HERE"), // MUSS EXISTIEREN ["shippingAddressId"] = new OpenApiString("VALID_ADDRESS_ID_HERE"),
["billingAddressId"] = new OpenApiString("VALID_ADDRESS_ID_HERE"), // MUSS EXISTIEREN ["billingAddressId"] = new OpenApiString("VALID_ADDRESS_ID_HERE"),
["paymentMethodId"] = new OpenApiString("VALID_PAYMENT_METHOD_ID_HERE"), // MUSS EXISTIEREN ["paymentMethodId"] = new OpenApiString("VALID_PAYMENT_METHOD_ID_HERE"),
["shippingMethodId"] = new OpenApiString("VALID_SHIPPING_METHOD_ID_HERE"), // MUSS EXISTIEREN ["shippingMethodId"] = new OpenApiString("VALID_SHIPPING_METHOD_ID_HERE"),
["items"] = new OpenApiArray ["items"] = new OpenApiArray
{ {
new OpenApiObject new OpenApiObject
{ {
["productId"] = new OpenApiString("VALID_PRODUCT_ID_HERE"), // MUSS EXISTIEREN ["productId"] = new OpenApiString("VALID_PRODUCT_ID_HERE"),
["quantity"] = new OpenApiInteger(1) ["quantity"] = new OpenApiInteger(1)
}, },
new OpenApiObject new OpenApiObject
{ {
["productId"] = new OpenApiString("ANOTHER_PRODUCT_ID_HERE"), ["productId"] = new OpenApiString("ANOTHER_PRODUCT_ID_HERE"),
["productVariantId"] = new OpenApiString("VALID_VARIANT_ID_HERE"), // Optional ["productVariantId"] = new OpenApiString("VALID_VARIANT_ID_HERE"),
["quantity"] = new OpenApiInteger(2) ["quantity"] = new OpenApiInteger(2)
} }
} }
@@ -232,7 +237,7 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["productId"] = new OpenApiString("VALID_PRODUCT_ID_HERE"), ["productId"] = new OpenApiString("VALID_PRODUCT_ID_HERE"),
["productVariantId"] = new OpenApiNull(), // Oder new OpenApiString("VALID_VARIANT_ID_HERE") ["productVariantId"] = new OpenApiNull(),
["quantity"] = new OpenApiInteger(1) ["quantity"] = new OpenApiInteger(1)
}; };
} }
@@ -241,7 +246,7 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.NewGuid().ToString()), ["id"] = new OpenApiString(Guid.NewGuid().ToString()),
["orderNumber"] = new OpenApiString("WS-2025-0001"), ["orderNumber"] = new OpenApiString($"WS-2025-{uniqueId}"),
["orderDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")), ["orderDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")),
["status"] = new OpenApiString(OrderStatus.Processing.ToString()), ["status"] = new OpenApiString(OrderStatus.Processing.ToString()),
["totalAmount"] = new OpenApiDouble(123.45), ["totalAmount"] = new OpenApiDouble(123.45),
@@ -255,16 +260,16 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.NewGuid().ToString()), ["id"] = new OpenApiString(Guid.NewGuid().ToString()),
["orderNumber"] = new OpenApiString("WS-2025-0002"), ["orderNumber"] = new OpenApiString($"WS-2025-{uniqueId}-Detail"),
["customerId"] = new OpenApiString(Guid.NewGuid().ToString()), ["customerId"] = new OpenApiString(Guid.NewGuid().ToString()),
["orderDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")), ["orderDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")),
["status"] = new OpenApiString(OrderStatus.Shipped.ToString()), ["status"] = new OpenApiString(OrderStatus.Shipped.ToString()),
["totalAmount"] = new OpenApiDouble(245.67), ["totalAmount"] = new OpenApiDouble(245.67),
["shippingAddressId"] = new OpenApiString("VALID_ADDRESS_ID"), ["shippingAddressId"] = new OpenApiString("EXISTING_ADDRESS_ID"),
["billingAddressId"] = new OpenApiString("VALID_ADDRESS_ID"), ["billingAddressId"] = new OpenApiString("EXISTING_ADDRESS_ID"),
["paymentMethodId"] = new OpenApiString("VALID_PAYMENT_METHOD_ID"), ["paymentMethodId"] = new OpenApiString("EXISTING_PAYMENT_METHOD_ID"),
["orderItems"] = new OpenApiArray { ["orderItems"] = new OpenApiArray {
new OpenApiObject { ["id"] = new OpenApiString(Guid.NewGuid().ToString()), ["productId"] = new OpenApiString("PROD_A_ID"), ["productName"] = new OpenApiString("Produkt A"), ["quantity"] = new OpenApiInteger(1), ["unitPrice"] = new OpenApiDouble(100.00), ["totalPrice"] = new OpenApiDouble(100.00) } new OpenApiObject { ["id"] = new OpenApiString(Guid.NewGuid().ToString()), ["productId"] = new OpenApiString("PROD_B_ID"), ["productName"] = new OpenApiString("Produkt B"), ["quantity"] = new OpenApiInteger(1), ["unitPrice"] = new OpenApiDouble(199.99), ["totalPrice"] = new OpenApiDouble(199.99) }
} }
}; };
} }
@@ -274,22 +279,22 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.NewGuid().ToString()), ["id"] = new OpenApiString(Guid.NewGuid().ToString()),
["productId"] = new OpenApiString("PRODUCT_ID_HERE"), ["productId"] = new OpenApiString("EXISTING_PRODUCT_ID_HERE"),
["customerId"] = new OpenApiString("CUSTOMER_ID_HERE"), ["customerId"] = new OpenApiString("EXISTING_CUSTOMER_ID_HERE"),
["rating"] = new OpenApiInteger(5), ["rating"] = new OpenApiInteger(5),
["title"] = new OpenApiString("Super Produkt!"), ["title"] = new OpenApiString($"Super Produkt! ({uniqueId})"),
["comment"] = new OpenApiString("Ich bin sehr zufrieden mit diesem Produkt."), ["comment"] = new OpenApiString("Ich bin sehr zufrieden mit diesem Produkt."),
["reviewDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")), ["reviewDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")),
["isApproved"] = new OpenApiBoolean(true) ["isApproved"] = new OpenApiBoolean(false)
}; };
} }
else if (type == typeof(CreateReviewDto)) else if (type == typeof(CreateReviewDto))
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["productId"] = new OpenApiString("PRODUCT_ID_HERE"), ["productId"] = new OpenApiString("EXISTING_PRODUCT_ID_HERE"),
["rating"] = new OpenApiInteger(4), ["rating"] = new OpenApiInteger(4),
["title"] = new OpenApiString("Gute Qualität"), ["title"] = new OpenApiString($"Gute Qualität ({uniqueId})"),
["comment"] = new OpenApiString("Das Produkt ist gut, aber die Lieferung dauerte etwas.") ["comment"] = new OpenApiString("Das Produkt ist gut, aber die Lieferung dauerte etwas.")
}; };
} }
@@ -298,9 +303,9 @@ namespace Webshop.Api.SwaggerFilters
{ {
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["key"] = new OpenApiString("ShippingCostFlatRate"), ["key"] = new OpenApiString($"GlobalTaxRate-{uniqueId}"), // Für POST: Muss eindeutig sein
["value"] = new OpenApiString("5.99"), ["value"] = new OpenApiString("0.19"),
["description"] = new OpenApiString("Pauschale Versandkosten für alle Bestellungen"), ["description"] = new OpenApiString("Allgemeiner Mehrwertsteuersatz"),
["lastModifiedDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o")) ["lastModifiedDate"] = new OpenApiString(DateTimeOffset.UtcNow.ToString("o"))
}; };
} }
@@ -310,11 +315,11 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), ["id"] = new OpenApiString(Guid.Empty.ToString()),
["name"] = new OpenApiString("Kreditkarte (Stripe)"), ["name"] = new OpenApiString($"Kreditkarte (Stripe) {uniqueId}"),
["description"] = new OpenApiString("Zahlung über Stripe-Gateway."), ["description"] = new OpenApiString("Online-Zahlungsdienstleister."),
["isActive"] = new OpenApiBoolean(true), ["isActive"] = new OpenApiBoolean(true),
["gatewayType"] = new OpenApiString(PaymentGatewayType.Stripe.ToString()), ["gatewayType"] = new OpenApiString(PaymentGatewayType.Stripe.ToString()),
["processingFee"] = new OpenApiDouble(0.02) ["processingFee"] = new OpenApiDouble(0.035)
}; };
} }
// --- Versandmethoden --- // --- Versandmethoden ---
@@ -323,12 +328,12 @@ namespace Webshop.Api.SwaggerFilters
schema.Example = new OpenApiObject schema.Example = new OpenApiObject
{ {
["id"] = new OpenApiString(Guid.Empty.ToString()), ["id"] = new OpenApiString(Guid.Empty.ToString()),
["name"] = new OpenApiString("Standardversand DHL"), ["name"] = new OpenApiString($"Expressversand UPS {uniqueId}"),
["description"] = new OpenApiString("Standardlieferung innerhalb von 2-3 Werktagen."), ["description"] = new OpenApiString("Lieferung am nächsten Werktag."),
["cost"] = new OpenApiDouble(4.99), ["cost"] = new OpenApiDouble(12.50),
["isActive"] = new OpenApiBoolean(true), ["isActive"] = new OpenApiBoolean(true),
["minDeliveryDays"] = new OpenApiInteger(2), ["minDeliveryDays"] = new OpenApiInteger(1),
["maxDeliveryDays"] = new OpenApiInteger(3) ["maxDeliveryDays"] = new OpenApiInteger(1)
}; };
} }
} }