@@ -2,27 +2,19 @@ defmodule AlgoraWeb.Org.JobsLive do
22 @ moduledoc false
33 use AlgoraWeb , :live_view
44
5- import Ecto.Changeset
6-
75 alias Algora.Accounts
86 alias Algora.Jobs
9- alias Algora.Jobs.JobPosting
10- alias Phoenix.LiveView.AsyncResult
117
128 require Logger
139
1410 @ impl true
1511 def mount ( _params , _session , socket ) do
16- # Group jobs by user
1712 jobs_by_user = Enum . group_by ( Jobs . list_jobs ( user_id: socket . assigns . current_org . id ) , & & 1 . user )
18- changeset = JobPosting . changeset ( % JobPosting { } , % { } )
1913
2014 { :ok ,
2115 socket
2216 |> assign ( :page_title , "Jobs" )
2317 |> assign ( :jobs_by_user , jobs_by_user )
24- |> assign ( :form , to_form ( changeset ) )
25- |> assign ( :user_metadata , AsyncResult . loading ( ) )
2618 |> assign_user_applications ( ) }
2719 end
2820
@@ -161,37 +153,6 @@ defmodule AlgoraWeb.Org.JobsLive do
161153 { :noreply , socket }
162154 end
163155
164- def handle_event ( "email_changed" , % { "job_posting" => % { "email" => email } } , socket ) do
165- if String . match? ( email , ~r/ ^[^\s ]+@[^\s ]+$/ i ) do
166- { :noreply , start_async ( socket , :fetch_metadata , fn -> Algora.Crawler . fetch_user_metadata ( email ) end ) }
167- else
168- { :noreply , socket }
169- end
170- end
171-
172- @ impl true
173- def handle_event ( "validate_job" , % { "job_posting" => params } , socket ) do
174- { :noreply , assign ( socket , :form , to_form ( JobPosting . changeset ( socket . assigns . form . source , params ) ) ) }
175- end
176-
177- @ impl true
178- def handle_event ( "create_job" , % { "job_posting" => params } , socket ) do
179- with { :ok , user } <-
180- Accounts . get_or_register_user ( params [ "email" ] , % { type: :organization , display_name: params [ "company_name" ] } ) ,
181- { :ok , job } <- params |> Map . put ( "user_id" , user . id ) |> Jobs . create_job_posting ( ) ,
182- { :ok , url } <- Jobs . create_payment_session ( job , socket . assigns . current_org . subscription_price ) do
183- Algora.Admin . alert ( "Job posting initialized: #{ job . company_name } " , :info )
184- { :noreply , redirect ( socket , external: url ) }
185- else
186- { :error , % Ecto.Changeset { } = changeset } ->
187- { :noreply , assign ( socket , :form , to_form ( changeset ) ) }
188-
189- { :error , reason } ->
190- Logger . error ( "Failed to create job posting: #{ inspect ( reason ) } " )
191- { :noreply , put_flash ( socket , :error , "Something went wrong. Please try again." ) }
192- end
193- end
194-
195156 @ impl true
196157 def handle_event ( "apply_job" , % { "job-id" => job_id } , socket ) do
197158 if socket . assigns [ :current_user ] do
@@ -222,19 +183,6 @@ defmodule AlgoraWeb.Org.JobsLive do
222183 { :noreply , socket }
223184 end
224185
225- @ impl true
226- def handle_async ( :fetch_metadata , { :ok , metadata } , socket ) do
227- { :noreply ,
228- socket
229- |> assign ( :user_metadata , AsyncResult . ok ( socket . assigns . user_metadata , metadata ) )
230- |> assign ( :form , to_form ( change ( socket . assigns . form . source , company_name: get_in ( metadata , [ :org , :og_title ] ) ) ) ) }
231- end
232-
233- @ impl true
234- def handle_async ( :fetch_metadata , { :exit , reason } , socket ) do
235- { :noreply , assign ( socket , :user_metadata , AsyncResult . failed ( socket . assigns . user_metadata , reason ) ) }
236- end
237-
238186 defp assign_user_applications ( socket ) do
239187 user_applications =
240188 if socket . assigns [ :current_user ] do
0 commit comments