diff --git a/Webshop.Api/SwaggerFilters/SupplierExampleOperationFilter.cs b/Webshop.Api/SwaggerFilters/SupplierExampleOperationFilter.cs index 45ef3bc..c9e08bb 100644 --- a/Webshop.Api/SwaggerFilters/SupplierExampleOperationFilter.cs +++ b/Webshop.Api/SwaggerFilters/SupplierExampleOperationFilter.cs @@ -1,18 +1,20 @@ -// src/Webshop.Api/SwaggerFilters/SupplierExampleOperationFilter.cs +// src/Webshop.Api/SwaggerFilters/PaymentMethodExampleOperationFilter.cs using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; using Microsoft.OpenApi.Any; +using Webshop.Domain.Enums; using System.Net.Mime; // Für MediaTypeNames +using System.Collections.Generic; // Für Dictionary namespace Webshop.Api.SwaggerFilters { - public class SupplierExampleOperationFilter : IOperationFilter + public class PaymentMethodExampleOperationFilter : IOperationFilter { public void Apply(OpenApiOperation operation, OperationFilterContext context) { - // Überprüfe, ob dies die "CreateSupplier"-Methode im "AdminSuppliersController" ist - if (context.MethodInfo.DeclaringType == typeof(Controllers.Admin.AdminSuppliersController) && - context.MethodInfo.Name == "CreateSupplier") + // Überprüfe, ob dies die "CreatePaymentMethod"-Methode im "AdminPaymentMethodsController" ist + if (context.MethodInfo.DeclaringType == typeof(Controllers.Admin.AdminPaymentMethodsController) && + context.MethodInfo.Name == "CreatePaymentMethod") { if (operation.RequestBody == null || !operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType)) @@ -26,33 +28,83 @@ namespace Webshop.Api.SwaggerFilters } mediaType.Examples.Clear(); - // Beispiel 1: Lokaler Lieferant - mediaType.Examples["LocalSupplier"] = new OpenApiExample + // Beispiel 1: Banküberweisung + mediaType.Examples["BankTransfer"] = new OpenApiExample { - Summary = "Beispiel: Lokaler Lieferant", + Summary = "Beispiel: Banküberweisung", Value = new OpenApiObject { - ["name"] = new OpenApiString("Lokale Manufaktur GmbH"), - ["contactPerson"] = new OpenApiString("Hans Meier"), - ["email"] = new OpenApiString("hans.meier@manufaktur-lokal.de"), - ["phoneNumber"] = new OpenApiString("+49 89 1234567"), - ["addressId"] = new OpenApiNull(), - ["notes"] = new OpenApiString("Handgefertigte Produkte, kurze Lieferzeiten.") + ["name"] = new OpenApiString("Banküberweisung (Vorkasse)"), + ["description"] = new OpenApiString("Bitte überweisen Sie den Betrag auf unser Konto."), + ["isActive"] = new OpenApiBoolean(true), + ["paymentGatewayType"] = new OpenApiString(PaymentGatewayType.BankTransfer.ToString()), + // << KORREKTUR: Configuration als OpenApiObject >> + ["configuration"] = new OpenApiObject + { + ["IBAN"] = new OpenApiString("DE89370400440532013000"), + ["BIC"] = new OpenApiString("COBADEFFXXX"), + ["BankName"] = new OpenApiString("Beispielbank AG") + }, + ["processingFee"] = new OpenApiDouble(0) } }; - // Beispiel 2: Internationaler Großhändler - mediaType.Examples["InternationalSupplier"] = new OpenApiExample + // Beispiel 2: Stripe + mediaType.Examples["Stripe"] = new OpenApiExample { - Summary = "Beispiel: Internationaler Großhändler", + Summary = "Beispiel: Kreditkarte (Stripe)", Value = new OpenApiObject { - ["name"] = new OpenApiString("Global Imports Inc."), - ["contactPerson"] = new OpenApiString("John Smith"), - ["email"] = new OpenApiString("john.smith@global-imports.com"), - ["phoneNumber"] = new OpenApiString("+1 555 987 6543"), - ["addressId"] = new OpenApiNull(), - ["notes"] = new OpenApiString("Container-Lieferungen, 4-6 Wochen Vorlaufzeit.") + ["name"] = new OpenApiString("Kreditkarte (via Stripe)"), + ["description"] = new OpenApiString("Sichere Zahlung mit Ihrer Kreditkarte."), + ["isActive"] = new OpenApiBoolean(true), + ["paymentGatewayType"] = new OpenApiString(PaymentGatewayType.Stripe.ToString()), + // << KORREKTUR: Configuration als OpenApiObject >> + ["configuration"] = new OpenApiObject + { + ["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) } }; }