From 892ffbe138cf3774b3538b13d46ab7d2e31f7229 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 13 Feb 2023 17:31:57 +0100 Subject: [PATCH] (quality) rename proof-of-identity to supporting-document --- .dockerignore | 2 +- .gitignore | 2 +- CHANGELOG.md | 1 + Dockerfile | 2 +- .../api/profile_custom_fields_controller.rb | 2 +- .../api/proof_of_identity_files_controller.rb | 54 --------- .../proof_of_identity_refusals_controller.rb | 32 ------ .../api/proof_of_identity_types_controller.rb | 50 --------- .../supporting_document_files_controller.rb | 53 +++++++++ ...supporting_document_refusals_controller.rb | 32 ++++++ .../supporting_document_types_controller.rb | 50 +++++++++ .../javascript/api/proof-of-identity-file.ts | 31 ----- .../api/proof-of-identity-refusal.ts | 16 --- .../javascript/api/proof-of-identity-type.ts | 31 ----- .../api/supporting-document-file.ts | 31 +++++ .../api/supporting-document-refusal.ts | 16 +++ .../api/supporting-document-type.ts | 31 +++++ ...delete-supporting-documents-type-modal.tsx | 4 +- .../supporting-documents-files.tsx | 42 +++---- .../supporting-documents-refusal-form.tsx | 6 +- .../supporting-documents-refusal-modal.tsx | 16 +-- .../supporting-documents-type-form.tsx | 14 +-- .../supporting-documents-type-modal.tsx | 14 +-- .../supporting-documents-types-list.tsx | 20 ++-- .../supporting-documents-validation.tsx | 24 ++-- .../javascript/controllers/admin/members.js | 8 +- .../src/javascript/controllers/application.js | 2 +- .../src/javascript/controllers/header.js | 6 +- .../src/javascript/controllers/members.js | 10 +- app/frontend/src/javascript/models/fablab.ts | 2 +- .../javascript/models/notification-type.ts | 2 +- .../models/proof-of-identity-file.ts | 12 -- .../models/proof-of-identity-refusal.ts | 13 --- .../models/supporting-document-file.ts | 12 ++ .../models/supporting-document-refusal.ts | 13 +++ ...ty-type.ts => supporting-document-type.ts} | 4 +- app/frontend/src/javascript/router.js | 8 +- .../services/proof_of_identity_type.js | 11 -- .../services/supporting_document_type.js | 11 ++ app/frontend/templates/dashboard/nav.html | 2 +- ...es.html => supporting_document_files.html} | 0 app/frontend/templates/shared/header.html.erb | 2 +- app/models/group.rb | 4 +- app/models/proof_of_identity_file.rb | 12 -- app/models/proof_of_identity_refusal.rb | 7 -- app/models/proof_of_identity_type.rb | 8 -- app/models/proof_of_identity_types_group.rb | 6 - app/models/supporting_document_file.rb | 12 ++ app/models/supporting_document_refusal.rb | 9 ++ .../supporting_document_refusals_type.rb | 8 ++ app/models/supporting_document_type.rb | 11 ++ app/models/supporting_document_types_group.rb | 6 + app/models/user.rb | 4 +- .../notification_preference_policy.rb | 2 +- ....rb => supporting_document_file_policy.rb} | 4 +- ... => supporting_document_refusal_policy.rb} | 4 +- ....rb => supporting_document_type_policy.rb} | 4 +- app/services/members/members_service.rb | 6 +- .../proof_of_identity_refusal_service.rb | 24 ---- .../proof_of_identity_type_service.rb | 15 --- ...rb => supporting_document_file_service.rb} | 28 ++--- .../supporting_document_refusal_service.rb | 24 ++++ .../supporting_document_type_service.rb | 13 +++ ...b => supporting_document_file_uploader.rb} | 12 +- ...supporting_document_refusal.json.jbuilder} | 2 + .../_proof_of_identity_file.json.jbuilder | 4 - .../create.json.jbuilder | 3 - .../index.json.jbuilder | 5 - .../show.json.jbuilder | 3 - .../update.json.jbuilder | 3 - .../_proof_of_identity_refusal.json.jbuilder | 3 - .../create.json.jbuilder | 3 - .../index.json.jbuilder | 5 - .../show.json.jbuilder | 3 - .../_proof_of_identity_type.json.jbuilder | 3 - .../create.json.jbuilder | 3 - .../index.json.jbuilder | 5 - .../show.json.jbuilder | 3 - .../update.json.jbuilder | 3 - .../_supporting_document_file.json.jbuilder | 4 + .../create.json.jbuilder | 3 + .../index.json.jbuilder | 5 + .../show.json.jbuilder | 3 + .../update.json.jbuilder | 3 + ..._supporting_document_refusal.json.jbuilder | 3 + .../create.json.jbuilder | 3 + .../index.json.jbuilder | 5 + .../show.json.jbuilder | 3 + .../_supporting_document_type.json.jbuilder | 3 + .../create.json.jbuilder | 3 + .../index.json.jbuilder | 5 + .../show.json.jbuilder | 3 + .../update.json.jbuilder | 3 + app/views/application/index.html.erb | 2 +- ...supporting_document_files_created.html.erb | 2 +- ...supporting_document_files_updated.html.erb | 2 +- ..._user_supporting_document_refusal.html.erb | 2 +- ...user_supporting_document_refusal.html.erb} | 4 +- config/locales/en.yml | 4 +- config/locales/mails.en.yml | 4 +- config/routes.rb | 6 +- config/secrets.yml | 4 - ...0230126160900_create_notification_types.rb | 2 +- ...roof_of_identity_to_supporting_document.rb | 17 +++ db/schema.rb | 106 +++++++++--------- doc/environment.md | 8 +- env.example | 2 +- scripts/rename-supporting-document.sh | 65 +++++++++++ setup/docker-compose.yml | 2 +- setup/env.example | 2 +- setup/setup.sh | 6 +- test/fixtures/notification_types.yml | 2 +- test/frontend/__setup__/globals.js | 2 +- .../notifications/notifications_test.rb | 1 - 114 files changed, 677 insertions(+), 585 deletions(-) delete mode 100644 app/controllers/api/proof_of_identity_files_controller.rb delete mode 100644 app/controllers/api/proof_of_identity_refusals_controller.rb delete mode 100644 app/controllers/api/proof_of_identity_types_controller.rb create mode 100644 app/controllers/api/supporting_document_files_controller.rb create mode 100644 app/controllers/api/supporting_document_refusals_controller.rb create mode 100644 app/controllers/api/supporting_document_types_controller.rb delete mode 100644 app/frontend/src/javascript/api/proof-of-identity-file.ts delete mode 100644 app/frontend/src/javascript/api/proof-of-identity-refusal.ts delete mode 100644 app/frontend/src/javascript/api/proof-of-identity-type.ts create mode 100644 app/frontend/src/javascript/api/supporting-document-file.ts create mode 100644 app/frontend/src/javascript/api/supporting-document-refusal.ts create mode 100644 app/frontend/src/javascript/api/supporting-document-type.ts delete mode 100644 app/frontend/src/javascript/models/proof-of-identity-file.ts delete mode 100644 app/frontend/src/javascript/models/proof-of-identity-refusal.ts create mode 100644 app/frontend/src/javascript/models/supporting-document-file.ts create mode 100644 app/frontend/src/javascript/models/supporting-document-refusal.ts rename app/frontend/src/javascript/models/{proof-of-identity-type.ts => supporting-document-type.ts} (51%) delete mode 100644 app/frontend/src/javascript/services/proof_of_identity_type.js create mode 100644 app/frontend/src/javascript/services/supporting_document_type.js rename app/frontend/templates/dashboard/{proof_of_identity_files.html => supporting_document_files.html} (100%) delete mode 100644 app/models/proof_of_identity_file.rb delete mode 100644 app/models/proof_of_identity_refusal.rb delete mode 100644 app/models/proof_of_identity_type.rb delete mode 100644 app/models/proof_of_identity_types_group.rb create mode 100644 app/models/supporting_document_file.rb create mode 100644 app/models/supporting_document_refusal.rb create mode 100644 app/models/supporting_document_refusals_type.rb create mode 100644 app/models/supporting_document_type.rb create mode 100644 app/models/supporting_document_types_group.rb rename app/policies/{proof_of_identity_file_policy.rb => supporting_document_file_policy.rb} (62%) rename app/policies/{proof_of_identity_refusal_policy.rb => supporting_document_refusal_policy.rb} (54%) rename app/policies/{proof_of_identity_type_policy.rb => supporting_document_type_policy.rb} (53%) delete mode 100644 app/services/proof_of_identity_refusal_service.rb delete mode 100644 app/services/proof_of_identity_type_service.rb rename app/services/{proof_of_identity_file_service.rb => supporting_document_file_service.rb} (53%) create mode 100644 app/services/supporting_document_refusal_service.rb create mode 100644 app/services/supporting_document_type_service.rb rename app/uploaders/{proof_of_identity_file_uploader.rb => supporting_document_file_uploader.rb} (89%) rename app/views/api/notifications/{_notify_user_proof_of_identity_refusal.json.jbuilder => _notify_user_supporting_document_refusal.json.jbuilder} (70%) delete mode 100644 app/views/api/proof_of_identity_files/_proof_of_identity_file.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_files/create.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_files/index.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_files/show.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_files/update.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_refusals/_proof_of_identity_refusal.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_refusals/create.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_refusals/index.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_refusals/show.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_types/_proof_of_identity_type.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_types/create.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_types/index.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_types/show.json.jbuilder delete mode 100644 app/views/api/proof_of_identity_types/update.json.jbuilder create mode 100644 app/views/api/supporting_document_files/_supporting_document_file.json.jbuilder create mode 100644 app/views/api/supporting_document_files/create.json.jbuilder create mode 100644 app/views/api/supporting_document_files/index.json.jbuilder create mode 100644 app/views/api/supporting_document_files/show.json.jbuilder create mode 100644 app/views/api/supporting_document_files/update.json.jbuilder create mode 100644 app/views/api/supporting_document_refusals/_supporting_document_refusal.json.jbuilder create mode 100644 app/views/api/supporting_document_refusals/create.json.jbuilder create mode 100644 app/views/api/supporting_document_refusals/index.json.jbuilder create mode 100644 app/views/api/supporting_document_refusals/show.json.jbuilder create mode 100644 app/views/api/supporting_document_types/_supporting_document_type.json.jbuilder create mode 100644 app/views/api/supporting_document_types/create.json.jbuilder create mode 100644 app/views/api/supporting_document_types/index.json.jbuilder create mode 100644 app/views/api/supporting_document_types/show.json.jbuilder create mode 100644 app/views/api/supporting_document_types/update.json.jbuilder rename app/views/notifications_mailer/{notify_user_proof_of_identity_refusal.html.erb => notify_user_supporting_document_refusal.html.erb} (60%) create mode 100644 db/migrate/20230213134954_rename_proof_of_identity_to_supporting_document.rb create mode 100755 scripts/rename-supporting-document.sh diff --git a/.dockerignore b/.dockerignore index 541c72155..0245e9501 100644 --- a/.dockerignore +++ b/.dockerignore @@ -32,7 +32,7 @@ imports accounting # Proof of identity files -proof_of_identity_files +supporting_document_files # Development files Vagrantfile diff --git a/.gitignore b/.gitignore index bc46b59f4..27cdf7522 100644 --- a/.gitignore +++ b/.gitignore @@ -47,7 +47,7 @@ /accounting/* # Proof of identity files -/proof_of_identity_files/* +/supporting_document_files/* .DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md index 725952e32..23e5f1b5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Improved public calendar loading time - Fix a bug: schedules jobs are not launched at the right time - [TODO DEPLOY] `rails fablab:fix_availabilities` THEN `rails fablab:setup:build_places_cache` +- [TODO DEPLOY] `\curl -sSL https://raw.githubusercontent.com/sleede/fab-manager/master/scripts/rename-supporting-document.sh | bash` - Use Time instead of DateTime objects - Fix a bug: missing statististics subtypes diff --git a/Dockerfile b/Dockerfile index bcf00a2af..31a6369a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -87,7 +87,7 @@ VOLUME /usr/src/app/invoices \ /usr/src/app/public/uploads \ /usr/src/app/public/packs \ /usr/src/app/accounting \ - /usr/src/app/proof_of_identity_files \ + /usr/src/app/supporting_document_files \ /var/log/supervisor # Expose port 3000 to the Docker host, so we can access it from the outside diff --git a/app/controllers/api/profile_custom_fields_controller.rb b/app/controllers/api/profile_custom_fields_controller.rb index 7179b47a2..e0a902863 100644 --- a/app/controllers/api/profile_custom_fields_controller.rb +++ b/app/controllers/api/profile_custom_fields_controller.rb @@ -14,7 +14,7 @@ class API::ProfileCustomFieldsController < API::ApiController def show; end def create - authorize ProofOfIdentityType + authorize ProfileCustomField @profile_custom_field = ProfileCustomField.new(profile_custom_field_params) if @profile_custom_field.save render status: :created diff --git a/app/controllers/api/proof_of_identity_files_controller.rb b/app/controllers/api/proof_of_identity_files_controller.rb deleted file mode 100644 index 32a8679cd..000000000 --- a/app/controllers/api/proof_of_identity_files_controller.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -# API Controller for resources of type ProofOfIdentityFile -# ProofOfIdentityFiles are used in settings -class API::ProofOfIdentityFilesController < API::ApiController - before_action :authenticate_user! - before_action :set_proof_of_identity_file, only: %i[show update download] - - def index - @proof_of_identity_files = ProofOfIdentityFileService.list(current_user, params) - end - - # PUT /api/proof_of_identity_files/1/ - def update - authorize @proof_of_identity_file - if ProofOfIdentityFileService.update(@proof_of_identity_file, proof_of_identity_file_params) - render :show, status: :ok, location: @proof_of_identity_file - else - render json: @proof_of_identity_file.errors, status: :unprocessable_entity - end - end - - # POST /api/proof_of_identity_files/ - def create - @proof_of_identity_file = ProofOfIdentityFile.new(proof_of_identity_file_params) - authorize @proof_of_identity_file - if ProofOfIdentityFileService.create(@proof_of_identity_file) - render :show, status: :created, location: @proof_of_identity_file - else - render json: @proof_of_identity_file.errors, status: :unprocessable_entity - end - end - - # GET /api/proof_of_identity_files/1/download - def download - authorize @proof_of_identity_file - send_file @proof_of_identity_file.attachment.url, type: @proof_of_identity_file.attachment.content_type, disposition: 'attachment' - end - - # GET /api/proof_of_identity_files/1/ - def show; end - - private - - def set_proof_of_identity_file - @proof_of_identity_file = ProofOfIdentityFile.find(params[:id]) - end - - # Never trust parameters from the scary internet, only allow the white list through. - def proof_of_identity_file_params - params.required(:proof_of_identity_file).permit(:proof_of_identity_type_id, :attachment, :user_id) - end - -end diff --git a/app/controllers/api/proof_of_identity_refusals_controller.rb b/app/controllers/api/proof_of_identity_refusals_controller.rb deleted file mode 100644 index e61be3b7b..000000000 --- a/app/controllers/api/proof_of_identity_refusals_controller.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -# API Controller for resources of type ProofOfIdentityRefusal -# ProofOfIdentityRefusal are used by admin refuse user's proof of identity file -class API::ProofOfIdentityRefusalsController < API::ApiController - before_action :authenticate_user! - - def index - authorize ProofOfIdentityRefusal - @proof_of_identity_files = ProofOfIdentityRefusalService.list(params) - end - - def show; end - - # POST /api/proof_of_identity_refusals/ - def create - authorize ProofOfIdentityRefusal - @proof_of_identity_refusal = ProofOfIdentityRefusal.new(proof_of_identity_refusal_params) - if ProofOfIdentityRefusalService.create(@proof_of_identity_refusal) - render :show, status: :created, location: @proof_of_identity_refusal - else - render json: @proof_of_identity_refusal.errors, status: :unprocessable_entity - end - end - - private - - # Never trust parameters from the scary internet, only allow the white list through. - def proof_of_identity_refusal_params - params.required(:proof_of_identity_refusal).permit(:message, :operator_id, :user_id, proof_of_identity_type_ids: []) - end -end diff --git a/app/controllers/api/proof_of_identity_types_controller.rb b/app/controllers/api/proof_of_identity_types_controller.rb deleted file mode 100644 index ad5a85f08..000000000 --- a/app/controllers/api/proof_of_identity_types_controller.rb +++ /dev/null @@ -1,50 +0,0 @@ -# frozen_string_literal: true - -# API Controller for resources of type ProofOfIdentityType -# ProofOfIdentityTypes are used to provide admin config proof of identity type by group -class API::ProofOfIdentityTypesController < API::ApiController - before_action :authenticate_user!, except: :index - before_action :set_proof_of_identity_type, only: %i[show update destroy] - - def index - @proof_of_identity_types = ProofOfIdentityTypeService.list(params) - end - - def show; end - - def create - authorize ProofOfIdentityType - @proof_of_identity_type = ProofOfIdentityType.new(proof_of_identity_type_params) - if @proof_of_identity_type.save - render status: :created - else - render json: @proof_of_identity_type.errors.full_messages, status: :unprocessable_entity - end - end - - def update - authorize @proof_of_identity_type - - if @proof_of_identity_type.update(proof_of_identity_type_params) - render status: :ok - else - render json: @proof_of_identity_type.errors.full_messages, status: :unprocessable_entity - end - end - - def destroy - authorize @proof_of_identity_type - @proof_of_identity_type.destroy - head :no_content - end - - private - - def set_proof_of_identity_type - @proof_of_identity_type = ProofOfIdentityType.find(params[:id]) - end - - def proof_of_identity_type_params - params.require(:proof_of_identity_type).permit(:name, group_ids: []) - end -end diff --git a/app/controllers/api/supporting_document_files_controller.rb b/app/controllers/api/supporting_document_files_controller.rb new file mode 100644 index 000000000..c40d7ac69 --- /dev/null +++ b/app/controllers/api/supporting_document_files_controller.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +# API Controller for resources of type SupportingDocumentFile +# SupportingDocumentFiles are used in settings +class API::SupportingDocumentFilesController < API::ApiController + before_action :authenticate_user! + before_action :set_supporting_document_file, only: %i[show update download] + + def index + @supporting_document_files = SupportingDocumentFileService.list(current_user, params) + end + + # PUT /api/supporting_document_files/1/ + def update + authorize @supporting_document_file + if SupportingDocumentFileService.update(@supporting_document_file, supporting_document_file_params) + render :show, status: :ok, location: @supporting_document_file + else + render json: @supporting_document_file.errors, status: :unprocessable_entity + end + end + + # POST /api/supporting_document_files/ + def create + @supporting_document_file = SupportingDocumentFile.new(supporting_document_file_params) + authorize @supporting_document_file + if SupportingDocumentFileService.create(@supporting_document_file) + render :show, status: :created, location: @supporting_document_file + else + render json: @supporting_document_file.errors, status: :unprocessable_entity + end + end + + # GET /api/supporting_document_files/1/download + def download + authorize @supporting_document_file + send_file @supporting_document_file.attachment.url, type: @supporting_document_file.attachment.content_type, disposition: 'attachment' + end + + # GET /api/supporting_document_files/1/ + def show; end + + private + + def set_supporting_document_file + @supporting_document_file = SupportingDocumentFile.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def supporting_document_file_params + params.required(:supporting_document_file).permit(:supporting_document_type_id, :attachment, :user_id) + end +end diff --git a/app/controllers/api/supporting_document_refusals_controller.rb b/app/controllers/api/supporting_document_refusals_controller.rb new file mode 100644 index 000000000..a8aea3b7f --- /dev/null +++ b/app/controllers/api/supporting_document_refusals_controller.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# API Controller for resources of type SupportingDocumentRefusal +# SupportingDocumentRefusal are used by admin refuse user's proof of identity file +class API::SupportingDocumentRefusalsController < API::ApiController + before_action :authenticate_user! + + def index + authorize SupportingDocumentRefusal + @supporting_document_refusals = SupportingDocumentRefusalService.list(params) + end + + def show; end + + # POST /api/supporting_document_refusals/ + def create + authorize SupportingDocumentRefusal + @supporting_document_refusal = SupportingDocumentRefusal.new(supporting_document_refusal_params) + if SupportingDocumentRefusalService.create(@supporting_document_refusal) + render :show, status: :created, location: @supporting_document_refusal + else + render json: @supporting_document_refusal.errors, status: :unprocessable_entity + end + end + + private + + # Never trust parameters from the scary internet, only allow the white list through. + def supporting_document_refusal_params + params.required(:supporting_document_refusal).permit(:message, :operator_id, :user_id, supporting_document_type_ids: []) + end +end diff --git a/app/controllers/api/supporting_document_types_controller.rb b/app/controllers/api/supporting_document_types_controller.rb new file mode 100644 index 000000000..c299f8a78 --- /dev/null +++ b/app/controllers/api/supporting_document_types_controller.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +# API Controller for resources of type SupportingDocumentType +# ProofOfIdentityTypes are used to provide admin config proof of identity type by group +class API::SupportingDocumentTypesController < API::ApiController + before_action :authenticate_user!, except: :index + before_action :set_supporting_document_type, only: %i[show update destroy] + + def index + @supporting_document_types = SupportingDocumentTypeService.list(params) + end + + def show; end + + def create + authorize SupportingDocumentType + @supporting_document_type = SupportingDocumentType.new(supporting_document_type_params) + if @supporting_document_type.save + render status: :created + else + render json: @supporting_document_type.errors.full_messages, status: :unprocessable_entity + end + end + + def update + authorize @supporting_document_type + + if @supporting_document_type.update(supporting_document_type_params) + render status: :ok + else + render json: @supporting_document_type.errors.full_messages, status: :unprocessable_entity + end + end + + def destroy + authorize @supporting_document_type + @supporting_document_type.destroy + head :no_content + end + + private + + def set_supporting_document_type + @supporting_document_type = SupportingDocumentType.find(params[:id]) + end + + def supporting_document_type_params + params.require(:supporting_document_type).permit(:name, group_ids: []) + end +end diff --git a/app/frontend/src/javascript/api/proof-of-identity-file.ts b/app/frontend/src/javascript/api/proof-of-identity-file.ts deleted file mode 100644 index 5542965c2..000000000 --- a/app/frontend/src/javascript/api/proof-of-identity-file.ts +++ /dev/null @@ -1,31 +0,0 @@ -import apiClient from './clients/api-client'; -import { AxiosResponse } from 'axios'; -import { ProofOfIdentityFile, ProofOfIdentityFileIndexFilter } from '../models/proof-of-identity-file'; -import ApiLib from '../lib/api'; - -export default class ProofOfIdentityFileAPI { - static async index (filters?: ProofOfIdentityFileIndexFilter): Promise> { - const res: AxiosResponse> = await apiClient.get(`/api/proof_of_identity_files${ApiLib.filtersToQuery(filters)}`); - return res?.data; - } - - static async get (id: number): Promise { - const res: AxiosResponse = await apiClient.get(`/api/proof_of_identity_files/${id}`); - return res?.data; - } - - static async create (proofOfIdentityFile: FormData): Promise { - const res: AxiosResponse = await apiClient.post('/api/proof_of_identity_files', proofOfIdentityFile); - return res?.data; - } - - static async update (id: number, proofOfIdentityFile: FormData): Promise { - const res: AxiosResponse = await apiClient.patch(`/api/proof_of_identity_files/${id}`, proofOfIdentityFile); - return res?.data; - } - - static async destroy (proofOfIdentityFileId: number): Promise { - const res: AxiosResponse = await apiClient.delete(`/api/proof_of_identity_files/${proofOfIdentityFileId}`); - return res?.data; - } -} diff --git a/app/frontend/src/javascript/api/proof-of-identity-refusal.ts b/app/frontend/src/javascript/api/proof-of-identity-refusal.ts deleted file mode 100644 index 200cf6a97..000000000 --- a/app/frontend/src/javascript/api/proof-of-identity-refusal.ts +++ /dev/null @@ -1,16 +0,0 @@ -import apiClient from './clients/api-client'; -import { AxiosResponse } from 'axios'; -import { ProofOfIdentityRefusal, ProofOfIdentityRefusalIndexFilter } from '../models/proof-of-identity-refusal'; -import ApiLib from '../lib/api'; - -export default class ProofOfIdentityRefusalAPI { - static async index (filters?: ProofOfIdentityRefusalIndexFilter): Promise> { - const res: AxiosResponse> = await apiClient.get(`/api/proof_of_identity_refusals${ApiLib.filtersToQuery(filters)}`); - return res?.data; - } - - static async create (proofOfIdentityRefusal: ProofOfIdentityRefusal): Promise { - const res: AxiosResponse = await apiClient.post('/api/proof_of_identity_refusals', { proof_of_identity_refusal: proofOfIdentityRefusal }); - return res?.data; - } -} diff --git a/app/frontend/src/javascript/api/proof-of-identity-type.ts b/app/frontend/src/javascript/api/proof-of-identity-type.ts deleted file mode 100644 index 1851b5c4a..000000000 --- a/app/frontend/src/javascript/api/proof-of-identity-type.ts +++ /dev/null @@ -1,31 +0,0 @@ -import apiClient from './clients/api-client'; -import { AxiosResponse } from 'axios'; -import { ProofOfIdentityType, ProofOfIdentityTypeIndexfilter } from '../models/proof-of-identity-type'; -import ApiLib from '../lib/api'; - -export default class ProofOfIdentityTypeAPI { - static async index (filters?: ProofOfIdentityTypeIndexfilter): Promise> { - const res: AxiosResponse> = await apiClient.get(`/api/proof_of_identity_types${ApiLib.filtersToQuery(filters)}`); - return res?.data; - } - - static async get (id: number): Promise { - const res: AxiosResponse = await apiClient.get(`/api/proof_of_identity_types/${id}`); - return res?.data; - } - - static async create (proofOfIdentityType: ProofOfIdentityType): Promise { - const res: AxiosResponse = await apiClient.post('/api/proof_of_identity_types', { proof_of_identity_type: proofOfIdentityType }); - return res?.data; - } - - static async update (proofOfIdentityType: ProofOfIdentityType): Promise { - const res: AxiosResponse = await apiClient.patch(`/api/proof_of_identity_types/${proofOfIdentityType.id}`, { proof_of_identity_type: proofOfIdentityType }); - return res?.data; - } - - static async destroy (proofOfIdentityTypeId: number): Promise { - const res: AxiosResponse = await apiClient.delete(`/api/proof_of_identity_types/${proofOfIdentityTypeId}`); - return res?.data; - } -} diff --git a/app/frontend/src/javascript/api/supporting-document-file.ts b/app/frontend/src/javascript/api/supporting-document-file.ts new file mode 100644 index 000000000..46cc1ef0a --- /dev/null +++ b/app/frontend/src/javascript/api/supporting-document-file.ts @@ -0,0 +1,31 @@ +import apiClient from './clients/api-client'; +import { AxiosResponse } from 'axios'; +import { SupportingDocumentFile, SupportingDocumentFileIndexFilter } from '../models/supporting-document-file'; +import ApiLib from '../lib/api'; + +export default class SupportingDocumentFileAPI { + static async index (filters?: SupportingDocumentFileIndexFilter): Promise> { + const res: AxiosResponse> = await apiClient.get(`/api/supporting_document_files${ApiLib.filtersToQuery(filters)}`); + return res?.data; + } + + static async get (id: number): Promise { + const res: AxiosResponse = await apiClient.get(`/api/supporting_document_files/${id}`); + return res?.data; + } + + static async create (proofOfIdentityFile: FormData): Promise { + const res: AxiosResponse = await apiClient.post('/api/supporting_document_files', proofOfIdentityFile); + return res?.data; + } + + static async update (id: number, proofOfIdentityFile: FormData): Promise { + const res: AxiosResponse = await apiClient.patch(`/api/supporting_document_files/${id}`, proofOfIdentityFile); + return res?.data; + } + + static async destroy (proofOfIdentityFileId: number): Promise { + const res: AxiosResponse = await apiClient.delete(`/api/supporting_document_files/${proofOfIdentityFileId}`); + return res?.data; + } +} diff --git a/app/frontend/src/javascript/api/supporting-document-refusal.ts b/app/frontend/src/javascript/api/supporting-document-refusal.ts new file mode 100644 index 000000000..bd32812d5 --- /dev/null +++ b/app/frontend/src/javascript/api/supporting-document-refusal.ts @@ -0,0 +1,16 @@ +import apiClient from './clients/api-client'; +import { AxiosResponse } from 'axios'; +import { SupportingDocumentRefusal, SupportingDocumentRefusalIndexFilter } from '../models/supporting-document-refusal'; +import ApiLib from '../lib/api'; + +export default class SupportingDocumentRefusalAPI { + static async index (filters?: SupportingDocumentRefusalIndexFilter): Promise> { + const res: AxiosResponse> = await apiClient.get(`/api/supporting_document_refusals${ApiLib.filtersToQuery(filters)}`); + return res?.data; + } + + static async create (supportingDocumentRefusal: SupportingDocumentRefusal): Promise { + const res: AxiosResponse = await apiClient.post('/api/supporting_document_refusals', { supporting_document_refusal: supportingDocumentRefusal }); + return res?.data; + } +} diff --git a/app/frontend/src/javascript/api/supporting-document-type.ts b/app/frontend/src/javascript/api/supporting-document-type.ts new file mode 100644 index 000000000..f336b3e0b --- /dev/null +++ b/app/frontend/src/javascript/api/supporting-document-type.ts @@ -0,0 +1,31 @@ +import apiClient from './clients/api-client'; +import { AxiosResponse } from 'axios'; +import { SupportingDocumentType, SupportingDocumentTypeIndexfilter } from '../models/supporting-document-type'; +import ApiLib from '../lib/api'; + +export default class SupportingDocumentTypeAPI { + static async index (filters?: SupportingDocumentTypeIndexfilter): Promise> { + const res: AxiosResponse> = await apiClient.get(`/api/supporting_document_types${ApiLib.filtersToQuery(filters)}`); + return res?.data; + } + + static async get (id: number): Promise { + const res: AxiosResponse = await apiClient.get(`/api/supporting_document_types/${id}`); + return res?.data; + } + + static async create (proofOfIdentityType: SupportingDocumentType): Promise { + const res: AxiosResponse = await apiClient.post('/api/supporting_document_types', { supporting_document_type: proofOfIdentityType }); + return res?.data; + } + + static async update (proofOfIdentityType: SupportingDocumentType): Promise { + const res: AxiosResponse = await apiClient.patch(`/api/supporting_document_types/${proofOfIdentityType.id}`, { supporting_document_type: proofOfIdentityType }); + return res?.data; + } + + static async destroy (proofOfIdentityTypeId: number): Promise { + const res: AxiosResponse = await apiClient.delete(`/api/supporting_document_types/${proofOfIdentityTypeId}`); + return res?.data; + } +} diff --git a/app/frontend/src/javascript/components/supporting-documents/delete-supporting-documents-type-modal.tsx b/app/frontend/src/javascript/components/supporting-documents/delete-supporting-documents-type-modal.tsx index 2b804626f..eb0bb6ed2 100644 --- a/app/frontend/src/javascript/components/supporting-documents/delete-supporting-documents-type-modal.tsx +++ b/app/frontend/src/javascript/components/supporting-documents/delete-supporting-documents-type-modal.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { FabModal } from '../base/fab-modal'; -import ProofOfIdentityTypeAPI from '../../api/proof-of-identity-type'; +import SupportingDocumentTypeAPI from '../../api/supporting-document-type'; interface DeleteSupportingDocumentsTypeModalProps { isOpen: boolean, @@ -22,7 +22,7 @@ export const DeleteSupportingDocumentsTypeModal: React.FC => { try { - await ProofOfIdentityTypeAPI.destroy(proofOfIdentityTypeId); + await SupportingDocumentTypeAPI.destroy(proofOfIdentityTypeId); onSuccess(t('app.admin.settings.account.delete_supporting_documents_type_modal.deleted')); } catch (e) { onError(t('app.admin.settings.account.delete_supporting_documents_type_modal.unable_to_delete') + e); diff --git a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-files.tsx b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-files.tsx index fcece79b0..8c5ecf5f0 100644 --- a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-files.tsx +++ b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-files.tsx @@ -7,10 +7,10 @@ import { HtmlTranslate } from '../base/html-translate'; import { Loader } from '../base/loader'; import { User } from '../../models/user'; import { IApplication } from '../../models/application'; -import { ProofOfIdentityType } from '../../models/proof-of-identity-type'; -import { ProofOfIdentityFile } from '../../models/proof-of-identity-file'; -import ProofOfIdentityTypeAPI from '../../api/proof-of-identity-type'; -import ProofOfIdentityFileAPI from '../../api/proof-of-identity-file'; +import { SupportingDocumentType } from '../../models/supporting-document-type'; +import { SupportingDocumentFile } from '../../models/supporting-document-file'; +import SupportingDocumentTypeAPI from '../../api/supporting-document-type'; +import SupportingDocumentFileAPI from '../../api/supporting-document-file'; import { IFablab } from '../../models/fablab'; import { FabAlert } from '../base/fab-alert'; import { FabPanel } from '../base/fab-panel'; @@ -36,20 +36,20 @@ interface FilesType { export const SupportingDocumentsFiles: React.FC = ({ currentUser, onSuccess, onError }) => { const { t } = useTranslation('logged'); - const maxProofOfIdentityFileSizeMb = (Fablab.maxProofOfIdentityFileSize / 1024 / 1024).toFixed(); + const maxProofOfIdentityFileSizeMb = (Fablab.maxSupportingDocumentFileSize / 1024 / 1024).toFixed(); // list of supporting documents type - const [supportingDocumentsTypes, setSupportingDocumentsTypes] = useState>([]); - const [supportingDocumentsFiles, setSupportingDocumentsFiles] = useState>([]); + const [supportingDocumentsTypes, setSupportingDocumentsTypes] = useState>([]); + const [supportingDocumentsFiles, setSupportingDocumentsFiles] = useState>([]); const [files, setFiles] = useState({}); const [errors, setErrors] = useState>([]); // get supporting documents type and files useEffect(() => { - ProofOfIdentityTypeAPI.index({ group_id: currentUser.group_id }).then(tData => { + SupportingDocumentTypeAPI.index({ group_id: currentUser.group_id }).then(tData => { setSupportingDocumentsTypes(tData); }); - ProofOfIdentityFileAPI.index({ user_id: currentUser.id }).then(fData => { + SupportingDocumentFileAPI.index({ user_id: currentUser.id }).then(fData => { setSupportingDocumentsFiles(fData); }); }, []); @@ -57,9 +57,9 @@ export const SupportingDocumentsFiles: React.FC = /** * Return the files matching the given type id */ - const getSupportingDocumentsFileByType = (supportingDocumentsTypeId: number): ProofOfIdentityFile => { - return _.find(supportingDocumentsFiles, { - proof_of_identity_type_id: supportingDocumentsTypeId + const getSupportingDocumentsFileByType = (supportingDocumentsTypeId: number): SupportingDocumentFile => { + return _.find(supportingDocumentsFiles, { + supporting_document_type_id: supportingDocumentsTypeId }); }; @@ -84,7 +84,7 @@ export const SupportingDocumentsFiles: React.FC = return (event) => { const fileSize = event.target.files[0].size; let _errors: Array; - if (fileSize > Fablab.maxProofOfIdentityFileSize) { + if (fileSize > Fablab.maxSupportingDocumentFileSize) { _errors = errors.concat(documentId); setErrors(_errors); } else { @@ -106,18 +106,18 @@ export const SupportingDocumentsFiles: React.FC = for (const proofOfIdentityTypeId of Object.keys(files)) { const formData = new FormData(); - formData.append('proof_of_identity_file[user_id]', currentUser.id.toString()); - formData.append('proof_of_identity_file[proof_of_identity_type_id]', proofOfIdentityTypeId); - formData.append('proof_of_identity_file[attachment]', files[proofOfIdentityTypeId]); + formData.append('supporting_document_file[user_id]', currentUser.id.toString()); + formData.append('supporting_document_file[supporting_document_type_id]', proofOfIdentityTypeId); + formData.append('supporting_document_file[attachment]', files[proofOfIdentityTypeId]); const proofOfIdentityFile = getSupportingDocumentsFileByType(parseInt(proofOfIdentityTypeId, 10)); if (proofOfIdentityFile) { - await ProofOfIdentityFileAPI.update(proofOfIdentityFile.id, formData); + await SupportingDocumentFileAPI.update(proofOfIdentityFile.id, formData); } else { - await ProofOfIdentityFileAPI.create(formData); + await SupportingDocumentFileAPI.create(formData); } } if (Object.keys(files).length > 0) { - ProofOfIdentityFileAPI.index({ user_id: currentUser.id }).then(fData => { + SupportingDocumentFileAPI.index({ user_id: currentUser.id }).then(fData => { setSupportingDocumentsFiles(fData); setFiles({}); onSuccess(t('app.logged.dashboard.supporting_documents_files.file_successfully_uploaded')); @@ -132,7 +132,7 @@ export const SupportingDocumentsFiles: React.FC = * Return the download URL of the given file */ const getSupportingDocumentsFileUrl = (documentId: number) => { - return `/api/proof_of_identity_files/${documentId}/download`; + return `/api/supporting_document_files/${documentId}/download`; }; return ( @@ -144,7 +144,7 @@ export const SupportingDocumentsFiles: React.FC = options={{ SIZE: maxProofOfIdentityFileSizeMb }}/>
- {supportingDocumentsTypes.map((documentType: ProofOfIdentityType) => { + {supportingDocumentsTypes.map((documentType: SupportingDocumentType) => { return (
diff --git a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-form.tsx b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-form.tsx index c3cc8f832..d5085c064 100644 --- a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-form.tsx +++ b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-form.tsx @@ -1,10 +1,10 @@ import { BaseSyntheticEvent, useState } from 'react'; import * as React from 'react'; import { useTranslation } from 'react-i18next'; -import { ProofOfIdentityType } from '../../models/proof-of-identity-type'; +import { SupportingDocumentType } from '../../models/supporting-document-type'; interface SupportingDocumentsRefusalFormProps { - proofOfIdentityTypes: Array, + proofOfIdentityTypes: Array, onChange: (field: string, value: string | Array) => void, } @@ -38,7 +38,7 @@ export const SupportingDocumentsRefusalForm: React.FC x !== value); } setValues(newValues); - onChange('proof_of_identity_type_ids', newValues); + onChange('supporting_document_type_ids', newValues); }; }; diff --git a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-modal.tsx b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-modal.tsx index b4c8f0e3f..1e2336024 100644 --- a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-modal.tsx +++ b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-refusal-modal.tsx @@ -2,10 +2,10 @@ import { useState } from 'react'; import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { FabModal } from '../base/fab-modal'; -import { ProofOfIdentityType } from '../../models/proof-of-identity-type'; -import { ProofOfIdentityRefusal } from '../../models/proof-of-identity-refusal'; +import { SupportingDocumentType } from '../../models/supporting-document-type'; +import { SupportingDocumentRefusal } from '../../models/supporting-document-refusal'; import { User } from '../../models/user'; -import ProofOfIdentityRefusalAPI from '../../api/proof-of-identity-refusal'; +import SupportingDocumentRefusalAPI from '../../api/supporting-document-refusal'; import { SupportingDocumentsRefusalForm } from './supporting-documents-refusal-form'; interface SupportingDocumentsRefusalModalProps { @@ -13,7 +13,7 @@ interface SupportingDocumentsRefusalModalProps { toggleModal: () => void, onSuccess: (message: string) => void, onError: (message: string) => void, - proofOfIdentityTypes: Array, + proofOfIdentityTypes: Array, operator: User, member: User } @@ -24,11 +24,11 @@ interface SupportingDocumentsRefusalModalProps { export const SupportingDocumentsRefusalModal: React.FC = ({ isOpen, toggleModal, onSuccess, proofOfIdentityTypes, operator, member, onError }) => { const { t } = useTranslation('admin'); - const [data, setData] = useState({ + const [data, setData] = useState({ id: null, operator_id: operator.id, user_id: member.id, - proof_of_identity_type_ids: [], + supporting_document_type_ids: [], message: '' }); @@ -47,7 +47,7 @@ export const SupportingDocumentsRefusalModal: React.FC => { try { - await ProofOfIdentityRefusalAPI.create(data); + await SupportingDocumentRefusalAPI.create(data); onSuccess(t('app.admin.supporting_documents_refusal_modal.refusal_successfully_sent')); } catch (e) { onError(t('app.admin.supporting_documents_refusal_modal.unable_to_send') + e); @@ -58,7 +58,7 @@ export const SupportingDocumentsRefusalModal: React.FC { - return !data.message || data.proof_of_identity_type_ids.length === 0; + return !data.message || data.supporting_document_type_ids.length === 0; }; return ( diff --git a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-type-form.tsx b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-type-form.tsx index 7b48e0995..3e26b2963 100644 --- a/app/frontend/src/javascript/components/supporting-documents/supporting-documents-type-form.tsx +++ b/app/frontend/src/javascript/components/supporting-documents/supporting-documents-type-form.tsx @@ -2,20 +2,20 @@ import * as React from 'react'; import { useTranslation } from 'react-i18next'; import Select from 'react-select'; import { FabInput } from '../base/fab-input'; -import { ProofOfIdentityType } from '../../models/proof-of-identity-type'; +import { SupportingDocumentType } from '../../models/supporting-document-type'; import { Group } from '../../models/group'; import { SelectOption } from '../../models/select'; interface SupportingDocumentsTypeFormProps { groups: Array, - proofOfIdentityType?: ProofOfIdentityType, + supportingDocumentType?: SupportingDocumentType, onChange: (field: string, value: string | Array) => void, } /** * Form to set create/edit supporting documents type */ -export const SupportingDocumentsTypeForm: React.FC = ({ groups, proofOfIdentityType, onChange }) => { +export const SupportingDocumentsTypeForm: React.FC = ({ groups, supportingDocumentType, onChange }) => { const { t } = useTranslation('admin'); /** @@ -32,7 +32,7 @@ export const SupportingDocumentsTypeForm: React.FC> => { const res = []; - const groupIds = proofOfIdentityType?.group_ids || []; + const groupIds = supportingDocumentType?.group_ids || []; if (groupIds.length > 0) { groups.forEach(t => { if (groupIds.indexOf(t.id) > -1) { @@ -62,7 +62,7 @@ export const SupportingDocumentsTypeForm: React.FC {t('app.admin.settings.account.supporting_documents_type_form.type_form_info')}
-
+