Skip to content

Commit b1d0f98

Browse files
committed
in midst of setting up transfer notifs
1 parent 9afd755 commit b1d0f98

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
@@ -319,17 +319,23 @@ defmodule Algora.Payments do
319319
end
320320
end
321321

322+
@spec execute_pending_transfers(user_id :: String.t()) :: {:ok, Stripe.Transfer.t()} | {:error, :not_found}
322323
def execute_pending_transfers(user_id) do
323324
pending_amount = get_pending_amount(user_id)
324325

325-
with {:ok, account} <- Repo.fetch_by(Account, user_id: user_id, provider: "stripe", payouts_enabled: true),
326+
with {:ok, account} <- fetch_active_account(user_id),
326327
true <- Money.positive?(pending_amount) do
327328
initialize_and_execute_transfer(user_id, pending_amount, account)
328329
else
329330
_ -> {:ok, nil}
330331
end
331332
end
332333

334+
@spec fetch_active_account(user_id :: String.t()) :: {:ok, Account.t()} | {:error, :not_found}
335+
def fetch_active_account(user_id) do
336+
Repo.fetch_by(Account, user_id: user_id, provider: "stripe", payouts_enabled: true)
337+
end
338+
333339
defp get_pending_amount(user_id) do
334340
total_credits =
335341
Repo.one(

lib/algora_web/controllers/webhooks/stripe_controller.ex

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

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

0 commit comments

Comments
 (0)