Skip to content

Commit a4772e1

Browse files
committed
Merge branch 'main' of github.com:scientist-softserv/webstore into individual-request-test
2 parents 92fab47 + 17d4904 commit a4772e1

File tree

5 files changed

+60
-5
lines changed

5 files changed

+60
-5
lines changed

.editorconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# EditorConfig is awesome: https://EditorConfig.org
2+
# This file was generated using "EditorConfig for VS Code"
3+
4+
# top-most EditorConfig file
5+
root = true
6+
7+
[*]
8+
indent_style = space
9+
indent_size = 2
10+
end_of_line = lf
11+
charset = utf-8
12+
trim_trailing_whitespace = true
13+
insert_final_newline = true

pages/requests/new/[ware].js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@ import {
1919
configureErrors,
2020
createRequest,
2121
requestFormHeaderBg,
22+
sendRequestToVendor,
2223
useInitializeRequest,
2324
} from '../../../utils'
2425

2526
const NewRequest = () => {
2627
const router = useRouter()
2728
const { data: session } = useSession()
29+
const accessToken = session?.accessToken
2830
const wareID = router.query.id
29-
const { dynamicForm, isLoadingInitialRequest, isInitialRequestError } = useInitializeRequest(wareID, session?.accessToken)
31+
const { dynamicForm, isLoadingInitialRequest, isInitialRequestError } = useInitializeRequest(wareID, accessToken)
3032
const oneWeekFromNow = addDays((new Date()), 7).toISOString().slice(0, 10)
3133
const initialFormData = { 'suppliers_identified': 'Yes' }
3234
const initialState = {
@@ -97,10 +99,13 @@ const NewRequest = () => {
9799
const { data, error } = await createRequest({
98100
dynamicFormData: { name: dynamicForm.name, formData, ...requestForm },
99101
wareID,
100-
accessToken: session?.accessToken,
102+
accessToken,
101103
})
102104
if (error) return setCreateRequestError(error)
103105

106+
const sentToVendor = await sendRequestToVendor(data.id, accessToken)
107+
if (sentToVendor.error) return setCreateRequestError(sentToVendor.error)
108+
104109
setCreatedRequestUUID(data.uuid)
105110
}
106111

utils/api/base.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,21 @@ export const posting = async (url, data, token) => {
2929
return { success: false, error, requestID: undefined }
3030
}
3131
}
32+
33+
export const updating = async (url, data, token) => {
34+
try {
35+
const response = await api.put(url, data, { headers: defaultHeaders(token) })
36+
37+
return {
38+
data: response.data,
39+
error: false,
40+
}
41+
} catch (error) {
42+
// TODO(alishaevn): handle the error when sentry is set up
43+
console.error(`The following error occurred when trying to update data:`, error)
44+
return {
45+
data: undefined,
46+
error,
47+
}
48+
}
49+
}

utils/api/configurations.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export const configureRequests = ({ data, path }) => {
6969
export const configureErrors = (errors) => {
7070
const env = process.env.NODE_ENV
7171
const remainingErrors = errors
72-
.filter(error => Object.keys(error).length)
72+
.filter(error => error && Object.keys(error).length)
7373
.map(error => ({
7474
...error,
7575
message: `${error.message} (${error.response?.data?.message})`,

utils/api/requests.js

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
configureMessages,
88
configureRequests,
99
} from './configurations'
10-
import { posting } from './base'
10+
import { fetcher, posting, updating } from './base'
1111

1212
/** GET METHODS */
1313
export const useAllRequests = (accessToken) => {
@@ -193,11 +193,23 @@ export const createRequest = async ({ dynamicFormData, wareID, accessToken }) =>
193193
let { data, error } = await posting(`/wares/${wareID}/quote_groups.json`, { pg_quote_group }, accessToken)
194194

195195
if (data && dynamicFormData.attachments) {
196+
/**
197+
* TODO(alishaevn): I'm not sure why, but sometimes our data does not have the "quoted_ware_refs" property on it.
198+
* a search for the request in postman however, returns the property. we should find the underlying commonality on
199+
* requests that don't return the value so we can fix it. (ref: https://github.com/scientist-softserv/webstore/issues/252)
200+
*/
201+
let quotedWareID = data.quoted_ware_refs?.[0]?.id
202+
if (!quotedWareID) {
203+
// we have to explicity use fetcher because "useOneRequest" is a hook
204+
const res = await fetcher(`/quote_groups/${data.id}.json`, accessToken)
205+
quotedWareID = res.quoted_ware_refs?.[0]?.id
206+
}
207+
196208
const attachedFiles = await createMessageOrFile({
197209
accessToken,
198210
id: data.id,
199211
files: dynamicFormData.attachments,
200-
quotedWareID: data.quoted_ware_refs?.[0].id,
212+
quotedWareID,
201213
})
202214

203215
if (attachedFiles.error) {
@@ -209,3 +221,10 @@ export const createRequest = async ({ dynamicFormData, wareID, accessToken }) =>
209221
return { data, error }
210222
/* eslint-enable camelcase */
211223
}
224+
225+
/** PUT METHODS */
226+
export const sendRequestToVendor = async (requestID, accessToken) => {
227+
const { data, error } = await updating(`/quote_groups/${requestID}/send_to_vendors.json`, {}, accessToken)
228+
229+
return { data, error }
230+
}

0 commit comments

Comments
 (0)