Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule Plans do
- alias Plans.Transactions
- alias LineItems
- def change_plans(subscription, new_plan, user) do
- Sage.new()
- |> Sage.run(:validate, Transactions.authorize/2)
- |> Sage.run(:update_plan, Transactions.update_plan/2)
- |> Sage.run(:charge_plan, Transactions.charge/2, Transactions.refund/4)
- |> update_line_items(subscription, new_plan, user)
- end
- defp update_line_items(sage, subscription, new_plan, user) do
- line_items = LineItems.fetch_new_line_items(subscription, new_plan)
- sage = Enum.reduce(line_items, sage, fn line_item ->
- LineItems.Sagas.create_line_item(sage)
- end)
- Enum.reduce(subscriptions.line_items, sage, fn line_item ->
- LineItems.Sagas.remove_line_item(line_item)
- end)
- end
- end
Add Comment
Please, Sign In to add comment