@@ -11,6 +11,7 @@ defmodule AlgoraWeb.Forms.ContractForm do
1111
1212 embedded_schema do
1313 field :amount , USD
14+ field :hourly_rate , USD
1415 field :hours_per_week , :integer
1516 field :type , Ecto.Enum , values: [ :fixed , :hourly ] , default: :fixed
1617 field :title , :string
@@ -26,17 +27,23 @@ defmodule AlgoraWeb.Forms.ContractForm do
2627
2728 def changeset ( form , attrs ) do
2829 form
29- |> cast ( attrs , [ :amount , :hours_per_week , :type , :title , :description , :contractor_handle ] )
30+ |> cast ( attrs , [ :amount , :hourly_rate , : hours_per_week, :type , :title , :description , :contractor_handle ] )
3031 |> validate_required ( [ :contractor_handle ] )
3132 |> validate_type_fields ( )
32- |> Validations . validate_money_positive ( :amount )
3333 |> Validations . validate_github_handle ( :contractor_handle , :contractor )
3434 end
3535
3636 defp validate_type_fields ( changeset ) do
3737 case get_field ( changeset , :type ) do
38- :hourly -> validate_required ( changeset , [ :amount , :hours_per_week ] )
39- _ -> validate_required ( changeset , [ :amount ] )
38+ :hourly ->
39+ changeset
40+ |> validate_required ( [ :hourly_rate , :hours_per_week ] )
41+ |> Validations . validate_money_positive ( :hourly_rate )
42+
43+ _ ->
44+ changeset
45+ |> validate_required ( [ :amount ] )
46+ |> Validations . validate_money_positive ( :amount )
4047 end
4148 end
4249
@@ -92,7 +99,7 @@ defmodule AlgoraWeb.Forms.ContractForm do
9299 </ div >
93100 < div data-tab = "hourly " class = "hidden " >
94101 < div class = "grid grid-cols-1 sm:grid-cols-2 gap-4 " >
95- < . input label = "Hourly rate " icon = "tabler-currency-dollar " field = { @ form [ :amount ] } />
102+ < . input label = "Hourly rate " icon = "tabler-currency-dollar " field = { @ form [ :hourly_rate ] } />
96103 < . input label = "Hours per week " field = { @ form [ :hours_per_week ] } />
97104 </ div >
98105 </ div >
0 commit comments