@@ -14,7 +14,7 @@ import {
14
14
Title ,
15
15
} from '@scientist-softserv/webstore-component-library'
16
16
import {
17
- acceptSOW ,
17
+ acceptSOWandCreatePO ,
18
18
configureErrors ,
19
19
createMessageOrFile ,
20
20
requestActionsBg ,
@@ -42,11 +42,14 @@ const Request = () => {
42
42
const { messages, isLoadingMessages, isMessagesError, mutateMessages, messagesData } = useMessages ( uuid , accessToken )
43
43
const { files, isLoadingFiles, isFilesError, mutateFiles, filesData } = useFiles ( uuid , accessToken )
44
44
45
+ const [ show , setShow ] = useState ( false )
46
+ const [ message , setMessage ] = useState ( null )
45
47
const [ allPOs , setAllPOs ] = useState ( [ ] )
46
48
const [ isPOError , setIsPOError ] = useState ( false )
47
49
const [ isLoadingPOs , setIsLoadingPOs ] = useState ( true )
50
+
48
51
useEffect ( ( ) => {
49
- if ( request ) {
52
+ if ( isLoadingPOs && request ) {
50
53
( async ( ) => {
51
54
const { allPOs, isLoadingPOs, isPOError } = await getAllPOs ( request ?. quotedWareID , uuid , request ?. identifier , accessToken )
52
55
@@ -55,9 +58,9 @@ const Request = () => {
55
58
setIsPOError ( isPOError )
56
59
} ) ( )
57
60
}
58
- } , [ allPOs , isPOError , request , uuid , session , accessToken ] )
61
+ } , [ request , isLoadingPOs , accessToken , uuid ] )
59
62
60
- const isLoading = isLoadingRequest || isLoadingSOWs || isLoadingFiles || isLoadingMessages || isLoadingPOs
63
+ const isLoading = isLoadingRequest || isLoadingSOWs || isLoadingFiles || isLoadingMessages
61
64
const isError = isRequestError || isSOWError || isFilesError || isMessagesError || isPOError
62
65
const documents = ( allSOWs ) ? [ ...allSOWs , ...allPOs ] : [ ]
63
66
@@ -91,6 +94,16 @@ const Request = () => {
91
94
)
92
95
}
93
96
97
+ const handleShow = ( messageText ) => {
98
+ setMessage ( messageText )
99
+ setShow ( true )
100
+ }
101
+
102
+ const handleClose = ( ) => {
103
+ setMessage ( null )
104
+ setShow ( false )
105
+ }
106
+
94
107
const handleSendingMessagesOrFiles = async ( { message, files } ) => {
95
108
const { data, error } = await createMessageOrFile ( {
96
109
id : request . id ,
@@ -106,8 +119,32 @@ const Request = () => {
106
119
}
107
120
}
108
121
122
+ const handleAcceptingSOWandCreatingPO = async ( document ) => {
123
+ const { data, error } = await acceptSOWandCreatePO (
124
+ request ,
125
+ document ,
126
+ accessToken ,
127
+ )
128
+
129
+ if ( error || data . code ) {
130
+ setIsPOError ( error || data . code )
131
+ } else if ( data . message ) {
132
+ setIsLoadingPOs ( true )
133
+ handleShow ( data . message )
134
+ }
135
+ }
136
+
109
137
return (
110
138
< div className = 'container' >
139
+ { ( message && show ) && (
140
+ < Notice
141
+ alert = { {
142
+ body : [ message ] ,
143
+ variant : 'success' ,
144
+ onClose : ( ) => handleClose ( ) ,
145
+ } }
146
+ />
147
+ ) }
111
148
< StatusBar
112
149
addClass = 'mt-4'
113
150
apiRequestStatus = { request . status . text }
@@ -136,13 +173,9 @@ const Request = () => {
136
173
< CollapsibleSection header = 'Additional Information' description = { request . htmlDescription } />
137
174
< Title addClass = 'mt-4' title = 'Documents' size = 'small' />
138
175
{ documents . length ? documents . map ( ( document , index ) => (
139
- < Document
176
+ < Document
140
177
addClass = 'mt-3'
141
- acceptSOW = { acceptSOW (
142
- request ,
143
- document . sowID ,
144
- accessToken ,
145
- ) }
178
+ acceptSOW = { ( ) => handleAcceptingSOWandCreatingPO ( document ) }
146
179
document = { document }
147
180
key = { `${ request . id } -${ index } ` }
148
181
request = { request }
0 commit comments