Powered by AppSignal & Oban Pro

Service --> Daily Schedules

livebooks/service_daily_schedules.livemd

Service --> Daily Schedules

Services to Daily Schedules

services = Services.Repo.by_route_id("39")

services
|> Enum.flat_map(fn svc ->
  svc
  |> Services.Service.all_valid_dates_for_service()
  |> Enum.map(&{&1, svc})
end)
|> Enum.group_by(fn {date, _svc} -> date end)
|> Enum.map(fn {date, list} ->
  {date, list |> Enum.map(fn {_date, svc} -> svc end) |> Enum.sort_by(& &1.id)}
end)
|> Enum.sort_by(fn {date, _svc_list} -> date end, &Date.before?/2)
|> Enum.group_by(fn {_date, svc_list} -> svc_list end)
|> Enum.each(fn {svc_list, date_tuples} ->
  dates =
    date_tuples
    |> Enum.map(fn {date, _svc_list} -> date end)
    |> Enum.map(&"#{&1}")
    |> Enum.join(", ")

  IO.puts(svc_list |> Enum.map(& &1.id) |> Enum.join(", "))
  IO.puts("  #{svc_list |> Enum.map(& &1.name) |> Enum.join(", ")}")
  IO.puts("  #{svc_list |> Enum.map(& &1.type) |> Enum.join(", ")}")
  IO.puts("  #{svc_list |> Enum.map(& &1.typicality) |> Enum.join(", ")}")
  IO.puts("  #{dates}")
  IO.puts("")
end)