11import React from 'react' ;
22import { yupResolver } from '@hookform/resolvers/yup' ;
33import { useForm } from 'react-hook-form' ;
4- import { Assembly , MaterialStatus , RoleEnum } from 'shared' ;
4+ import { Assembly , MaterialStatus } from 'shared' ;
55import * as yup from 'yup' ;
6- import LoadingIndicator from '../../../../../components/LoadingIndicator' ;
76import {
87 useCreateManufacturer ,
98 useGetAllManufacturers ,
@@ -12,10 +11,8 @@ import {
1211} from '../../../../../hooks/bom.hooks' ;
1312import ErrorPage from '../../../../ErrorPage' ;
1413import { Decimal } from 'decimal.js' ;
15- import { useCurrentUser } from '../../../../../hooks/users.hooks' ;
16- import MaterialAdminWrapper from './MaterialAdminWrapper' ;
17- import MaterialHeadWrapper from './MaterialHeadWrapper' ;
18- import MaterialMemberWrapper from './MaterialMemberWrapper' ;
14+ import MaterialFormView from './MaterialFormView' ;
15+ import LoadingIndicator from '../../../../../components/LoadingIndicator' ;
1916
2017const schema = yup . object ( ) . shape ( {
2118 name : yup . string ( ) . required ( 'Enter a name!' ) ,
@@ -72,10 +69,19 @@ export interface MaterialFormProps {
7269 defaultValues ?: MaterialFormInput ;
7370 onHide : ( ) => void ;
7471 open : boolean ;
75- assemblies : Assembly [ ] ;
72+ assemblies ?: Assembly [ ] ;
73+ fromRRForm ?: boolean ;
7674}
7775
78- const MaterialForm : React . FC < MaterialFormProps > = ( { submitText, assemblies, onSubmit, defaultValues, onHide, open } ) => {
76+ const MaterialForm : React . FC < MaterialFormProps > = ( {
77+ submitText,
78+ assemblies,
79+ onSubmit,
80+ defaultValues,
81+ onHide,
82+ open,
83+ fromRRForm = false
84+ } ) => {
7985 const {
8086 handleSubmit,
8187 control,
@@ -85,10 +91,10 @@ const MaterialForm: React.FC<MaterialFormProps> = ({ submitText, assemblies, onS
8591 } = useForm < MaterialFormInput > ( {
8692 defaultValues : {
8793 name : defaultValues ?. name ?? '' ,
88- status : defaultValues ?. status ?? MaterialStatus . NotReadyToOrder ,
94+ status : defaultValues ?. status ?? ( fromRRForm ? MaterialStatus . ReadyToOrder : MaterialStatus . NotReadyToOrder ) ,
8995 materialTypeName : defaultValues ?. materialTypeName ?? '' ,
9096 manufacturerPartNumber : defaultValues ?. manufacturerPartNumber ?? '' ,
91- quantity : defaultValues ?. quantity ?? 0 ,
97+ quantity : defaultValues ?. quantity ?? 1 ,
9298 manufacturerName : defaultValues ?. manufacturerName ?? '' ,
9399 pdmFileName : defaultValues ?. pdmFileName ,
94100 price : defaultValues ?. price ?? 0 ,
@@ -101,39 +107,19 @@ const MaterialForm: React.FC<MaterialFormProps> = ({ submitText, assemblies, onS
101107 resolver : yupResolver ( schema )
102108 } ) ;
103109
104- const user = useCurrentUser ( ) ;
105-
106110 const { mutateAsync : createManufacturer , isLoading : isLoadingCreateManufacturer } = useCreateManufacturer ( ) ;
107111
108- const {
109- data : materialTypes ,
110- isLoading : isLoadingMaterialTypes ,
111- isError : materialTypesIsError ,
112- error : materialTypesError
113- } = useGetAllMaterialTypes ( ) ;
112+ const { data : materialTypes , isError : materialTypesIsError , error : materialTypesError } = useGetAllMaterialTypes ( ) ;
114113
115- const { data : units , isLoading : isLoadingUnits , isError : unitsIsError , error : unitsError } = useGetAllUnits ( ) ;
114+ const { data : units , isError : unitsIsError , error : unitsError } = useGetAllUnits ( ) ;
116115
117- const {
118- data : manufactuers ,
119- isLoading : isLoadingManufactuers ,
120- isError : manufacturersIsError ,
121- error : manufacturersError
122- } = useGetAllManufacturers ( ) ;
116+ const { data : manufactuers , isError : manufacturersIsError , error : manufacturersError } = useGetAllManufacturers ( ) ;
123117
124118 if ( materialTypesIsError ) return < ErrorPage message = { materialTypesError . message } /> ;
125119 if ( unitsIsError ) return < ErrorPage message = { unitsError . message } /> ;
126120 if ( manufacturersIsError ) return < ErrorPage message = { manufacturersError . message } /> ;
127121
128- if (
129- isLoadingManufactuers ||
130- isLoadingMaterialTypes ||
131- isLoadingUnits ||
132- ! materialTypes ||
133- ! units ||
134- ! manufactuers ||
135- isLoadingCreateManufacturer
136- ) {
122+ if ( isLoadingCreateManufacturer ) {
137123 return < LoadingIndicator /> ;
138124 }
139125
@@ -158,30 +144,25 @@ const MaterialForm: React.FC<MaterialFormProps> = ({ submitText, assemblies, onS
158144 }
159145 } ;
160146
161- const sharedProps = {
162- assemblies,
163- allManufacturers : manufactuers ,
164- allMaterialTypes : materialTypes ,
165- allUnits : units ,
166- onSubmit : onSubmitWrapper ,
167- handleSubmit,
168- submitText,
169- onHide,
170- control,
171- errors,
172- open,
173- watch,
174- createManufacturer : createManufacturerWrapper ,
175- setValue
176- } ;
177-
178- if ( user . role === RoleEnum . APP_ADMIN || user . role === RoleEnum . ADMIN ) {
179- return < MaterialAdminWrapper { ...sharedProps } /> ;
180- }
181- if ( user . role === RoleEnum . HEAD || user . role === RoleEnum . LEADERSHIP ) {
182- return < MaterialHeadWrapper { ...sharedProps } /> ;
183- }
184- return < MaterialMemberWrapper { ...sharedProps } /> ;
147+ return (
148+ < MaterialFormView
149+ assemblies = { assemblies }
150+ allManufacturers = { manufactuers }
151+ allMaterialTypes = { materialTypes }
152+ allUnits = { units }
153+ onSubmit = { onSubmitWrapper }
154+ handleSubmit = { handleSubmit }
155+ submitText = { submitText }
156+ onHide = { onHide }
157+ control = { control }
158+ errors = { errors }
159+ open = { open }
160+ watch = { watch }
161+ createManufacturer = { createManufacturerWrapper }
162+ setValue = { setValue }
163+ fromRRForm = { fromRRForm }
164+ />
165+ ) ;
185166} ;
186167
187168export default MaterialForm ;
0 commit comments