diff --git a/app/controllers/admin/local_census_records/base_controller.rb b/app/controllers/admin/local_census_records/base_controller.rb
new file mode 100644
index 000000000..bcc2e382a
--- /dev/null
+++ b/app/controllers/admin/local_census_records/base_controller.rb
@@ -0,0 +1,10 @@
+class Admin::LocalCensusRecords::BaseController < Admin::BaseController
+ helper_method :namespace
+
+ private
+
+ def namespace
+ "admin"
+ end
+
+end
diff --git a/app/controllers/admin/local_census_records/imports_controller.rb b/app/controllers/admin/local_census_records/imports_controller.rb
new file mode 100644
index 000000000..4d450842d
--- /dev/null
+++ b/app/controllers/admin/local_census_records/imports_controller.rb
@@ -0,0 +1,21 @@
+class Admin::LocalCensusRecords::ImportsController < Admin::LocalCensusRecords::BaseController
+ load_and_authorize_resource class: "LocalCensusRecords::Import"
+
+ def create
+ @import = LocalCensusRecords::Import.new(local_census_records_import_params)
+ if @import.save
+ flash.now[:notice] = t("admin.local_census_records.imports.create.notice")
+ render :show
+ else
+ render :new
+ end
+ end
+
+ private
+
+ def local_census_records_import_params
+ return {} unless params[:local_census_records_import].present?
+
+ params.require(:local_census_records_import).permit(:file)
+ end
+end
diff --git a/app/helpers/admin/local_census_records/imports_helper.rb b/app/helpers/admin/local_census_records/imports_helper.rb
new file mode 100644
index 000000000..656fd8f95
--- /dev/null
+++ b/app/helpers/admin/local_census_records/imports_helper.rb
@@ -0,0 +1,9 @@
+module Admin::LocalCensusRecords::ImportsHelper
+ def errors_for(resource, field)
+ if resource.errors.include? field
+ content_tag :div, class: "error" do
+ resource.errors[field].join(", ")
+ end
+ end
+ end
+end
diff --git a/app/views/admin/local_census_records/imports/_form.html.erb b/app/views/admin/local_census_records/imports/_form.html.erb
new file mode 100644
index 000000000..86ceb9b71
--- /dev/null
+++ b/app/views/admin/local_census_records/imports/_form.html.erb
@@ -0,0 +1,9 @@
+<%= form_for [:admin, @import] do |f| %>
+ <%= render "shared/errors", resource: @import %>
+
+ <%= f.file_field :file %>
+
+
+ <%= f.submit(class: "button success expanded", value: t("shared.save")) %>
+
+<% end %>
diff --git a/app/views/admin/local_census_records/imports/_local_census_record.html.erb b/app/views/admin/local_census_records/imports/_local_census_record.html.erb
new file mode 100644
index 000000000..b7b942350
--- /dev/null
+++ b/app/views/admin/local_census_records/imports/_local_census_record.html.erb
@@ -0,0 +1,18 @@
+
+ |
+ <%= local_census_record.document_type %>
+ <%= errors_for local_census_record, :document_type %>
+ |
+
+ <%= local_census_record.document_number %>
+ <%= errors_for local_census_record, :document_number %>
+ |
+
+ <%= l local_census_record.date_of_birth if local_census_record.date_of_birth.present? %>
+ <%= errors_for local_census_record, :date_of_birth %>
+ |
+
+ <%= local_census_record.postal_code %>
+ <%= errors_for local_census_record, :postal_code %>
+ |
+
diff --git a/app/views/admin/local_census_records/imports/_local_census_records.html.erb b/app/views/admin/local_census_records/imports/_local_census_records.html.erb
new file mode 100644
index 000000000..32876ebdf
--- /dev/null
+++ b/app/views/admin/local_census_records/imports/_local_census_records.html.erb
@@ -0,0 +1,25 @@
+<%= title %> (<%= local_census_records.any? ? local_census_records.size : 0 %>)
+
+
+
+ | <%= t("activerecord.attributes.local_census_record.document_type") %> |
+ <%= t("activerecord.attributes.local_census_record.document_number") %> |
+ <%= t("activerecord.attributes.local_census_record.date_of_birth") %> |
+ <%= t("activerecord.attributes.local_census_record.postal_code") %> |
+
+
+
+
+ <% if local_census_records.any? %>
+ <% local_census_records.each do |local_census_record| %>
+ <%= render "local_census_record", local_census_record: local_census_record %>
+ <% end %>
+ <% else %>
+
+ |
+ <%= t("admin.local_census_records.imports.local_census_records.no_records_found") %>
+ |
+
+ <% end %>
+
+
diff --git a/app/views/admin/local_census_records/imports/new.html.erb b/app/views/admin/local_census_records/imports/new.html.erb
new file mode 100644
index 000000000..f36f16b68
--- /dev/null
+++ b/app/views/admin/local_census_records/imports/new.html.erb
@@ -0,0 +1,7 @@
+<%= back_link_to admin_local_census_records_path %>
+
+<%= t("admin.local_census_records.imports.new.title") %>
+
+<%= t("admin.local_census_records.imports.new.subtitle") %>
+
+<%= render "form" %>
diff --git a/app/views/admin/local_census_records/imports/show.html.erb b/app/views/admin/local_census_records/imports/show.html.erb
new file mode 100644
index 000000000..eede90e38
--- /dev/null
+++ b/app/views/admin/local_census_records/imports/show.html.erb
@@ -0,0 +1,19 @@
+<%= back_link_to(admin_local_census_records_path, text = t("shared.back")) %>
+
+<%= t("admin.local_census_records.imports.show.title") %>
+
+<%= link_to t("admin.local_census_records.imports.show.import"),
+ new_admin_local_census_records_import_path,
+ class: "button float-right hollow" %>
+
+<%= t("admin.local_census_records.imports.show.subtitle") %>
+
+<%= render partial: "local_census_records", locals: {
+ title: t("admin.local_census_records.imports.show.errored"),
+ id: "invalid-local-census-records",
+ local_census_records: @import.invalid_records } %>
+
+<%= render partial: "local_census_records", locals: {
+ title: t("admin.local_census_records.imports.show.created"),
+ id: "created-local-census-records",
+ local_census_records: @import.created_records } %>
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml
index 1822078e3..8b2124cdd 100644
--- a/config/locales/en/admin.yml
+++ b/config/locales/en/admin.yml
@@ -1688,3 +1688,17 @@ en:
notice: Local census record updated successfully!
destroy:
notice: Local census record removed successfully!
+ imports:
+ new:
+ title: Local census records
+ subtitle: Import CSV file
+ create:
+ notice: Local census records import process executed successfully!
+ show:
+ title: Manage local census
+ subtitle: Import process results
+ import: Import again
+ errored: Errored rows
+ created: Created records
+ local_census_records:
+ no_records_found: No records found.
diff --git a/config/locales/en/general.yml b/config/locales/en/general.yml
index cd8e6f7e4..2ea40d22e 100644
--- a/config/locales/en/general.yml
+++ b/config/locales/en/general.yml
@@ -198,6 +198,7 @@ en:
topic: Topic
image: Image
local_census_record: Local Census Record
+ local_census_records/import: Local Census Records Import
geozones:
none: All city
layouts:
diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml
index b92d8ea4f..d755437c9 100644
--- a/config/locales/es/admin.yml
+++ b/config/locales/es/admin.yml
@@ -1686,3 +1686,17 @@ es:
notice: ¡Registro del censo local actualizado correctamente!
destroy:
notice: ¡Registro del censo local eliminado correctamente!
+ imports:
+ new:
+ title: Registros del censo local
+ subtitle: Importar archivo CSV
+ create:
+ notice: ¡Proceso de import de registros del censo local ejecutado correctamente!
+ show:
+ title: Gestionar censo local
+ subtitle: Resultados del proceso de importación
+ import: Importar otro fichero
+ errored: Filas erróneas
+ created: Registros creados
+ local_census_records:
+ no_records_found: No se han encontrado registros.
\ No newline at end of file
diff --git a/config/locales/es/general.yml b/config/locales/es/general.yml
index 9491d0b84..f879e29aa 100644
--- a/config/locales/es/general.yml
+++ b/config/locales/es/general.yml
@@ -198,6 +198,7 @@ es:
topic: Tema
image: Imagen
local_census_record: el registro del censo local
+ local_census_records/import: la importación de registros del censo local
geozones:
none: Toda la ciudad
layouts:
diff --git a/config/routes/admin.rb b/config/routes/admin.rb
index 557811a03..9e79838cc 100644
--- a/config/routes/admin.rb
+++ b/config/routes/admin.rb
@@ -257,4 +257,7 @@ namespace :admin do
get "/change_log/:id", to: "budget_investments#show_investment_log", as: "change_log"
resources :local_census_records
+ namespace :local_census_records do
+ resources :imports, only: [:new, :create, :show]
+ end
end