Skip to content

Commit 001e87d

Browse files
committed
feat: display job count in org homepage if nonzero
1 parent 69f8c0c commit 001e87d

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

lib/algora/jobs/jobs.ex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ defmodule Algora.Jobs do
2525
|> Repo.preload(:user)
2626
end
2727

28+
def count_jobs(opts \\ []) do
29+
JobPosting
30+
|> order_by([j], desc: j.inserted_at)
31+
|> maybe_filter_by_user(opts[:user_id])
32+
|> maybe_filter_by_tech_stack(opts[:tech_stack])
33+
|> Repo.aggregate(:count)
34+
end
35+
2836
def create_job_posting(attrs) do
2937
%JobPosting{}
3038
|> JobPosting.changeset(attrs)

lib/algora_web/live/org/home_live.ex

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ defmodule AlgoraWeb.Org.HomeLive do
66
alias Algora.Accounts.User
77
alias Algora.Bounties
88
alias Algora.Bounties.Bounty
9+
alias Algora.Jobs
910
alias Algora.Payments
1011

1112
@impl true
@@ -24,6 +25,8 @@ defmodule AlgoraWeb.Org.HomeLive do
2425
stats = Bounties.fetch_stats(org_id: org.id, current_user: socket.assigns[:current_user])
2526
transactions = Payments.list_hosted_transactions(org.id, limit: page_size())
2627

28+
total_jobs = Jobs.count_jobs(user_id: org.id)
29+
2730
total_awarded_subtext =
2831
[
2932
"#{stats.rewarded_bounties_count} #{ngettext("bounty", "bounties", stats.rewarded_bounties_count)}",
@@ -47,6 +50,7 @@ defmodule AlgoraWeb.Org.HomeLive do
4750
|> assign(:top_earners, top_earners)
4851
|> assign(:stats, stats)
4952
|> assign(:total_awarded_subtext, total_awarded_subtext)
53+
|> assign(:total_jobs, total_jobs)
5054

5155
{:ok, socket}
5256
end
@@ -105,13 +109,23 @@ defmodule AlgoraWeb.Org.HomeLive do
105109
navigate={~p"/#{@org.handle}/leaderboard"}
106110
icon="tabler-user-code"
107111
/>
108-
<.stat_card
109-
title="Members"
110-
value={@stats.members_count}
111-
subtext=""
112-
navigate={~p"/#{@org.handle}/team"}
113-
icon="tabler-users"
114-
/>
112+
<%= if @total_jobs > 0 do %>
113+
<.stat_card
114+
title="Jobs"
115+
value={@total_jobs}
116+
subtext=""
117+
navigate={~p"/#{@org.handle}/jobs"}
118+
icon="tabler-briefcase"
119+
/>
120+
<% else %>
121+
<.stat_card
122+
title="Members"
123+
value={@stats.members_count}
124+
subtext=""
125+
navigate={~p"/#{@org.handle}/team"}
126+
icon="tabler-users"
127+
/>
128+
<% end %>
115129
</div>
116130
117131
<div class="grid grid-cols-1 gap-6 lg:grid-cols-2">

0 commit comments

Comments
 (0)