@@ -12,6 +12,10 @@ defmodule Algora.Interviews.JobInterview do
1212 field :notes , :string
1313 field :scheduled_at , :utc_datetime_usec
1414 field :completed_at , :utc_datetime_usec
15+ field :company_feedback , :string
16+ field :candidate_feedback , :string
17+ field :company_feedback_token , :string
18+ field :candidate_feedback_token , :string
1519
1620 belongs_to :user , Algora.Accounts.User
1721 belongs_to :job_posting , Algora.Jobs.JobPosting
@@ -21,11 +25,24 @@ defmodule Algora.Interviews.JobInterview do
2125
2226 def changeset ( job_interview , attrs ) do
2327 job_interview
24- |> cast ( attrs , [ :user_id , :job_posting_id , :status , :notes , :scheduled_at , :completed_at ] )
28+ |> cast ( attrs , [ :user_id , :job_posting_id , :status , :notes , :scheduled_at , :completed_at , :company_feedback , :candidate_feedback , :company_feedback_token , :candidate_feedback_token ] )
2529 |> validate_required ( [ :user_id , :job_posting_id , :status ] )
2630 |> validate_inclusion ( :status , @ interview_statuses )
2731 |> foreign_key_constraint ( :user_id )
2832 |> foreign_key_constraint ( :job_posting_id )
33+ |> unique_constraint ( :company_feedback_token )
34+ |> unique_constraint ( :candidate_feedback_token )
2935 |> generate_id ( )
36+ |> maybe_generate_feedback_tokens ( )
37+ end
38+
39+ defp maybe_generate_feedback_tokens ( changeset ) do
40+ if get_field ( changeset , :id ) && ! get_field ( changeset , :company_feedback_token ) do
41+ changeset
42+ |> put_change ( :company_feedback_token , Nanoid . generate ( 8 ) )
43+ |> put_change ( :candidate_feedback_token , Nanoid . generate ( 8 ) )
44+ else
45+ changeset
46+ end
3047 end
3148end
0 commit comments