From 0f75544f93d58a1fcb004361afb2d9b0a75c15f2 Mon Sep 17 00:00:00 2001 From: Arnaud Delcasse Date: Tue, 3 Mar 2026 11:51:00 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20ajout=20pricing=20vosges=20(0.30?= =?UTF-8?q?=E2=82=AC/km=20conducteur,=200.20=E2=82=AC/km=20passager)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pricing/pricing.go | 2 ++ pricing/pricing_vosges.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 pricing/pricing_vosges.go diff --git a/pricing/pricing.go b/pricing/pricing.go index 3641d98..631d230 100644 --- a/pricing/pricing.go +++ b/pricing/pricing.go @@ -16,6 +16,8 @@ func NewPricingService(implementation string) (PricingService, error) { return NewMMS43PricingService() case "pfm63": return NewPFM63PricingService() + case "vosges": + return NewVosgesPricingService() default: return nil, fmt.Errorf("pricing implementation %v is not supported", implementation) diff --git a/pricing/pricing_vosges.go b/pricing/pricing_vosges.go new file mode 100644 index 0000000..637ae42 --- /dev/null +++ b/pricing/pricing_vosges.go @@ -0,0 +1,30 @@ +package pricing + +type VosgesPricingService struct{} + +func NewVosgesPricingService() (*VosgesPricingService, error) { + return &VosgesPricingService{}, nil +} + +func (s *VosgesPricingService) Prices(params PricingParams) (map[string]Price, error) { + var distanceForPricing int64 + if params.MobilityType == "solidarity_transport" { + distanceForPricing = params.SharedMobility.DriverDistance + } else { + distanceForPricing = params.SharedMobility.PassengerDistance + } + + passengerAmount := 0.20 * float64(distanceForPricing) + driverAmount := 0.30 * float64(distanceForPricing) + + return map[string]Price{ + "passenger": { + Amount: passengerAmount, + Currency: "EUR", + }, + "driver": { + Amount: driverAmount, + Currency: "EUR", + }, + }, nil +}