Skip to content

Featured Products & Subscriptions

Source: pharmanet/lib/core/providers/featured_product_provider.dart + subscription_service.dart

Overview

PharmaNet offers two monetization features for pharmacies:

Feature Purpose Pricing
Featured Products Boost individual products in search/category results Per-product, time-based
Pharmacy Subscriptions Enable visibility in nearby pharmacy discovery Monthly / Yearly

Providers

Source: pharmanet/lib/core/providers/featured_product_provider.dart

Provider Type Description
subscriptionServiceProvider Provider<SubscriptionService> Singleton service
subscriptionStatusProvider FutureProvider.family<String> Active subscription status
isPharmacySubscribedProvider FutureProvider.family<String> Boolean check
sellerFeaturedProductsProvider FutureProvider.family<String> Seller's featured products
activeFeaturedCountProvider FutureProvider.family<String> Count of active featured
featuredProductPricingProvider Provider<List<Map<String, dynamic>>> Pricing plans

Pricing Plans

Duration Price (ETB)
30 days 100
90 days 300
180 days 600
365 days 1,200

Payment Flow

sequenceDiagram
    participant S as Seller
    participant FP as Boost Flow
    participant CP as Chapa
    participant DB as Supabase

    S->>FP: Select product(s) + duration
    FP->>DB: Create pending payment record
    FP->>S: Show Chapa checkout
    S->>CP: Complete payment
    CP-->>FP: Callback (success)
    FP->>DB: Activate featured status
    DB-->>FP: Set start/end dates
    FP->>S: Confirmation

Pharmacy Subscriptions

Service

Source: pharmanet/lib/core/services/subscription_service.dart

Method Description
getActiveSubscription(pharmacyId) Current active subscription
getCurrentSubscription(pharmacyId) Most recent subscription
createSubscription(pharmacyId, type, amount, txRef, autoRenew) Create new subscription
activateSubscription(id, startDate, endDate) Activate after payment
isPharmacySubscribed(pharmacyId) Boolean visibility check
getSubscriptionHistory(pharmacyId) All past subscriptions
cancelSubscription(id) Cancel auto-renew
updateAutoRenew(id, autoRenew) Toggle auto-renew

Plans

Plan Price (ETB) Features
Monthly 500 Full visibility in nearby/pharmacy search
Yearly 5,000 Full visibility + featured placement

Subscription Enforcement

  • Nearby Pharmacies: Only subscribed pharmacies appear
  • Pharmacy Catalog: Only subscribed pharmacies visible in search
  • Product Visibility: Products from unsubscribed pharmacies hidden from customers