Skip to content

Commit

Permalink
fix: validate status of report
Browse files Browse the repository at this point in the history
  • Loading branch information
douglastofoli committed Nov 11, 2023
1 parent d77b345 commit d90ea51
Showing 1 changed file with 18 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,6 @@ defmodule ModuloPesquisa.Models.RelatorioPesquisa do
timestamps()
end

@spec changeset(RelatorioPesquisa.t(), map) :: changeset
def changeset(%RelatorioPesquisa{status: :entregue} = relatorio, attrs) do
relatorio
|> cast(attrs, @required_fields ++ @optional_fields)
|> add_error(:status, "O relatório já foi entregue")
end

def changeset(%RelatorioPesquisa{} = relatorio, attrs) do
relatorio
|> cast(attrs, @required_fields ++ @optional_fields)
Expand All @@ -67,6 +60,7 @@ defmodule ModuloPesquisa.Models.RelatorioPesquisa do
|> validate_inclusion(:status, @status)
|> foreign_key_constraint(:pesquisador_id)
|> validate_period()
|> validate_status()
end

defp validate_period(changeset) do
Expand All @@ -79,10 +73,26 @@ defmodule ModuloPesquisa.Models.RelatorioPesquisa do

{_, _} ->
if Date.compare(start_date, end_date) == :gt do
add_error(changeset, :data_inicio, "A data de início deve ser anterior à data de fim")
add_error(changeset, :data_inicio, "A data de início deve ser anterior a data de fim")
else
changeset
end
end
end

defp validate_status(changeset) do
status = get_field(changeset, :status)

case status do
:entregue ->
add_error(
changeset,
:status,
"O relatório foi marcado como entregue e não é possível fazer novas alterações"
)

_ ->
changeset
end
end
end

0 comments on commit d90ea51

Please sign in to comment.