This commit is contained in:
Tizian.Breuch
2025-07-31 14:49:15 +02:00
parent 2ed950fbfd
commit 7a494f0d9d

View File

@@ -1,20 +1,19 @@
// src/Webshop.Api/SwaggerFilters/PaymentMethodExampleOperationFilter.cs // src/Webshop.Api/SwaggerFilters/SupplierExampleOperationFilter.cs
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen; using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.OpenApi.Any; using Microsoft.OpenApi.Any;
using Webshop.Domain.Enums;
using System.Net.Mime; // Für MediaTypeNames using System.Net.Mime; // Für MediaTypeNames
using System.Collections.Generic; // Für Dictionary using System.Collections.Generic; // Für Dictionary
namespace Webshop.Api.SwaggerFilters namespace Webshop.Api.SwaggerFilters
{ {
public class PaymentMethodExampleOperationFilter : IOperationFilter public class SupplierExampleOperationFilter : IOperationFilter
{ {
public void Apply(OpenApiOperation operation, OperationFilterContext context) public void Apply(OpenApiOperation operation, OperationFilterContext context)
{ {
// Überprüfe, ob dies die "CreatePaymentMethod"-Methode im "AdminPaymentMethodsController" ist // Überprüfe, ob dies die "CreateSupplier"-Methode im "AdminSuppliersController" ist
if (context.MethodInfo.DeclaringType == typeof(Controllers.Admin.AdminPaymentMethodsController) && if (context.MethodInfo.DeclaringType == typeof(Controllers.Admin.AdminSuppliersController) &&
context.MethodInfo.Name == "CreatePaymentMethod") context.MethodInfo.Name == "CreateSupplier")
{ {
if (operation.RequestBody == null || if (operation.RequestBody == null ||
!operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType)) !operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType))
@@ -28,83 +27,33 @@ namespace Webshop.Api.SwaggerFilters
} }
mediaType.Examples.Clear(); mediaType.Examples.Clear();
// Beispiel 1: Banküberweisung // Beispiel 1: Lokaler Lieferant
mediaType.Examples["BankTransfer"] = new OpenApiExample mediaType.Examples["LocalSupplier"] = new OpenApiExample
{ {
Summary = "Beispiel: Banküberweisung", Summary = "Beispiel: Lokaler Lieferant",
Value = new OpenApiObject Value = new OpenApiObject
{ {
["name"] = new OpenApiString("Banküberweisung (Vorkasse)"), ["name"] = new OpenApiString("Lokale Manufaktur GmbH"),
["description"] = new OpenApiString("Bitte überweisen Sie den Betrag auf unser Konto."), ["contactPerson"] = new OpenApiString("Hans Meier"),
["isActive"] = new OpenApiBoolean(true), ["email"] = new OpenApiString("hans.meier@manufaktur-lokal.de"),
["paymentGatewayType"] = new OpenApiString(PaymentGatewayType.BankTransfer.ToString()), ["phoneNumber"] = new OpenApiString("+49 89 1234567"),
// << KORREKTUR: Configuration als OpenApiObject >> ["addressId"] = new OpenApiNull(),
["configuration"] = new OpenApiObject ["notes"] = new OpenApiString("Handgefertigte Produkte, kurze Lieferzeiten.")
{
["IBAN"] = new OpenApiString("DE89370400440532013000"),
["BIC"] = new OpenApiString("COBADEFFXXX"),
["BankName"] = new OpenApiString("Beispielbank AG")
},
["processingFee"] = new OpenApiDouble(0)
} }
}; };
// Beispiel 2: Stripe // Beispiel 2: Internationaler Großhändler
mediaType.Examples["Stripe"] = new OpenApiExample mediaType.Examples["InternationalSupplier"] = new OpenApiExample
{ {
Summary = "Beispiel: Kreditkarte (Stripe)", Summary = "Beispiel: Internationaler Großhändler",
Value = new OpenApiObject Value = new OpenApiObject
{ {
["name"] = new OpenApiString("Kreditkarte (via Stripe)"), ["name"] = new OpenApiString("Global Imports Inc."),
["description"] = new OpenApiString("Sichere Zahlung mit Ihrer Kreditkarte."), ["contactPerson"] = new OpenApiString("John Smith"),
["isActive"] = new OpenApiBoolean(true), ["email"] = new OpenApiString("john.smith@global-imports.com"),
["paymentGatewayType"] = new OpenApiString(PaymentGatewayType.Stripe.ToString()), ["phoneNumber"] = new OpenApiString("+1 555 987 6543"),
// << KORREKTUR: Configuration als OpenApiObject >> ["addressId"] = new OpenApiNull(),
["configuration"] = new OpenApiObject ["notes"] = new OpenApiString("Container-Lieferungen, 4-6 Wochen Vorlaufzeit.")
{
["PublicKey"] = new OpenApiString("pk_test_YOUR_KEY"),
["SecretKey"] = new OpenApiString("sk_test_YOUR_SECRET")
},
["processingFee"] = new OpenApiDouble(1.5)
}
};
// Beispiel 3: PayPal
mediaType.Examples["PayPal"] = new OpenApiExample
{
Summary = "Beispiel: PayPal",
Value = new OpenApiObject
{
["name"] = new OpenApiString("PayPal"),
["description"] = new OpenApiString("Zahlen Sie schnell und sicher mit PayPal."),
["isActive"] = new OpenApiBoolean(true),
["paymentGatewayType"] = new OpenApiString(PaymentGatewayType.PayPal.ToString()),
// << KORREKTUR: Configuration als OpenApiObject >>
["configuration"] = new OpenApiObject
{
["ClientId"] = new OpenApiString("YOUR_PAYPAL_CLIENT_ID"),
["ClientSecret"] = new OpenApiString("YOUR_PAYPAL_SECRET")
},
["processingFee"] = new OpenApiDouble(2.5)
}
};
// Beispiel 4: Rechnung
mediaType.Examples["Invoice"] = new OpenApiExample
{
Summary = "Beispiel: Kauf auf Rechnung",
Value = new OpenApiObject
{
["name"] = new OpenApiString("Kauf auf Rechnung"),
["description"] = new OpenApiString("Nur für registrierte Geschäftskunden."),
["isActive"] = new OpenApiBoolean(true),
["paymentGatewayType"] = new OpenApiString(PaymentGatewayType.Invoice.ToString()),
// << KORREKTUR: Configuration als OpenApiObject (kann auch leer sein) >>
["configuration"] = new OpenApiObject
{
["PaymentTerms"] = new OpenApiString("14 Tage netto")
},
["processingFee"] = new OpenApiDouble(0)
} }
}; };
} }