Skip to content

Commit 1ba85c3

Browse files
committed
add events and tasks
1 parent 3ca2d96 commit 1ba85c3

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed

lib/algora/cloud.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ defmodule Algora.Cloud do
5353
call(AlgoraCloud.Talent.Jobs.SendCompanyLikeEmail, :send, [attrs])
5454
end
5555

56+
def create_admin_task(attrs) do
57+
call(AlgoraCloud.AdminTasks, :create_admin_task, [attrs])
58+
end
59+
5660
def start do
5761
call(AlgoraCloud, :start, [])
5862
end

lib/algora_web/live/onboarding/org.ex

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,43 @@ defmodule AlgoraWeb.Onboarding.OrgLive do
4343
def handle_event("submit", %{"form" => params}, socket) do
4444
case %Form{} |> Form.changeset(params) |> Ecto.Changeset.apply_action(:save) do
4545
{:ok, data} ->
46+
# Create alert for immediate notification
4647
Algora.Activities.alert(Jason.encode!(data), :critical)
48+
49+
# Create admin task for welcoming the user
50+
create_welcome_task(data)
51+
4752
{:noreply, put_flash(socket, :info, "Thanks for submitting your JD! We'll follow up soon")}
4853

4954
{:error, changeset} ->
5055
{:noreply, assign(socket, form: to_form(changeset))}
5156
end
5257
end
5358

59+
defp create_welcome_task(data) do
60+
task_attrs = %{
61+
type: "user_welcome",
62+
payload: %{
63+
email: data.email,
64+
job_description: data.job_description,
65+
candidate_description: data.candidate_description,
66+
comp_range: data.comp_range,
67+
submitted_at: DateTime.utc_now(),
68+
source: "jd_submission"
69+
},
70+
seq: 0,
71+
origin_id: Nanoid.generate()
72+
}
73+
74+
case Algora.Cloud.create_admin_task(task_attrs) do
75+
{:ok, _task} ->
76+
Logger.info("Created welcome task for #{data.email}")
77+
78+
{:error, changeset} ->
79+
Logger.error("Failed to create welcome task: #{inspect(changeset)}")
80+
end
81+
end
82+
5483
@impl true
5584
def render(assigns) do
5685
~H"""
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
defmodule Algora.Repo.Migrations.CreateAdminTasks do
2+
use Ecto.Migration
3+
4+
def change do
5+
create table(:admin_tasks, primary_key: false) do
6+
add :id, :string, primary_key: true
7+
add :type, :string, null: false
8+
add :completed_at, :utc_datetime_usec
9+
add :discarded_at, :utc_datetime_usec
10+
add :payload, :map, null: false
11+
add :origin_id, :string
12+
add :seq, :integer
13+
add :logs, {:array, :map}, default: []
14+
add :pinned, :boolean, default: false
15+
16+
timestamps()
17+
end
18+
19+
create index(:admin_tasks, [:type])
20+
create index(:admin_tasks, [:origin_id])
21+
create index(:admin_tasks, [:seq])
22+
create index(:admin_tasks, [:completed_at])
23+
create index(:admin_tasks, [:discarded_at])
24+
create index(:admin_tasks, [:pinned])
25+
create index(:admin_tasks, [:inserted_at])
26+
end
27+
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
defmodule Algora.Repo.Migrations.CreateEvents do
2+
use Ecto.Migration
3+
4+
def change do
5+
create table(:events, primary_key: false) do
6+
add :id, :string, primary_key: true
7+
add :type, :string, null: false
8+
add :payload, :map
9+
add :origin_id, :string, null: false
10+
add :seq, :integer, null: false
11+
12+
timestamps(type: :utc_datetime_usec)
13+
end
14+
15+
create index(:events, [:type])
16+
create index(:events, [:origin_id])
17+
create index(:events, [:origin_id, :seq])
18+
create index(:events, [:inserted_at])
19+
end
20+
end

0 commit comments

Comments
 (0)