mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-18 07:52:23 +01:00
(feat) OpenAPI/users: gender, organization, address
This commit is contained in:
parent
dcaa5ad28c
commit
fdddb545d9
@ -5,6 +5,7 @@
|
|||||||
- OpenAPI endpoint to fetch accounting data
|
- OpenAPI endpoint to fetch accounting data
|
||||||
- Updated OpenAPI documentation
|
- Updated OpenAPI documentation
|
||||||
- OpenAPI users endpoint offer ability to filter by created_after
|
- OpenAPI users endpoint offer ability to filter by created_after
|
||||||
|
- OpenAPI users endpoint return gender, organization and address
|
||||||
- Fix a bug: providing an array of attributes to filter OpenApi data, results in error
|
- Fix a bug: providing an array of attributes to filter OpenApi data, results in error
|
||||||
- Fix a bug: unable to manage stocks on new products
|
- Fix a bug: unable to manage stocks on new products
|
||||||
- Fix a bug: unsupported param[] syntax in OpenAPI
|
- Fix a bug: unsupported param[] syntax in OpenAPI
|
||||||
|
@ -28,6 +28,9 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
|
|||||||
"created_at": "2016-05-04T17:21:48.403+02:00",
|
"created_at": "2016-05-04T17:21:48.403+02:00",
|
||||||
"external_id": "J5821-4"
|
"external_id": "J5821-4"
|
||||||
"full_name": "xxxx xxxx",
|
"full_name": "xxxx xxxx",
|
||||||
|
"gender": "man",
|
||||||
|
"organization": true,
|
||||||
|
"address": "2 impasse xxxxxx, BRUXELLES",
|
||||||
"group": {
|
"group": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "standard, association",
|
"name": "standard, association",
|
||||||
@ -40,6 +43,9 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
|
|||||||
"created_at": "2016-05-03T15:21:13.125+02:00",
|
"created_at": "2016-05-03T15:21:13.125+02:00",
|
||||||
"external_id": "J5846-4"
|
"external_id": "J5846-4"
|
||||||
"full_name": "xxxxx xxxxx",
|
"full_name": "xxxxx xxxxx",
|
||||||
|
"gender": "woman",
|
||||||
|
"organization": true,
|
||||||
|
"address": "Grenoble",
|
||||||
"group": {
|
"group": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "étudiant, - de 25 ans, enseignant, demandeur d'emploi",
|
"name": "étudiant, - de 25 ans, enseignant, demandeur d'emploi",
|
||||||
@ -52,6 +58,9 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
|
|||||||
"created_at": "2016-05-03T13:51:03.223+02:00",
|
"created_at": "2016-05-03T13:51:03.223+02:00",
|
||||||
"external_id": "J5900-1"
|
"external_id": "J5900-1"
|
||||||
"full_name": "xxxxxxx xxxx",
|
"full_name": "xxxxxxx xxxx",
|
||||||
|
"gender": "man",
|
||||||
|
"organization": false,
|
||||||
|
"address": "21 rue des xxxxxx",
|
||||||
"group": {
|
"group": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "standard, association",
|
"name": "standard, association",
|
||||||
@ -64,6 +73,9 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
|
|||||||
"created_at": "2016-05-03T12:24:38.724+02:00",
|
"created_at": "2016-05-03T12:24:38.724+02:00",
|
||||||
"external_id": "P4172-4"
|
"external_id": "P4172-4"
|
||||||
"full_name": "xxx xxxxxxx",
|
"full_name": "xxx xxxxxxx",
|
||||||
|
"gender": "woman",
|
||||||
|
"organization": false,
|
||||||
|
"address": "147 rue xxxxxx, 75000 PARIS, France",
|
||||||
"group": {
|
"group": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "standard, association",
|
"name": "standard, association",
|
||||||
@ -82,6 +94,9 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
|
|||||||
"created_at": "2016-05-04T17:21:48.403+02:00",
|
"created_at": "2016-05-04T17:21:48.403+02:00",
|
||||||
"external_id": "J5500-4"
|
"external_id": "J5500-4"
|
||||||
"full_name": "xxxx xxxxxx",
|
"full_name": "xxxx xxxxxx",
|
||||||
|
"gender": "man",
|
||||||
|
"organization": true,
|
||||||
|
"address": "38100",
|
||||||
"group": {
|
"group": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "standard, association",
|
"name": "standard, association",
|
||||||
@ -94,6 +109,9 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
|
|||||||
"created_at": "2016-05-03T15:21:13.125+02:00",
|
"created_at": "2016-05-03T15:21:13.125+02:00",
|
||||||
"external_id": null,
|
"external_id": null,
|
||||||
"full_name": "xxxxx xxxxxx",
|
"full_name": "xxxxx xxxxxx",
|
||||||
|
"gender": "woman",
|
||||||
|
"organization": true,
|
||||||
|
"address": "",
|
||||||
"group": {
|
"group": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "étudiant, - de 25 ans, enseignant, demandeur d'emploi",
|
"name": "étudiant, - de 25 ans, enseignant, demandeur d'emploi",
|
||||||
|
@ -33,4 +33,14 @@ class InvoicingProfile < ApplicationRecord
|
|||||||
# if first_name or last_name is nil, the empty string will be used as a temporary replacement
|
# if first_name or last_name is nil, the empty string will be used as a temporary replacement
|
||||||
"#{(first_name || '').humanize.titleize} #{(last_name || '').humanize.titleize}"
|
"#{(first_name || '').humanize.titleize} #{(last_name || '').humanize.titleize}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def invoicing_address
|
||||||
|
if organization&.address
|
||||||
|
organization.address.address
|
||||||
|
elsif address
|
||||||
|
address.address
|
||||||
|
else
|
||||||
|
''
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -18,13 +18,7 @@ class Invoices::RecipientService
|
|||||||
|
|
||||||
# Get the street address of the recipient for the given invoice.
|
# Get the street address of the recipient for the given invoice.
|
||||||
def address(invoice)
|
def address(invoice)
|
||||||
if invoice.invoicing_profile&.organization&.address
|
invoice.invoicing_profile&.invoicing_address
|
||||||
invoice.invoicing_profile.organization.address.address
|
|
||||||
elsif invoice.invoicing_profile&.address
|
|
||||||
invoice.invoicing_profile.address.address
|
|
||||||
else
|
|
||||||
''
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Get the optional data in profile_custom_fields, if the recipient is an organization
|
# Get the optional data in profile_custom_fields, if the recipient is an organization
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
json.extract! user, :id, :email, :created_at, :external_id
|
json.extract! user, :id, :email, :created_at, :external_id
|
||||||
|
|
||||||
json.full_name user.profile.full_name if user.association(:profile).loaded?
|
json.full_name user.profile.full_name if user.association(:profile).loaded?
|
||||||
|
json.gender user.statistic_profile.gender ? 'man' : 'woman'
|
||||||
|
json.organization !user.invoicing_profile.organization.nil?
|
||||||
|
json.address user.invoicing_profile.invoicing_address
|
||||||
|
|
||||||
if user.association(:group).loaded?
|
if user.association(:group).loaded?
|
||||||
json.group do
|
json.group do
|
||||||
|
@ -17,6 +17,9 @@ class OpenApi::UsersTest < ActionDispatch::IntegrationTest
|
|||||||
users = json_response(response.body)
|
users = json_response(response.body)
|
||||||
assert_equal User.count, users[:users].length
|
assert_equal User.count, users[:users].length
|
||||||
assert_not_nil(users[:users].detect { |u| u[:external_id] == 'J5821-4' })
|
assert_not_nil(users[:users].detect { |u| u[:external_id] == 'J5821-4' })
|
||||||
|
assert(users[:users].all? { |u| %w[man woman].include?(u[:gender]) })
|
||||||
|
assert(users[:users].all? { |u| u[:organization] != User.find(u[:id]).invoicing_profile.organization.nil? })
|
||||||
|
assert(users[:users].any? { |u| u[:address].present? })
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'list all users with pagination' do
|
test 'list all users with pagination' do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user