sequenceDiagram
App->>Customer: purchase(plan, recurrence)
Customer->>Subcription: constructor(plan, recurrence)
Subcription->>Plan: get_products
Plan-->>Subcription: list of products
Subcription->>SubcriptionItem: constructor(product)
SubcriptionItem-->>Subcription: item
Subcription-->>Customer: subscription
Customer-->>App: subscription
sequenceDiagram
App->>Customer: upgrade(plan, recurrence)
Customer->>Subcription: upgrade(plan, recurrence)
Subcription->>Plan: get_products
Plan-->>Subcription: list of products
Subcription->>SubcriptionItem: constructor(product)
SubcriptionItem-->>Subcription: item
Subcription-->>Customer: subscription
Customer-->>App: subscription