@@ -2,7 +2,6 @@ defmodule TransportWeb.ValidationController do
2
2
use TransportWeb , :controller
3
3
alias DB . { MultiValidation , Repo }
4
4
alias Transport.DataVisualization
5
- import TransportWeb.ResourceView , only: [ issue_type: 1 ]
6
5
import Ecto.Query
7
6
8
7
def validate ( % Plug.Conn { } = conn , % { "upload" => % { "url" => url , "type" => "gbfs" } = params } ) do
@@ -98,44 +97,57 @@ defmodule TransportWeb.ValidationController do
98
97
unauthorized ( conn )
99
98
100
99
% MultiValidation { oban_args: % { "state" => "completed" , "type" => "gtfs" } } = validation ->
101
- current_issues = Transport.Validators.GTFSTransport . get_issues ( validation . result , params )
100
+ validator = Transport.Validators.GTFSTransport
101
+ current_issues = validator . get_issues ( validation . result , params )
102
102
103
103
issue_type =
104
104
case params [ "issue_type" ] do
105
- nil -> issue_type ( current_issues )
105
+ nil -> validator . issue_type ( current_issues )
106
106
issue_type -> issue_type
107
107
end
108
108
109
109
conn
110
- |> assign ( :validation_id , params [ "id" ] )
111
- |> assign ( :other_resources , [ ] )
112
- |> assign ( :issues , Scrivener . paginate ( current_issues , make_pagination_config ( params ) ) )
113
- |> assign (
114
- :validation_summary ,
115
- Transport.Validators.GTFSTransport . summary ( validation . result )
116
- )
117
- |> assign (
118
- :severities_count ,
119
- Transport.Validators.GTFSTransport . count_by_severity ( validation . result )
120
- )
110
+ |> assign_base_validation_details ( validator , validation , params , current_issues )
121
111
|> assign ( :metadata , validation . metadata . metadata )
122
112
|> assign ( :modes , validation . metadata . modes )
123
113
|> assign ( :data_vis , data_vis ( validation , issue_type ) )
124
- |> assign ( :token , token )
125
- |> render ( "show.html" )
114
+ |> render ( "show_gtfs.html" )
115
+
116
+ % MultiValidation { oban_args: % { "state" => "completed" , "type" => "netex" } } = validation ->
117
+ validator = Transport.Validators.NeTEx
118
+ current_issues = validator . get_issues ( validation . result , params )
119
+
120
+ conn
121
+ |> assign_base_validation_details ( validator , validation , params , current_issues )
122
+ |> assign ( :metadata , validation . metadata . metadata )
123
+ |> assign ( :modes , [ ] )
124
+ |> assign ( :data_vis , nil )
125
+ |> render ( "show_netex.html" )
126
126
127
127
# Handles waiting for validation to complete, errors and
128
128
# validation for schemas
129
129
_ ->
130
130
live_render ( conn , TransportWeb.Live.OnDemandValidationLive ,
131
131
session: % {
132
132
"validation_id" => params [ "id" ] ,
133
+ "issue_type" => params [ "issue_type" ] ,
133
134
"current_url" => validation_path ( conn , :show , params [ "id" ] , token: token )
134
135
}
135
136
)
136
137
end
137
138
end
138
139
140
+ defp assign_base_validation_details ( conn , validator , validation , params , current_issues ) do
141
+ conn
142
+ |> assign ( :validator , validator )
143
+ |> assign ( :validation_id , params [ "id" ] )
144
+ |> assign ( :other_resources , [ ] )
145
+ |> assign ( :issues , Scrivener . paginate ( current_issues , make_pagination_config ( params ) ) )
146
+ |> assign ( :validation_summary , validator . summary ( validation . result ) )
147
+ |> assign ( :severities_count , validator . count_by_severity ( validation . result ) )
148
+ |> assign ( :token , params [ "token" ] )
149
+ end
150
+
139
151
defp data_vis ( % MultiValidation { } = validation , issue_type ) do
140
152
data_vis = validation . data_vis [ issue_type ]
141
153
has_features = DataVisualization . has_features ( data_vis [ "geojson" ] )
@@ -148,9 +160,10 @@ defmodule TransportWeb.ValidationController do
148
160
end
149
161
150
162
defp filepath ( type ) do
151
- cond do
152
- type == "tableschema" -> Ecto.UUID . generate ( ) <> ".csv"
153
- type in [ "jsonschema" , "gtfs" ] -> Ecto.UUID . generate ( )
163
+ if type == "tableschema" do
164
+ Ecto.UUID . generate ( ) <> ".csv"
165
+ else
166
+ Ecto.UUID . generate ( )
154
167
end
155
168
end
156
169
@@ -215,6 +228,7 @@ defmodule TransportWeb.ValidationController do
215
228
args =
216
229
case type do
217
230
"gtfs" -> % { "type" => "gtfs" }
231
+ "netex" -> % { "type" => "netex" }
218
232
schema_name -> % { "schema_name" => schema_name , "type" => schema_type ( schema_name ) }
219
233
end
220
234
0 commit comments