api specs
This commit is contained in:
43
phoenix/lib/shooting_event_phx/domain/state_service.ex
Normal file
43
phoenix/lib/shooting_event_phx/domain/state_service.ex
Normal file
@@ -0,0 +1,43 @@
|
||||
defmodule ShootingEventPhx.Domain.StateService do
|
||||
@moduledoc false
|
||||
alias ShootingEventPhx.Domain.{Derived, EventData, Settings}
|
||||
|
||||
def read_state(include_all_proofs \\ false) do
|
||||
players = EventData.list_players()
|
||||
_ = EventData.ensure_score_rows(players)
|
||||
|
||||
settings = Settings.read_settings()
|
||||
scores = EventData.read_scores(players)
|
||||
include_score_proofs = include_all_proofs or settings["viewProofInView"]
|
||||
score_proofs = if include_score_proofs, do: EventData.read_score_proofs(players), else: %{}
|
||||
derived = Derived.compute(players, scores)
|
||||
|
||||
response = %{
|
||||
"competition" => %{
|
||||
"titleAr" => "بطولة دويتوايلر للرماية",
|
||||
"titleEn" => "Datwyler Shooting Event"
|
||||
},
|
||||
"players" => Enum.map(players, &player_to_json/1),
|
||||
"scores" => EventData.score_map_to_json(scores),
|
||||
"settings" => settings,
|
||||
"derived" => derived,
|
||||
"serverTime" => DateTime.utc_now() |> DateTime.truncate(:second) |> DateTime.to_iso8601()
|
||||
}
|
||||
|
||||
if include_score_proofs do
|
||||
Map.put(response, "scoreProofs", EventData.proof_map_to_json(score_proofs))
|
||||
else
|
||||
response
|
||||
end
|
||||
end
|
||||
|
||||
defp player_to_json(player) do
|
||||
%{
|
||||
"id" => player.id,
|
||||
"nameAr" => player.name_ar,
|
||||
"nameEn" => player.name_en,
|
||||
"groupCode" => player.group_code,
|
||||
"imageData" => player.image_data
|
||||
}
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user