From 036e47bad4bf5469395eae15db9bdf7f5c2e806a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Wed, 8 Dec 2021 22:17:19 +0000 Subject: [PATCH] feat: add custom requirements UI to the profile page --- .../resolvers/customInfoRequests.resolver.js | 3 +- .../graphql/types/customInfoRequests.type.js | 1 + .../src/pages/Customers/CustomerData.js | 49 ++++++++++++++++--- .../src/pages/Customers/CustomerProfile.js | 27 +++++++++- 4 files changed, 69 insertions(+), 11 deletions(-) diff --git a/lib/new-admin/graphql/resolvers/customInfoRequests.resolver.js b/lib/new-admin/graphql/resolvers/customInfoRequests.resolver.js index 01a04068..897b415c 100644 --- a/lib/new-admin/graphql/resolvers/customInfoRequests.resolver.js +++ b/lib/new-admin/graphql/resolvers/customInfoRequests.resolver.js @@ -21,7 +21,8 @@ const resolvers = { insertCustomInfoRequest: (...[, { customRequest }]) => queries.addCustomInfoRequest(customRequest), removeCustomInfoRequest: (...[, { id }]) => queries.removeCustomInfoRequest(id), editCustomInfoRequest: (...[, { id, customRequest }]) => queries.editCustomInfoRequest(id, customRequest), - setAuthorizedCustomRequest: (...[, { customerId, infoRequestId, isAuthorized }]) => queries.setAuthorizedCustomRequest(customerId, infoRequestId, isAuthorized) + setAuthorizedCustomRequest: (...[, { customerId, infoRequestId, isAuthorized }]) => queries.setAuthorizedCustomRequest(customerId, infoRequestId, isAuthorized), + setCustomerCustomInfoRequest: (...[, { customerId, infoRequestId, data }]) => queries.setCustomerData(customerId, infoRequestId, data) } } diff --git a/lib/new-admin/graphql/types/customInfoRequests.type.js b/lib/new-admin/graphql/types/customInfoRequests.type.js index 78b08a78..5a9ed909 100644 --- a/lib/new-admin/graphql/types/customInfoRequests.type.js +++ b/lib/new-admin/graphql/types/customInfoRequests.type.js @@ -48,6 +48,7 @@ const typeDef = gql` removeCustomInfoRequest(id: ID!): CustomInfoRequest @auth editCustomInfoRequest(id: ID!, customRequest: CustomRequestInput!): CustomInfoRequest @auth setAuthorizedCustomRequest(customerId: ID!, infoRequestId: ID!, isAuthorized: Boolean!): Boolean @auth + setCustomerCustomInfoRequest(customerId: ID!, infoRequestId: ID!, data: JSON!): Boolean @auth } ` diff --git a/new-lamassu-admin/src/pages/Customers/CustomerData.js b/new-lamassu-admin/src/pages/Customers/CustomerData.js index 6a90fafe..a1e4c3a1 100644 --- a/new-lamassu-admin/src/pages/Customers/CustomerData.js +++ b/new-lamassu-admin/src/pages/Customers/CustomerData.js @@ -62,7 +62,8 @@ const CustomerData = ({ updateCustomer, editCustomer, deleteEditedData, - updateCustomRequest + updateCustomRequest, + authorizeCustomRequest }) => { const classes = useStyles() const [listView, setListView] = useState(false) @@ -85,7 +86,7 @@ const CustomerData = ({ ) const customEntries = null // get customer custom entries - const customRequirements = null // get customer custom requirements + const customRequirements = [] // get customer custom requirements const customInfoRequests = sortByName( R.path(['customInfoRequests'])(customer) ?? [] ) @@ -300,17 +301,20 @@ const CustomerData = ({ ] R.forEach(it => { - cards.push({ - data: [ + console.log('it', it) + customRequirements.push({ + fields: [ { - value: it.customerData.data, + name: it.customInfoRequest.id, + label: it.customInfoRequest.customRequest.name, + value: it.customerData.data ?? '', component: TextInput } ], title: it.customInfoRequest.customRequest.name, titleIcon: , authorize: () => - updateCustomRequest({ + authorizeCustomRequest({ variables: { customerId: it.customerId, infoRequestId: it.customInfoRequest.id, @@ -318,14 +322,31 @@ const CustomerData = ({ } }), reject: () => - updateCustomRequest({ + authorizeCustomRequest({ variables: { customerId: it.customerId, infoRequestId: it.customInfoRequest.id, isAuthorized: false } }), - save: () => {} + save: values => { + updateCustomRequest({ + variables: { + customerId: it.customerId, + infoRequestId: it.customInfoRequest.id, + data: { + info_request_id: it.customInfoRequest.id, + data: values[it.customInfoRequest.id] + } + } + }) + }, + validationSchema: Yup.object().shape({ + [it.customInfoRequest.id]: Yup.string() + }), + initialValues: { + [it.customInfoRequest.id]: it.customerData.data ?? '' + } }) }, customInfoRequests) @@ -407,6 +428,18 @@ const CustomerData = ({ {customRequirements && (
Custom requirements + + + {customRequirements.map((elem, idx) => { + return isEven(idx) ? editableCard(elem, idx) : null + })} + + + {customRequirements.map((elem, idx) => { + return !isEven(idx) ? editableCard(elem, idx) : null + })} + +
)} diff --git a/new-lamassu-admin/src/pages/Customers/CustomerProfile.js b/new-lamassu-admin/src/pages/Customers/CustomerProfile.js index bfaf1e3c..39f3d25e 100644 --- a/new-lamassu-admin/src/pages/Customers/CustomerProfile.js +++ b/new-lamassu-admin/src/pages/Customers/CustomerProfile.js @@ -180,6 +180,20 @@ const SET_AUTHORIZED_REQUEST = gql` } ` +const SET_CUSTOMER_CUSTOM_INFO_REQUEST = gql` + mutation setCustomerCustomInfoRequest( + $customerId: ID! + $infoRequestId: ID! + $data: JSON! + ) { + setCustomerCustomInfoRequest( + customerId: $customerId + infoRequestId: $infoRequestId + data: $data + ) + } +` + const CustomerProfile = memo(() => { const history = useHistory() @@ -211,10 +225,18 @@ const CustomerProfile = memo(() => { const [setCustomer] = useMutation(SET_CUSTOMER, { onCompleted: () => getCustomer() }) - const [updateCustomRequest] = useMutation(SET_AUTHORIZED_REQUEST, { + + const [authorizeCustomRequest] = useMutation(SET_AUTHORIZED_REQUEST, { onCompleted: () => getCustomer() }) + const [setCustomerCustomInfoRequest] = useMutation( + SET_CUSTOMER_CUSTOM_INFO_REQUEST, + { + onCompleted: () => getCustomer() + } + ) + const updateCustomer = it => setCustomer({ variables: { @@ -403,7 +425,8 @@ const CustomerProfile = memo(() => { replacePhoto={replacePhoto} editCustomer={editCustomer} deleteEditedData={deleteEditedData} - updateCustomRequest={updateCustomRequest}> + updateCustomRequest={setCustomerCustomInfoRequest} + authorizeCustomRequest={authorizeCustomRequest}> )}