Skip to content

Commit a527bfc

Browse files
committed
in midst of setting up transfer notifs
1 parent 3549f86 commit a527bfc

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

lib/algora/payments/payments.ex

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,17 +253,23 @@ defmodule Algora.Payments do
253253
end
254254
end
255255

256+
@spec execute_pending_transfers(user_id :: String.t()) :: {:ok, Stripe.Transfer.t()} | {:error, :not_found}
256257
def execute_pending_transfers(user_id) do
257258
pending_amount = get_pending_amount(user_id)
258259

259-
with {:ok, account} <- Repo.fetch_by(Account, user_id: user_id, provider: "stripe", payouts_enabled: true),
260+
with {:ok, account} <- fetch_active_account(user_id),
260261
true <- Money.positive?(pending_amount) do
261262
initialize_and_execute_transfer(user_id, pending_amount, account)
262263
else
263264
_ -> {:ok, nil}
264265
end
265266
end
266267

268+
@spec fetch_active_account(user_id :: String.t()) :: {:ok, Account.t()} | {:error, :not_found}
269+
def fetch_active_account(user_id) do
270+
Repo.fetch_by(Account, user_id: user_id, provider: "stripe", payouts_enabled: true)
271+
end
272+
267273
defp get_pending_amount(user_id) do
268274
total_credits =
269275
Repo.one(

lib/algora_web/controllers/webhooks/stripe_controller.ex

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ defmodule AlgoraWeb.Webhooks.StripeController do
2626
set: [status: :succeeded, succeeded_at: DateTime.utc_now()]
2727
)
2828

29-
# TODO: split into two groups:
30-
# - has active payout account -> execute pending transfers
31-
# - has no active payout account -> notify user to connect payout account
3229
jobs_result =
3330
from(t in Transaction,
3431
where: t.group_id == ^group_id,
@@ -39,11 +36,18 @@ defmodule AlgoraWeb.Webhooks.StripeController do
3936
|> Enum.map(fn %{user_id: user_id} -> user_id end)
4037
|> Enum.uniq()
4138
|> Enum.reduce_while(:ok, fn user_id, :ok ->
42-
case %{user_id: user_id}
43-
|> ExecutePendingTransfers.new()
44-
|> Oban.insert() do
45-
{:ok, _job} -> {:cont, :ok}
46-
error -> {:halt, error}
39+
case Payments.fetch_active_account(user_id) do
40+
{:ok, _account} ->
41+
case %{user_id: user_id}
42+
|> ExecutePendingTransfers.new()
43+
|> Oban.insert() do
44+
{:ok, _job} -> {:cont, :ok}
45+
error -> {:halt, error}
46+
end
47+
48+
{:error, :not_found} ->
49+
# TODO: notify user to connect payout account
50+
{:cont, :ok}
4751
end
4852
end)
4953

0 commit comments

Comments
 (0)