{"version":3,"sources":["projects/parts/PartsList.module.css","projects/assemblies/AssemblyList.module.css","components/ui/PageLoadingIndicator.js","components/materials/MaterialProfileList.js","components/materials/MaterialList.js","components/inventory/locations/StockLocationList.js","inventory/AddStock.js","inventory/StockItem.js","components/materials/MaterialTypeList.js","components/DistanceMeasurement.js","components/WeightMeasurement.js","inventory/StockList.tsx","inventory/locations/StockLocations.tsx","auth/ApiAuthorizationConstants.js","auth/AuthorizeService.js","auth/LoginMenu.js","api/ApiService.ts","projects/files/DeleteConfirmationDialog.js","projects/files/CreateDirectoryDialog.js","components/projects/ProjectDirectorySelectorOption.js","components/projects/ProjectDirectorySelector.js","projects/files/MoveDialog.js","projects/files/ProjectFilesPage.js","components/parts/StatusBar.js","projects/parts/PartsListItemStatusLine.js","projects/parts/PartsListItemStatus.js","projects/parts/PartsListItem.js","projects/parts/PartsList.js","projects/parts/PartsPage.js","users/UsersPage.js","components/ui/snackbar/SnackbarService.tsx","users/UserPage.js","users/InviteUserPage.js","components/ui/snackbar/GlobalSnackbar.tsx","components/ui/snackbar/SnackbarContainer.tsx","projects/ProjectsPage.js","components/ui/GoogleMapsAutoComplete.js","components/projects/ProjectStatusSelect.js","components/UserSelect.tsx","components/ClientCreateDialog.js","components/ContactSelect.js","projects/CreateProjectPage.js","projects/worklog/WorkLogList.js","projects/ProjectPage.js","projects/assemblies/AssemblyListItem.js","projects/assemblies/AssemblyList.js","projects/assemblies/ProjectAssembliesPage.js","components/ui/data-table/DataTable.js","suppliers/SuppliersPage.js","materials/types/MaterialTypesPage.js","settings/project-directories/ProjectDirectories.js","settings/SettingsPage.js","auth/Login.js","auth/Logout.js","materials/surface-finishes/SurfaceFinishesPage.js","materials/surface-finishes/EditSurfaceFinish.js","projects/part/PartPage.js","quotations/takeoff/components/TakeOffMaterialCodeInput.js","quotations/takeoff/components/TakeOffMaterialTypeInput.js","quotations/takeoff/QuotationTakeOff.js","quotations/Quotation.js","components/MultiUserSelect.tsx","components/ProjectSelect.js","projects/worklog/EnterProjectWorkLog.js","auth/AuthorizeRoute.js","projects/EditProjectPage.js","projects/worklog/EditWorkDiaryEntry.js","scheduler/TaskScheduler.js","components/TaskStatusSelect.js","projects/tasks/CreateTaskDialog.js","projects/tasks/ProjectTasksList.js","app/App.js","index.js","scheduler/TaskScheduler.module.css"],"names":["module","exports","useStyles","makeStyles","theme","backdrop","zIndex","drawer","PageLoadingIndicator","loading","classes","Backdrop","className","open","CircularProgress","color","MaterialProfileList","onMaterialProfileChange","materialProfileIdSelected","materialProfileList","sort","a","b","code","localeCompare","numeric","map","i","id","label","name","materialProfileSelectedValue","filter","Autocomplete","fullWidth","sx","marginTop","options","renderInput","params","TextField","onChange","event","newValue","value","isOptionEqualToValue","option","MaterialList","materialList","onMaterialChange","materialIdSelected","materialSelectedValue","filterOptions","inputValue","matchSorter","keys","threshold","rankings","MATCHES","getStockLocationCode","locationList","stockLocation","length","parentId","StockLocationList","onStockLocationChange","stockLocationList","stockLocationIdSelected","location","loc","fullCode","FormControl","width","InputLabel","Select","e","target","MenuItem","item","AddStock","useState","error","stockLocationLoaded","materialLoaded","materialProfilesLoaded","materialProfiles","materialId","stockLocationId","materialProfileId","qty","isLoading","state","setState","navigate","useNavigate","useEffect","fetch","then","res","json","result","s","message","Grid","container","xs","style","Breadcrumbs","aria-label","Link","component","RouterLink","to","Typography","autoFocus","type","InputProps","endAdornment","InputAdornment","position","Button","float","variant","onClick","method","headers","body","JSON","stringify","parseInt","StockItem","loaded","stockLocations","useParams","MaterialTypeList","onMaterialTypeChange","materialTypeIdSelected","materialTypeList","mmStyle","fontSize","DistanceMeasurement","styles","kg","WeightMeasurement","StockList","props","URLSearchParams","useLocation","search","get","initialState","isLoaded","items","materialTypesLoaded","materialTypesList","stockLocationsLoaded","updateStockByFilter","materialTypeId","totals","weight","reduce","prev","current","Paper","elevation","padding","val","console","log","results","getCodesFilteredByProfile","Table","TableHead","TableRow","TableCell","align","TableBody","colSpan","materialProfile","itemsForMaterialProfile","weightAndQty","hover","AddStockLocationFormDialog","React","locations","setLocations","handleCancel","onClose","Dialog","aria-labelledby","DialogTitle","DialogContent","DialogContentText","startAdornment","DialogActions","onAdd","locationId","DeleteStockLocationFormDialog","onDelete","EditStockLocationFormDialog","setCode","parentCode","onEdit","StockLocationRow","anchorEl","setAnchorEl","handleClose","paddingLeft","depth","IconButton","aria-controls","aria-haspopup","currentTarget","size","keepMounted","Boolean","onAddClick","onEditClick","onDeleteClick","children","StockLocations","deleteStockLocationDialogOpen","addStockLocationDialogOpen","editStockLocationDialogOpen","deleteStockLocationId","addStockLocationId","editStockLocationId","deleteStockLocationFullCode","addStockLocationFullCode","editStockLocationParentCode","editStockLocationCode","updateStockLocations","useCallback","getStockLocationChildren","sortStockLocationResult","handleDelete","itemId","handleAdd","handleEdit","direction","alignItems","ApplicationName","QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","authService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","getUser","user","profile","ensureUserManagerInitialized","userManager","access_token","signinSilent","createArguments","silentUser","updateState","success","Error","signinPopup","popUpUser","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","element","index","found","splice","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","ok","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","role","userProfile","LoginMenu","isAuthenticated","userName","_subscription","subscribe","populateState","unsubscribe","Promise","all","profilePath","logoutPath","pathname","local","authenticatedView","registerPath","loginPath","anonymousView","marginRight","Component","ServiceConfiguration","BaseService","config","transformOptions","resolve","getAccessToken","token","isSameOriginUrl","processor","req","startsWith","window","origin","host","test","ContactsService","configuration","baseUrl","instance","jsonParseReviver","axios","create","cancelToken","url_","options_","replace","transformedOptions_","request","catch","_error","isAxiosError","_response","transformResult","processGetContacts","_headers","k","hasOwnProperty","result200","resultData200","GetContactsResponse","fromJS","throwException","contact","processCreateContact","result201","resultData201","CreateContactResponse","encodeURIComponent","processGetContact","GetContactResponse","_responseText","resultData404","ProblemDetails","MaterialService","processGet","Array","isArray","Material","csvFile","content_","FormData","append","fileName","processImportMaterials","ImportMaterialsRow","file","processImportMaterialAliases","MaterialAlias","MaterialTypeService","MaterialType","ProjectAssemblyService","projectId","processGetAssemblies","ProjectAssembly","assemblyId","processGetAssembly","ProjectDefaultDirectoriesService","processGetDefaultDirectories","DefaultDirectoryResult","responseType","processUpdateDefaultDirectory","contentDisposition","fileNameMatch","exec","Blob","processCreateDefaultDirectory","directoryId","processDeleteDefaultDirectory","processSetFabricationDrawingDirectory","ProjectFileDirectoriesService","processDeleteDirectory","processGetDirectories","GetDirectoriesResult","parentDirectoryId","processCreateDirectory","CreateDirectoryResult","processSetCurrentFabricationDrawingDirectory","ProjectFilesService","fileId","processDownload","processOpen","processDeleteFiles","processGetFiles","ProjectFile","extractZip","processUploadFile","processMove","ProjectPartsService","processImport","ProjectPart","processGetParts","processImportAssemblies","processImportAssemblyParts","ProjectsService","processGetProject","GetProjectResult","processEditProject","EditProjectResult","processGetProjects","GetProjectsResult","processCreateProject","CreateProjectResult","processGetStatuses","ProjectStatus","processUpdateStatus","userId","processUpdateAssignedUser","SuppliersService","Supplier","SurfaceFinishService","SurfaceFinish","colours","isColoured","forEach","attr","processCreate","processCreateColour","processUpdate","processDelete","processUpdateColour","processDeleteColour","TasksService","processGetTasks","GetTasksResult","processCreateTask","CreateTaskCommandResult","processGetTaskStatuses","GetTaskStatusesResult","UserService","processGetUser","GetUserResult","processUpdateUser","UpdateUserResult","processDisableUser","isActiveOnly","processGetUsers","GetUsersResult","processEnableUser","processInviteUser","InviteUserResponse","WorkLogService","processGetWorkLogEntries","WorkLogEntrySummary","files","userIds","date","startTime","endTime","details","toString","item_","toJSON","processCreateWorkLogEntry","CreateWorkLogEntryResponse","processGetWorkDiaryEntry","GetWorkDiaryEntryResponse","processUpdateWorkDiaryEntry","UpdateWorkDiaryEntryResponse","contacts","property","_data","ContactSummary","init","Contact","isCustomer","isSupplier","businessNumber","taxNumber","emailAddress","addresses","phoneNumbers","xeroContactId","ContactAddress","ContactPhoneNumber","ContactPerson","contactId","addressId","address","Address","line1","line2","suburb","postCode","country","googlePlaceId","phoneNumber","areaCode","countryCode","firstName","lastName","isMainContactPerson","title","detail","materialType","isPlate","thickness","MaterialProfile","grades","MaterialGrade","typeId","material","profileCode","materialCode","materialName","plateThickness","alias","project","mark","parts","surfaceFinishId","surfaceFinish","mainPartMaterialId","mainPartMaterial","area","Project","AssemblyPartLine","number","projectStatusId","projectStatus","currentFabricationDrawingDirectoryId","currentFabricationDrawingDirectory","assignedToUserId","assignedToUser","customerId","customer","ProjectContact","ProjectFileDirectory","ApplicationUser","created","createdByUserId","lastModified","lastModifiedByUserId","Date","toISOString","positionInProject","parentDirectory","directory","avatar","deactivated","tenantId","tenant","ApplicationTenant","normalizedUserName","email","normalizedEmail","emailConfirmed","passwordHash","securityStamp","concurrencyStamp","phoneNumberConfirmed","twoFactorEnabled","lockoutEnd","lockoutEnabled","accessFailedCount","IdentityUserOfGuid","partId","part","assembly","materialGradeId","materialGrade","deleted","SurfaceFinishColour","isFabricationDrawings","directories","Directory","MoveFilesRequest","targetDirectory","assignedUser","UserSummary","projects","projectName","tasks","Task","EntityObject","createdAt","createdByUser","modifiedAt","modifiedByUserId","modifiedByUser","statusId","description","comments","startDate","endDate","attachments","assignments","workLog","TaskStatus","TaskComment","TaskAttachment","TaskAssignment","WorkLogEntry","colour","commentForId","commentFor","contents","attachmentForId","attachmentFor","users","start","end","TaskAssignmentUser","taskAssignmentId","taskAssignment","taskId","task","WorkLogEntryUser","WorkLogEntryFile","formatDate","workLogEntryId","entry","projectFileId","statuses","isActive","isAdmin","User","FileSummary","UserDto","d","getFullYear","getMonth","getDate","SwaggerException","isSwaggerException","obj","filesService","directoryService","DeleteConfirmationDialog","isOpen","setLoading","handleConfirm","deleteDirectory","deleteFiles","fileIds","disabled","CreateDirectoryDialog","directoryName","setDirectoryName","createDirectory","ProjectDirectorySelectorOption","repeat","ProjectDirectorySelector","selectedDirectoryId","onSelectedDirectoryChanged","setDirectories","getDirectories","directoriesRequest","loadData","topLevelDirectories","native","labelId","projectFileService","MoveDialog","setDirectory","directoryIds","f","move","ProjectFilesPage","setProject","currentDirectoryId","setCurrentDirectoryId","currentDirectoryFiles","setCurrentDirectoryFiles","deleteConfirmationDialogOpen","setDeleteConfirmationDialogOpen","createDirectoryDialogOpen","setCreateDirectoryDialogOpen","selectAllToggle","setSelectAllToggle","moveDialogOpen","setMoveDialogOpen","projectRequest","getProject","filesRequest","getFiles","selected","handleChangeDirectory","stripExcess","list","listNoExtensions","substr","lastIndexOf","shortestStringLength","longestStringLength","charToStringAtStart","charToStrip","charToStripAtEnd","split","reverse","join","l","charactersToStripAtStart","same","character","j","prevState","shortFileNames","shortFileName","currentDirectory","handleRefresh","refreshDirectories","handleNavigateUpDirectory","handleUpload","from","uploadFile","handleSetFabDirectory","pfd","setCurrentFabricationDrawingDirectory","FileActionPanel","onRefresh","onNavigateUpDirectory","onUpload","onCreateDirectory","onMove","md","DirectoryPanel","selectedDirectory","onChangeDirectory","FilePanel","onFileSelected","onDirectorySelected","onDirectoryChange","onSelectAllToggle","onSetFabDirectory","useStylesFileActionPanel","root","display","fileInput","createRef","Tooltip","click","startIcon","ref","multiple","hidden","tableLayout","cursor","cells","whiteSpace","textOverflow","overflow","dense","maxWidth","Checkbox","checked","FilePanelDirectoryLine","currentFabDirectoryId","FilePanelFileLine","isCurrentFabDirectory","stopPropagation","periodPoint","fileExtension","toUpperCase","link","DirectoryPanelLine","ListItem","button","ListItemIcon","ListItemText","primaryTypographyProps","dirElements","startDepth","sorted","addDepth","arr","sortHeirarchyWithDepth","List","minWidth","borderRadius","StatusBar","total","count","StatusBarItem","backgroundColor","height","PartsListItemStatusLine","partStatusLine","statusCode","action","PartsListItemStatus","statusLines","partStatus","rowContainer","PartsListItem","onToggleStatusLine","select","src","alt","statusLineOpen","PartsLists","TableContainer","row","projectService","PartsPages","setParts","importFileRef","loadProject","fetchParts","handleImportPartsFile","partsService","import","tableRow","userService","UsersPage","setUsers","getUsers","loadUsers","setIsAdmin","userInRole","href","snackbarService","snackbar","isMobile","messageText","messageType","milliSeconds","inform","SimpleObservable","UserPage","setUser","editing","setEditing","fetchUser","navigateToUsersPage","save","showSnackbar","disableUser","enableUser","marginLeft","FormControlLabel","control","InviteUserPage","inviteUser","palette","closeIcon","main","red","icon","iconMobile","info","primary","blue","green","text","textMobile","warning","amber","GlobalSnackbar","mobile","setOpen","getIconStyle","getStyle","setTimeout","anchorOrigin","horizontal","vertical","Snackbar","SnackbarContent","Info","Warning","CheckCircle","getIcon","Close","SnackbarContainer","setSnackbar","onUpdate","getSnackbar","ProjectsPage","searchTerm","setSearchTerm","setProjects","getProjects","fetchProjects","getProjectAddressString","formattedAddress","Search","edge","autocompleteService","secondary","spacing","GoogleMaps","onChangeAddress","setValue","setInputValue","setOptions","useRef","document","querySelector","script","createElement","setAttribute","appendChild","loadScript","useMemo","throttle","getPlacePredictions","componentRestrictions","active","google","maps","places","AutocompleteService","input","newOptions","getOptionLabel","x","autoComplete","includeInputInList","filterSelectedOptions","Geocoder","geocode","placeId","place_id","fields","address_components","types","long_name","addressLine1","trim","city","addressLine2","alert","fillInAddress","onInputChange","newInputValue","renderOption","matches","structured_formatting","main_text_matched_substrings","parse","main_text","match","offset","fontWeight","highlight","secondary_text","ProjectStatusSelect","onStatusChange","setStatuses","fetchProjectStatuses","UserSelect","selectedUser","setSelectedUser","usersRequest","Avatar","contactsService","ContactCreateDialog","setError","errors","setErrors","setContact","handleSave","createContact","hasError","field","Stack","helperText","margin","EmailAddress","ContactSelect","setContacts","createClientDialogOpen","setCreateClientDialogOpen","getContacts","loadClients","Box","flexDirection","flexGrow","key","freeSolo","didSave","projectsService","CreateProjectPage","setAssignedUser","latitude","longitude","setAddress","setCustomer","manualAddress","setManualAddress","projectDetails","setProjectDetails","createProject","dir","sm","rows","multiline","paddingBottom","workLogService","WorkLogListEntry","justifyContent","toDateString","Divider","LocalTime","truncatedTo","ChronoUnit","MINUTES","WorkLogListEntryAttachmentItem","isImage","lg","maxHeight","WorkLogList","entries","setEntries","getWorkLogEntries","loadWorkListEntries","ProjectPage","fetchProject","changeAssignedUser","updateAssignedUser","marginBottom","updateStatus","paddingTop","AssemblyListItem","AssemblyList","assemblies","assemblyService","AssembliesPage","setAssemblies","getAssemblies","loadAssembles","DataTable","columns","tableData","setTableData","isExpanded","m","DataTableExpandRowGroup","DataTableParentRow","onExpand","toggleExpanded","DataTableChildRow","supplierService","SuppliersPage","suppliers","setSuppliers","loadSuppliers","materialTypeService","MaterialTypesPage","materialTypes","setMaterialTypes","loadMaterialTypes","mt","pddService","ProjectDirectories","getDefaultDirectories","loadDirectories","Chip","SettingsPage","login","getReturnUrl","processLoginCallback","redirectToProfile","redirectToRegister","returnUrl","signIn","navigateToReturnUrl","completeSignIn","fromQuery","redirectToApiAuthorizationPath","encodeURI","apiAuthorizationPath","redirectUrl","Logout","isReady","authenticated","logout","processLogoutCallback","populateAuthenticationState","signOut","completeSignOut","surfaceFinishService","SurfaceFinishes","surfaceFinishes","setSurfaceFinishes","getSurfaceFinishes","EditSurfaceFinishPage","creating","setSurfaceFinish","setColours","newColour","setNewColour","getSurfaceFinish","newColor","handleColourUpdated","handleColourDeleted","header","paddingRight","borderBottom","lineHeight","verticalAlign","headerTitle","letterSpacing","headerActions","Switch","ColourRow","onDeleted","onUpdated","c","isEditing","setIsEditing","setName","deleteColour","onSave","createColour","updateColour","onCancel","PartPage","path","PartDetailsTab","PartFilesTab","PartAssembliesTab","PartHistoryTab","TakeOffMaterialCodeInput","materials","onValueChange","autoSelect","TakeOffMaterialTypeInput","materialService","QuotationTakeOff","setMaterials","setData","loadMaterials","setMaterialCode","v","getWeight","getTotalWeight","Quotation","MultiUserSelect","selectedUsers","ProjectSelect","selectedProject","setSelectedProject","projectsRequest","projectFound","Input","styled","EnterProjectWorkLog","setDate","setStartTime","setEndTime","setDetails","setFiles","uploadInput","handleSaveWorkLog","formData","u","LocalDate","nativeJs","errorString","fieldName","Container","DatePicker","TimePicker","htmlFor","accept","FileUploadPreview","imageData","URL","createObjectURL","AuthorizeRoute","ready","authenticationChanged","protocol","hash","EditProjectPage","navigateToProjectPage","saveProject","editProject","workDiaryService","EditWorkDiaryEntry","setEntry","getWorkDiaryEntry","hours","hour","minute","setHours","setMinutes","hours2","minute2","loadWorkDiaryEntry","InputLabelProps","shrink","defaultValue","TaskScheduler","day","days","scheduleGrid","DayHeader","TaskSchedulerRow","dayHeader","dayHeaderDay","dayHeaderDate","tasksService","TaskStatusSelect","taskStatusId","getTaskStatuses","loadStatuses","CreateTaskDialog","setStatus","createTask","ProjectTasksList","createDialogOpen","setCreateDialogOpen","setTasks","getTasks","loadTasks","t","TaskListItem","menuButton","App","isMenuOpen","toggleDrawer","CssBaseline","AppBar","Toolbar","Drawer","anchor","ListSubheader","getElementsByTagName","getAttribute","rootElement","getElementById","Sentry","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","LogRocket","setupLogRocketReact","createTheme","typography","fontFamily","components","MuiTableCell","defaultProps","styleOverrides","MuiButton","boxShadow","textTransform","ReactDOM","render","LocalizationProvider","dateAdapter","AdapterDateFns","basename","StyledEngineProvider","injectFirst","ThemeProvider"],"mappings":"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","file":"static/js/main.0bd62544.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PartsList_container__wX58B\",\"rowContainer\":\"PartsList_rowContainer__1I0LD\",\"select\":\"PartsList_select__2-QRc\",\"mark\":\"PartsList_mark__1csrx\",\"fileLinks\":\"PartsList_fileLinks__2O7X2\",\"material\":\"PartsList_material__3bhkB\",\"profile\":\"PartsList_profile__1OGWs\",\"status\":\"PartsList_status__3xzHD\",\"qty\":\"PartsList_qty__20bTA\",\"length\":\"PartsList_length__6chRW\",\"weight\":\"PartsList_weight__16jOJ\",\"action\":\"PartsList_action__2J9vI\",\"statusName\":\"PartsList_statusName__L1D4_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"AssemblyList_container__18mm9\",\"rowContainer\":\"AssemblyList_rowContainer__QUBDk\",\"select\":\"AssemblyList_select__1eaJg\",\"mark\":\"AssemblyList_mark__nyA3c\",\"fileLinks\":\"AssemblyList_fileLinks__3nfnF\",\"material\":\"AssemblyList_material__1bhPr\",\"profile\":\"AssemblyList_profile__3bJIh\",\"status\":\"AssemblyList_status__3IwDR\",\"qty\":\"AssemblyList_qty__12_NM\",\"length\":\"AssemblyList_length__5hgBT\",\"weight\":\"AssemblyList_weight__14hqE\",\"action\":\"AssemblyList_action__3Shys\",\"statusName\":\"AssemblyList_statusName__268wu\"};","import makeStyles from '@mui/styles/makeStyles';\r\nimport Backdrop from \"@mui/material/Backdrop\";\r\nimport CircularProgress from \"@mui/material/CircularProgress\";\r\nimport React from \"react\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n },\r\n}));\r\n\r\nexport default function PageLoadingIndicator({loading}) {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n )\r\n} ","import React from 'react';\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport Select from \"@mui/material/Select\";\r\nimport {MenuItem, TextField} from \"@mui/material\";\r\nimport {Autocomplete} from \"@mui/lab\";\r\n\r\nexport default function MaterialProfileList ( { onMaterialProfileChange, materialProfileIdSelected, materialProfileList}) {\r\n materialProfileList = materialProfileList.sort((a, b) => a.code.localeCompare(b.code, 'en', { numeric: true})).map(i => {\r\n return { id: i.id, label: i.code + ' ' + i.name}; \r\n });\r\n let materialProfileSelectedValue = '';\r\n\r\n if(materialProfileIdSelected) {\r\n materialProfileSelectedValue = materialProfileList.filter(i => i.id === materialProfileIdSelected)[0];\r\n }\r\n \r\n let handleChange = (event, newValue) => {\r\n //let materialProfile = materialProfileList.filter(i => i.label === event.target.)\r\n newValue = newValue == null ? '' : newValue.id;\r\n onMaterialProfileChange(newValue)\r\n }\r\n\r\n let isOptionEqualToValue = (option, value) => {\r\n return option.label === value;\r\n }\r\n \r\n return (\r\n }\r\n onChange={handleChange} value={materialProfileSelectedValue.label}\r\n isOptionEqualToValue={isOptionEqualToValue}\r\n />\r\n )\r\n}","import React from 'react';\r\nimport InputLabel from \"@mui/material/InputLabel\";\r\nimport Select from \"@mui/material/Select\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport {MenuItem, TextField} from \"@mui/material\";\r\nimport {Autocomplete} from \"@mui/lab\";\r\nimport {matchSorter} from \"match-sorter\";\r\n\r\nlet matchSorterOptions = {\r\n \r\n}\r\n\r\nexport default function MaterialList({ materialList, onMaterialChange, materialIdSelected}) {\r\n materialList = materialList.sort((a, b) => a.code.localeCompare(b.code, 'en', {numeric: true})).map(i => {\r\n return { id: i.id, label: i.code + ' ' + i.name};\r\n });\r\n \r\n let materialSelectedValue = '';\r\n\r\n if(materialIdSelected) {\r\n materialSelectedValue = materialList.filter(i => i.id === materialIdSelected)[0];\r\n }\r\n let handleChange = (event, newValue) => {\r\n //let materialProfile = materialProfileList.filter(i => i.label === event.target.)\r\n newValue = newValue == null ? '' : newValue.id;\r\n onMaterialChange(newValue);\r\n }\r\n\r\n let isOptionEqualToValue = (option, value) => {\r\n return option.label === value;\r\n }\r\n \r\n let filterOptions = (options, { inputValue}) => {\r\n return matchSorter(options, inputValue, {keys: ['label'], threshold: matchSorter.rankings.MATCHES});\r\n };\r\n \r\n return (\r\n }\r\n onChange={handleChange} value={materialSelectedValue.label}\r\n isOptionEqualToValue={isOptionEqualToValue}\r\n filterOptions={filterOptions}\r\n />\r\n )\r\n \r\n /*return (\r\n \r\n \r\n \r\n );*/\r\n}","import React from 'react';\r\nimport InputLabel from \"@mui/material/InputLabel\";\r\nimport Select from \"@mui/material/Select\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport {MenuItem} from \"@mui/material\";\r\n\r\nfunction getStockLocationCode (locationList, id) {\r\n let code = '';\r\n let stockLocation = locationList.filter((i) => i.id === id);\r\n if(stockLocation.length === 1) {\r\n code = stockLocation[0].code;\r\n if(stockLocation[0].parentId !== null) {\r\n return getStockLocationCode(locationList, stockLocation[0].parentId) + '-' + code;\r\n }\r\n }\r\n return code;\r\n}\r\n\r\nfunction StockLocationList({onStockLocationChange, stockLocationList, stockLocationIdSelected}) {\r\n stockLocationList = stockLocationList.map((location) => {\r\n let loc = location;\r\n location.fullCode = getStockLocationCode(stockLocationList, location.id);\r\n return loc;\r\n }).sort((a,b) => a.fullCode.localeCompare(b.fullCode, 'en', { numeric: true}));\r\n\r\n return (\r\n \r\n Stock Location\r\n onStockLocationChange(e.target.value)} value={stockLocationIdSelected}\r\n >\r\n Any\r\n {stockLocationList.map(item => (\r\n {item.fullCode}\r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default StockLocationList;","import React, { useState, useEffect, Fragment } from 'react';\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Link as RouterLink, useNavigate} from \"react-router-dom\";\r\nimport PageLoadingIndicator from \"../components/ui/PageLoadingIndicator\";\r\nimport MaterialProfileList from \"../components/materials/MaterialProfileList\";\r\nimport MaterialList from \"../components/materials/MaterialList\";\r\nimport StockLocationList from \"../components/inventory/locations/StockLocationList\";\r\n\r\nexport default function AddStock() {\r\n let initialState = {\r\n error: null,\r\n stockLocationLoaded: false,\r\n materialLoaded: false,\r\n stockLocationList: [],\r\n materialProfilesLoaded: false,\r\n materialProfiles: [],\r\n materialList: [],\r\n materialId: '',\r\n stockLocationId: '',\r\n materialProfileId: '',\r\n length: '',\r\n qty: 1,\r\n isLoading: false\r\n }\r\n\r\n let [state, setState] = useState(initialState);\r\n let navigate = useNavigate();\r\n\r\n const getCodesFilteredByProfile = () => {\r\n if(!state.materialProfileId) return state.materialList;\r\n return state.materialList.filter(item => item.materialProfileId === state.materialProfileId);\r\n };\r\n\r\n const onMaterialChanged = (value) => {\r\n setState(s => {\r\n return {\r\n ...s,\r\n materialId: value\r\n }})\r\n };\r\n\r\n const onLengthChanged = (event) => {\r\n let value = event.target.value;\r\n setState(s => {\r\n return {\r\n ...s,\r\n length: value\r\n }});\r\n };\r\n\r\n const onQtyChanged = (event) => {\r\n let value = event.target.value;\r\n setState(s => {\r\n return {\r\n ...s,\r\n qty: value\r\n }});\r\n };\r\n\r\n const onStockLocationChanged = (value) => {\r\n setState(s => {\r\n return {\r\n ...s,\r\n stockLocationId: value\r\n }});\r\n };\r\n \r\n const onMaterialProfileChanged = (value) => {\r\n setState(s => {\r\n return {\r\n ...s,\r\n materialProfileId: value\r\n }});\r\n };\r\n\r\n const addStockItem = () => {\r\n setState(s => {\r\n return {\r\n ...s,\r\n isLoading: true\r\n }});\r\n fetch(`/api/stock`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(\r\n {\r\n materialId: state.materialId,\r\n stockLocationId: state.stockLocationId,\r\n qty: state.qty,\r\n length: parseInt(state.length, 10)\r\n }\r\n )\r\n }).then( (result) => navigate(`/stock`));\r\n };\r\n\r\n useEffect(() => {\r\n fetch(`/api/stock-locations`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => { \r\n return {\r\n ...s,\r\n stockLocationLoaded: true,\r\n stockLocationList: result\r\n }});\r\n \r\n }\r\n );\r\n\r\n fetch(`/api/material`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => { \r\n return {\r\n ...s,\r\n materialLoaded: true,\r\n materialList: result\r\n }});\r\n }\r\n );\r\n\r\n fetch(`/api/material-profiles`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => { \r\n return {\r\n ...s,\r\n materialProfilesLoaded: true,\r\n materialProfiles: result\r\n }});\r\n }\r\n )\r\n }, []);\r\n\r\n const { error } = state;\r\n if (error) {\r\n return
Error: {error.message}
;\r\n } else if (!state.stockLocationLoaded || !state.materialLoaded || !state.materialProfilesLoaded) {\r\n return
Loading...
;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Home\r\n \r\n \r\n Stock\r\n \r\n Add Stock\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n mm,\r\n }}\r\n onChange={onLengthChanged}\r\n value={state.length}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n } \r\n}","import React, { useState, useEffect } from 'react';\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport { useParams, useNavigate } from 'react-router-dom';\r\n\r\nexport default function StockItem() {\r\n let navigate = useNavigate();\r\n let initialState = {\r\n error: null,\r\n loaded: false,\r\n qty: 1,\r\n item: {},\r\n stockLocationLoaded: false,\r\n stockLocations: []\r\n };\r\n \r\n let [state, setState] = useState(initialState);\r\n let params = useParams();\r\n\r\n const onQtyChanged = (event) => {\r\n let value = event.target.value;\r\n setState(s => ({\r\n ...s,\r\n qty: value\r\n }))\r\n };\r\n\r\n const pullStockItem = () => {\r\n fetch(`/api/stock/pull?stockId=${params.id}&qty=${state.qty}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then( (result) => {\r\n navigate(`/stock`);\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n fetch(`/api/stock/${params.id}`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n loaded: true,\r\n item: result\r\n }));\r\n }\r\n )\r\n\r\n fetch(`/api/stock-locations`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n stockLocationLoaded: true,\r\n stockLocations: result\r\n }));\r\n }\r\n );\r\n }, [params.id]);\r\n\r\n const getStockLocationCode = (id) => {\r\n let code = '';\r\n let stockLocation = state.stockLocations.filter((i) => i.id === id);\r\n if(stockLocation.length === 1) {\r\n code = stockLocation[0].code;\r\n if(stockLocation[0].parentId !== null) {\r\n return getStockLocationCode(stockLocation[0].parentId) + '-' + code;\r\n }\r\n }\r\n return code;\r\n };\r\n\r\n const { error } = state;\r\n if (error) {\r\n return
Error: {error.message}
;\r\n } else if (!state.loaded || !state.stockLocationLoaded) {\r\n return
Loading...
;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n \r\n Stock\r\n \r\n Stock Item\r\n \r\n \r\n \r\n

Product Code: {state.item.code}

\r\n

Length: {state.item.length}mm

\r\n

Quantity Available: {state.item.qty}

\r\n

Location: {getStockLocationCode(state.item.stockLocationId)}

\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n}","import React from 'react';\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport Select from \"@mui/material/Select\";\r\nimport {InputLabel, MenuItem} from \"@mui/material\";\r\n\r\nexport default function MaterialTypeList({ onMaterialTypeChange, materialTypeIdSelected, materialTypeList }) {\r\n materialTypeList.sort((a, b) => a.name.localeCompare(b.name, 'en', { numeric: true}));\r\n return (\r\n \r\n Material Type\r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\n\r\nconst useStyles = makeStyles({\r\n mmStyle: {\r\n fontSize: '.8em'\r\n }\r\n});\r\n\r\nexport default function DistanceMeasurement({ value }) {\r\n let styles = useStyles();\r\n return {value} mm\r\n}","import React from 'react';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\n\r\nconst useStyles = makeStyles({\r\n kg: {\r\n fontSize: '.8em'\r\n }\r\n});\r\n\r\nexport default function WeightMeasurement({ value }) {\r\n let styles = useStyles();\r\n return {value} kg\r\n}","import React, { useState, Fragment, useEffect } from 'react';\r\nimport {Breadcrumbs, Link, TableHead} from \"@mui/material\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport Table from \"@mui/material/Table\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom'\r\nimport StockLocationList from \"../components/inventory/locations/StockLocationList\";\r\nimport MaterialList from \"../components/materials/MaterialList\";\r\nimport MaterialProfileList from \"../components/materials/MaterialProfileList\";\r\nimport MaterialTypeList from \"../components/materials/MaterialTypeList\";\r\nimport DistanceMeasurement from \"../components/DistanceMeasurement\";\r\nimport WeightMeasurement from \"../components/WeightMeasurement\";\r\ntype StockListProps = {\r\n \r\n} \r\n\r\ntype StockItemResult = {\r\n id: string,\r\n code: string,\r\n qty: number,\r\n stockLocationId: string,\r\n length: number,\r\n materialProfileId: string,\r\n materialId: string,\r\n weight: number\r\n}\r\n\r\ntype Material = {\r\n id: string,\r\n code: string,\r\n materialProfileId: string\r\n materialTypeId: string\r\n}\r\n\r\ntype MaterialType = {\r\n id: string,\r\n name: string\r\n}\r\n\r\ntype StockLocation = {\r\n id: string,\r\n code: string,\r\n parentId: string | null\r\n}\r\n\r\ntype MaterialProfile = {\r\n id: string,\r\n code: string,\r\n name: string\r\n}\r\n\r\ntype StockListState = {\r\n error: { message: string },\r\n isLoaded: boolean,\r\n items: StockItemResult[],\r\n materialLoaded: boolean,\r\n materialList: Material[],\r\n materialIdSelected: string,\r\n materialTypesLoaded: boolean,\r\n materialTypesList: MaterialType[],\r\n materialTypeIdSelected: string,\r\n stockLocationIdSelected: string,\r\n stockLocationsLoaded: boolean,\r\n stockLocations: StockLocation[],\r\n materialProfilesLoaded: boolean,\r\n materialProfiles: MaterialProfile[],\r\n materialProfileIdSelected: string \r\n}\r\n\r\nfunction StockList(props: StockListProps)\r\n{\r\n let params = new URLSearchParams(useLocation().search);\r\n let stockLocationId = params.get('stockLocationId');\r\n let navigate = useNavigate();\r\n let initialState: StockListState = {\r\n error: { message: ''},\r\n isLoaded: false,\r\n items: [],\r\n materialLoaded: false,\r\n materialList: [],\r\n materialIdSelected: '',\r\n materialTypesLoaded: false,\r\n materialTypesList: [],\r\n materialTypeIdSelected: '',\r\n stockLocationIdSelected: stockLocationId ? stockLocationId : '',\r\n stockLocationsLoaded: false,\r\n materialProfilesLoaded: false,\r\n materialProfiles: [],\r\n stockLocations: [],\r\n materialProfileIdSelected: ''\r\n };\r\n\r\n let [state, setState] = useState(initialState);\r\n \r\n const getCodesFilteredByProfile = () => {\r\n let results: Material[] = state.materialList;\r\n if(state.materialProfileIdSelected) results = results.filter(item => item.materialProfileId === state.materialProfileIdSelected);\r\n if(state.materialTypeIdSelected) results = results.filter(item => item.materialTypeId === state.materialTypeIdSelected);\r\n return results;\r\n };\r\n\r\n const updateStockByFilter = (materialId: string, stockLocationId: string, materialProfileId: string, materialTypeId: string) => {\r\n if(materialTypeId !== state.materialTypeIdSelected && materialTypeId) {\r\n materialId = '';\r\n materialProfileId = '';\r\n }\r\n if(materialProfileId !== state.materialProfileIdSelected && materialProfileId) materialId = '';\r\n setState(s => ({\r\n ...s,\r\n isLoaded: false,\r\n items: [],\r\n materialIdSelected: materialId,\r\n stockLocationIdSelected: stockLocationId,\r\n materialProfileIdSelected: materialProfileId,\r\n materialTypeIdSelected: materialTypeId\r\n }));\r\n\r\n fetch(`/api/stock?materialId=${materialId}&stockLocationId=${stockLocationId}&materialProfileId=${materialProfileId}&materialTypeId=${materialTypeId}`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: true,\r\n items: result\r\n }));\r\n },\r\n (error) => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: true,\r\n error\r\n }));\r\n }\r\n )\r\n };\r\n\r\n useEffect(() => {\r\n fetch(`/api/stock`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: true,\r\n items: result\r\n }));\r\n },\r\n (error) => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: true,\r\n error\r\n }));\r\n }\r\n );\r\n\r\n fetch(`/api/material`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n materialLoaded: true,\r\n materialList: result\r\n }));\r\n }\r\n );\r\n\r\n fetch(`/api/material-types`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n materialTypesLoaded: true,\r\n materialTypesList: result\r\n }));\r\n }\r\n );\r\n\r\n fetch(`/api/stock-locations`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n stockLocationsLoaded: true,\r\n stockLocations: result\r\n }));\r\n }\r\n );\r\n\r\n fetch(`/api/material-profiles`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => ({\r\n ...s,\r\n materialProfilesLoaded: true,\r\n materialProfiles: result\r\n }));\r\n }\r\n )\r\n }, []);\r\n \r\n\r\n const navigateToStockItem = (id: string) => {\r\n navigate(`/stock/${id}`);\r\n };\r\n \r\n const getStockLocationCode = (id: string): string => {\r\n let code = '';\r\n let stockLocation = state.stockLocations.filter((i: StockLocation) => i.id === id);\r\n if(stockLocation.length === 1) {\r\n code = stockLocation[0].code;\r\n if(stockLocation[0].parentId !== null) {\r\n return getStockLocationCode(stockLocation[0].parentId) + '-' + code;\r\n }\r\n }\r\n return code;\r\n };\r\n\r\n let totals = { weight: 0, qty: 0};\r\n if(state && state.items && state.items.length > 0) {\r\n totals = state.items.reduce((prev,current) => {\r\n prev.qty = prev.qty + current.qty;\r\n prev.weight = prev.weight + (current.qty * current.weight);\r\n return prev;\r\n },{weight: 0, qty: 0});\r\n }\r\n \r\n const { error, isLoaded, items } = state;\r\n if (error.message.length > 0) {\r\n return
Error: {error.message}
;\r\n } else if (!isLoaded) {\r\n return
Loading...
;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Stock List\r\n \r\n \r\n \r\n \r\n Stock List\r\n \r\n \r\n \r\n \r\n Filters\r\n {state.materialTypesLoaded && updateStockByFilter(state.materialIdSelected, state.stockLocationIdSelected, state.materialProfileIdSelected, val)}/>}\r\n {state.materialProfilesLoaded && {console.log(val); updateStockByFilter(state.materialIdSelected, state.stockLocationIdSelected, val, state.materialTypeIdSelected)}}/>}\r\n {state.materialLoaded && updateStockByFilter(val, state.stockLocationIdSelected, state.materialProfileIdSelected, state.materialTypeIdSelected)}/>}\r\n {state.stockLocationsLoaded && updateStockByFilter(state.materialIdSelected, val, state.materialProfileIdSelected, state.materialTypeIdSelected)}/>}\r\n \r\n \r\n \r\n \r\n \r\n Code\r\n Length\r\n Qty\r\n Weight\r\n Location\r\n \r\n \r\n \r\n {items.length === 0 &&\r\n No stock found}\r\n {\r\n state.materialProfiles.map((materialProfile) => {\r\n let itemsForMaterialProfile = items.filter((item) => {\r\n return item.materialProfileId === materialProfile.id\r\n }).sort((a,b) => {\r\n let res = a.code.localeCompare(b.code, 'en', { numeric: true });\r\n if(res === 0) return a.length - b.length;\r\n return res;\r\n }\r\n );\r\n let weightAndQty = itemsForMaterialProfile.reduce((prev,current) => {\r\n prev.qty = prev.qty + current.qty;\r\n prev.weight = prev.weight + (current.qty * current.weight);\r\n return prev;\r\n },{weight: 0, qty: 0});\r\n if(itemsForMaterialProfile.length > 0) {\r\n return (\r\n \r\n \r\n {materialProfile.code} ({materialProfile.name})\r\n {weightAndQty.qty}\r\n \r\n \r\n \r\n {itemsForMaterialProfile.map((item: StockItemResult) => (\r\n navigateToStockItem(item.id)}>\r\n {item.code}\r\n \r\n {item.qty}\r\n \r\n {getStockLocationCode(item.stockLocationId)}\r\n \r\n ))}\r\n \r\n )\r\n \r\n }\r\n else {\r\n return null;\r\n }\r\n \r\n })\r\n }\r\n \r\n Total\r\n {totals.qty}\r\n {totals.weight/100}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default StockList;","import React, { useEffect, useState, useCallback } from 'react';\r\nimport Table from '@mui/material/Table'\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Button from \"@mui/material/Button\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport Menu from \"@mui/material/Menu\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogContentText from \"@mui/material/DialogContentText\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\ntype StockLocation = {\r\n id: string,\r\n code: string,\r\n parentId: string | null,\r\n children: StockLocation[]\r\n}\r\n\r\ntype StockLocationsState = {\r\n error: { message: string },\r\n isLoaded: boolean,\r\n stockLocations: StockLocation[],\r\n deleteStockLocationDialogOpen: boolean,\r\n addStockLocationDialogOpen: boolean,\r\n editStockLocationDialogOpen: boolean,\r\n addStockLocationId: string | null,\r\n deleteStockLocationId: string | null,\r\n editStockLocationId: string | null,\r\n addStockLocationFullCode: string | null,\r\n deleteStockLocationFullCode: string | null,\r\n editStockLocationParentCode: string | null,\r\n editStockLocationCode: string | null\r\n \r\n}\r\n\r\nfunction AddStockLocationFormDialog(props: any) {\r\n const [locations, setLocations] = React.useState('');\r\n const handleCancel = () => {\r\n props.onClose();\r\n };\r\n \r\n const handleAdd = () => {\r\n props.onAdd(props.locationId, locations);\r\n props.onClose();\r\n };\r\n\r\n const updateLocationCodes = (event: any) => {\r\n setLocations(event.target.value);\r\n } \r\n\r\n return (\r\n
\r\n \r\n Add Stock Locations {props.fullCode ? 'to ' + props.fullCode : ''}\r\n \r\n \r\n To add more than one location at a time you can seperate each location with a comma for example: \"A,B,C,D\". \r\n You may also generate a range of locations by specifying a starting and ending number/character seperated by a dash, \r\n for example: \"A-E\", will generate A,B,C,D and E locations.\r\n \r\n {props.fullCode ? props.fullCode + '-' : ''},\r\n }}\r\n onChange={updateLocationCodes}\r\n value={locations}\r\n /> \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction DeleteStockLocationFormDialog(props: any) {\r\n const handleCancel = () => {\r\n props.onClose();\r\n };\r\n\r\n const handleDelete = () => {\r\n props.onDelete(props.locationId);\r\n props.onClose();\r\n };\r\n\r\n return (\r\n
\r\n \r\n Delete Stock Location {props.fullCode}\r\n \r\n \r\n Are you sure you want to delete {props.fullCode}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction EditStockLocationFormDialog(props: any) {\r\n const [code, setCode] = React.useState('');\r\n useEffect(() => {\r\n setCode(props.code)\r\n }, [props.code]);\r\n const handleCancel = () => {\r\n props.onClose();\r\n };\r\n\r\n const handleEdit = () => {\r\n props.onEdit(props.locationId, code);\r\n props.onClose();\r\n };\r\n \r\n const updateLocationCodes = (event: any) => {\r\n setCode(event.target.value);\r\n }\r\n return (\r\n
\r\n \r\n Edit Stock Locations {props.fullCode}\r\n \r\n \r\n Rename stock location to {code}\r\n \r\n {props.parentCode + '-'},\r\n }}\r\n onChange={updateLocationCodes}\r\n value={code}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction StockLocationRow(props: { item: StockLocation , parentCode: string | null, depth: number, onDeleteClick: any, onAddClick: any, onEditClick: any}) {\r\n \r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClick = (event: any) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n \r\n let handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n \r\n let handleDeleteClick = () => {\r\n handleClose();\r\n props.onDeleteClick(props.item.id, fullCode);\r\n };\r\n\r\n let handleAddClick = () => {\r\n handleClose();\r\n props.onAddClick(props.item.id, fullCode);\r\n };\r\n\r\n let handleEditClick = () => {\r\n handleClose();\r\n props.onEditClick(props.item.id, props.parentCode, props.item.code);\r\n };\r\n let fullCode = props.item.code;\r\n if(props.parentCode != null) { fullCode = props.parentCode + '-' + props.item.code}\r\n return (\r\n <>\r\n \r\n {fullCode}\r\n \r\n \r\n \r\n \r\n \r\n \r\n View Stock Here\r\n Add More Locations\r\n Edit\r\n Delete\r\n \r\n \r\n \r\n {props.item.children.map((item: StockLocation) => (\r\n ))}\r\n \r\n )\r\n}\r\n\r\nexport default function StockLocations()\r\n{\r\n let initialState: StockLocationsState = {\r\n error: { message: ''},\r\n isLoaded: false,\r\n stockLocations: [],\r\n deleteStockLocationDialogOpen: false,\r\n addStockLocationDialogOpen: false,\r\n editStockLocationDialogOpen: false,\r\n deleteStockLocationId: null,\r\n addStockLocationId: null,\r\n editStockLocationId: null,\r\n deleteStockLocationFullCode: null,\r\n addStockLocationFullCode: null,\r\n editStockLocationParentCode: null,\r\n editStockLocationCode: null\r\n };\r\n\r\n let [state, setState] = useState(initialState);\r\n \r\n \r\n\r\n const updateStockLocations = useCallback(() => {\r\n const getStockLocationChildren = (stockLocations: StockLocation[], parentId: string | null) => {\r\n return stockLocations.filter(i => i.parentId === parentId).map(i => {\r\n i.children = getStockLocationChildren(stockLocations, i.id);\r\n return i;\r\n }).sort((a, b) => a.code.localeCompare(b.code, 'en', {numeric: true } ));\r\n };\r\n \r\n const sortStockLocationResult = (stockLocations: StockLocation[]) : StockLocation[] => {\r\n return getStockLocationChildren(stockLocations, null);\r\n }\r\n\r\n fetch(`/api/stock-locations`)\r\n .then(res => res.json())\r\n .then(\r\n (result) => {\r\n setState(s => {\r\n return {\r\n ...s,\r\n isLoaded: true,\r\n stockLocations: sortStockLocationResult(result)\r\n }\r\n });\r\n },\r\n (error) => {\r\n }\r\n )\r\n }, []);\r\n\r\n useEffect(() => {\r\n updateStockLocations();\r\n }, [updateStockLocations]);\r\n\r\n const handleDelete = (itemId: string, fullCode: string) => {\r\n setState(s => ({ ...s, deleteStockLocationDialogOpen: true, deleteStockLocationId: itemId, deleteStockLocationFullCode: fullCode }));\r\n };\r\n\r\n const handleAdd = (itemId: string | null, fullCode: string) => {\r\n setState(s => ({ ...s, addStockLocationDialogOpen: true, addStockLocationId: itemId, addStockLocationFullCode: fullCode }));\r\n };\r\n\r\n const handleEdit = (itemId: string, parentCode: string, code: string) => {\r\n setState(s => ({ ...s, editStockLocationDialogOpen: true, editStockLocationId: itemId, editStockLocationParentCode: parentCode, editStockLocationCode: code }));\r\n };\r\n\r\n const addStockLocations = (id: string, locations: string) => {\r\n fetch(`/api/stock-locations`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({parentId: id, code: locations})\r\n }).then( () => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: false,\r\n stockLocations: []\r\n }));\r\n updateStockLocations();\r\n })\r\n };\r\n\r\n const deleteStockLocation = (id: string) => {\r\n fetch(`/api/stock-locations/${id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n }).then( (result) => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: false,\r\n stockLocations: []\r\n }));\r\n updateStockLocations();\r\n })\r\n };\r\n\r\n const editStockLocation = (id: string, code: string) => {\r\n fetch(`/api/stock-locations/${id}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({id: id, code: code})\r\n }).then( () => {\r\n setState(s => ({\r\n ...s,\r\n isLoaded: false,\r\n stockLocations: []\r\n }));\r\n updateStockLocations();\r\n })\r\n };\r\n\r\n const onDeleteStockDialogClose = () => {\r\n setState(s => ({ ...s, deleteStockLocationDialogOpen: false, deleteStockLocationId: null, deleteStockLocationFullCode: null }));\r\n };\r\n\r\n const onAddStockDialogClose = () => {\r\n setState(s => ({ ...s, addStockLocationDialogOpen: false, addStockLocationId: null, addStockLocationFullCode: null }));\r\n };\r\n\r\n const onEditStockDialogClose = () => {\r\n setState(s => ({ ...s, editStockLocationDialogOpen: false, editStockLocationId: null, editStockLocationCode: null, editStockLocationParentCode: null }));\r\n };\r\n\r\n const { error, isLoaded, stockLocations } = state;\r\n if (error.message.length > 0) {\r\n return
Error: {error.message}
;\r\n } else if (!isLoaded) {\r\n return
Loading...
;\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Location Code\r\n \r\n \r\n \r\n \r\n {stockLocations.length === 0 &&\r\n No stock locations found}\r\n {stockLocations.map((item: StockLocation) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n}","export const ApplicationName = 'FabShopManager';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: 'Identity/Account/Register',\r\n IdentityManagePath: 'Identity/Account/Manage'\r\n};\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError);\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError);\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n }\r\n\r\n async userInRole(role) {\r\n let userProfile = await this.getUser();\r\n if(userProfile && userProfile.role === role) return true;\r\n return false;\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport authService from './AuthorizeService';\r\nimport { ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport Button from \"@mui/material/Button\";\r\n\r\nexport class LoginMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n userName: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n this.populateState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async populateState() {\r\n const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])\r\n this.setState({\r\n isAuthenticated,\r\n userName: user && user.name\r\n });\r\n }\r\n\r\n render() {\r\n const { isAuthenticated, userName } = this.state;\r\n if (!isAuthenticated) {\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n return this.anonymousView(registerPath, loginPath);\r\n } else {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\r\n return this.authenticatedView(userName, profilePath, logoutPath);\r\n }\r\n }\r\n\r\n authenticatedView(userName, profilePath, logoutPath) {\r\n return (\r\n \r\n \r\n );\r\n\r\n }\r\n\r\n anonymousView(registerPath, loginPath) {\r\n return (\r\n \r\n\r\n \r\n );\r\n }\r\n}","/* tslint:disable */\r\n/* eslint-disable */\r\n//----------------------\r\n// \r\n// Generated using the NSwag toolchain v (http://NSwag.org)\r\n// \r\n//----------------------\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, CancelToken } from 'axios';\r\n\r\nexport class ServiceConfiguration {\r\n \r\n}\r\n\r\nexport class BaseService {\r\n private readonly config: ServiceConfiguration;\r\n \r\n constructor(config: ServiceConfiguration) {\r\n this.config = config;\r\n }\r\n\r\n protected transformOptions = (options: AxiosRequestConfig): Promise => {\r\n return new Promise(resolve => {\r\n authService.getAccessToken().then(token => {\r\n if (!!token && BaseService.isSameOriginUrl(options)) {\r\n options.headers = {\r\n ...options.headers,\r\n 'Authorization': `Bearer ${token}`\r\n };\r\n }\r\n resolve(options);\r\n });\r\n });\r\n };\r\n\r\n protected transformResult(url: string, response: AxiosResponse, processor: (response: AxiosResponse) => any) {\r\n // TODO: Return own result or throw exception to change default processing behavior, \r\n // or call processor function to run the default processing logic\r\n\r\n return processor(response);\r\n }\r\n\r\n private static isSameOriginUrl(req: any) {\r\n // It's an absolute url with the same origin.\r\n if (req.url.startsWith(`${window.location.origin}/`)) {\r\n return true;\r\n }\r\n\r\n // It's a protocol relative url with the same origin.\r\n // For example: //www.example.com/api/Products\r\n if (req.url.startsWith(`//${window.location.host}/`)) {\r\n return true;\r\n }\r\n\r\n // It's a relative url like /api/Products\r\n if (/^\\/[^\\/].*/.test(req.url)) {\r\n return true;\r\n }\r\n\r\n // It's an absolute or protocol relative url that\r\n // doesn't have the same origin.\r\n return false;\r\n }\r\n}\r\n\r\nexport interface IContactsService {\r\n getContacts(): Promise;\r\n createContact(contact: CreateContactCommand): Promise;\r\n getContact(id: string): Promise;\r\n}\r\n\r\nexport class ContactsService extends BaseService implements IContactsService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getContacts( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/contacts\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetContacts(_response));\r\n });\r\n }\r\n\r\n protected processGetContacts(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetContactsResponse.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createContact(contact: CreateContactCommand , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/contacts\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(contact);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateContact(_response));\r\n });\r\n }\r\n\r\n protected processCreateContact(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 201) {\r\n const _responseText = response.data;\r\n let result201: any = null;\r\n let resultData201 = _responseText;\r\n result201 = CreateContactResponse.fromJS(resultData201);\r\n return Promise.resolve(result201);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getContact(id: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/contacts/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetContact(_response));\r\n });\r\n }\r\n\r\n protected processGetContact(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetContactResponse.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status === 404) {\r\n const _responseText = response.data;\r\n let result404: any = null;\r\n let resultData404 = _responseText;\r\n result404 = ProblemDetails.fromJS(resultData404);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IMaterialService {\r\n get(): Promise;\r\n importMaterials(csvFile: FileParameter | null | undefined): Promise;\r\n importMaterialAliases(file: FileParameter | null | undefined): Promise;\r\n}\r\n\r\nexport class MaterialService extends BaseService implements IMaterialService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(Material.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n importMaterials(csvFile: FileParameter | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material/import\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (csvFile !== null && csvFile !== undefined)\r\n content_.append(\"csvFile\", csvFile.data, csvFile.fileName ? csvFile.fileName : \"csvFile\");\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processImportMaterials(_response));\r\n });\r\n }\r\n\r\n protected processImportMaterials(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ImportMaterialsRow.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n importMaterialAliases(file: FileParameter | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material/import-aliases\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (file !== null && file !== undefined)\r\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processImportMaterialAliases(_response));\r\n });\r\n }\r\n\r\n protected processImportMaterialAliases(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(MaterialAlias.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IMaterialProfileService {\r\n get(): Promise;\r\n}\r\n\r\nexport class MaterialProfileService extends BaseService implements IMaterialProfileService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material-profiles\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(MaterialProfile.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IMaterialSchedulesService {\r\n get(): Promise;\r\n create(): Promise;\r\n}\r\n\r\nexport class MaterialSchedulesService extends BaseService implements IMaterialSchedulesService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material-schedules\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(Material.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n create( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material-schedules\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreate(_response));\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IMaterialTypeService {\r\n get(): Promise;\r\n}\r\n\r\nexport class MaterialTypeService extends BaseService implements IMaterialTypeService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/material-types\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(MaterialType.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IOidcConfigurationService {\r\n getClientRequestParameters(clientId: string | null): Promise;\r\n}\r\n\r\nexport class OidcConfigurationService extends BaseService implements IOidcConfigurationService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getClientRequestParameters(clientId: string | null , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/_configuration/{clientId}\";\r\n if (clientId === undefined || clientId === null)\r\n throw new Error(\"The parameter 'clientId' must be defined.\");\r\n url_ = url_.replace(\"{clientId}\", encodeURIComponent(\"\" + clientId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetClientRequestParameters(_response));\r\n });\r\n }\r\n\r\n protected processGetClientRequestParameters(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IProjectAssemblyService {\r\n getAssemblies(projectId: string): Promise;\r\n getAssembly(assemblyId: string, projectId: string): Promise;\r\n}\r\n\r\nexport class ProjectAssemblyService extends BaseService implements IProjectAssemblyService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getAssemblies(projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/assemblies\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetAssemblies(_response));\r\n });\r\n }\r\n\r\n protected processGetAssemblies(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ProjectAssembly.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getAssembly(assemblyId: string, projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/assemblies/{assemblyId}\";\r\n if (assemblyId === undefined || assemblyId === null)\r\n throw new Error(\"The parameter 'assemblyId' must be defined.\");\r\n url_ = url_.replace(\"{assemblyId}\", encodeURIComponent(\"\" + assemblyId));\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetAssembly(_response));\r\n });\r\n }\r\n\r\n protected processGetAssembly(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ProjectAssembly.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IProjectDefaultDirectoriesService {\r\n getDefaultDirectories(): Promise;\r\n updateDefaultDirectory(id: string | undefined, name: string | null | undefined): Promise;\r\n createDefaultDirectory(name: string | null | undefined): Promise;\r\n deleteDefaultDirectory(directoryId: string | undefined): Promise;\r\n setFabricationDrawingDirectory(directoryId: string | undefined): Promise;\r\n}\r\n\r\nexport class ProjectDefaultDirectoriesService extends BaseService implements IProjectDefaultDirectoriesService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getDefaultDirectories( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/settings/projects/default-directories\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetDefaultDirectories(_response));\r\n });\r\n }\r\n\r\n protected processGetDefaultDirectories(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DefaultDirectoryResult.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateDefaultDirectory(id: string | undefined, name: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/settings/projects/default-directories?\";\r\n if (id === null)\r\n throw new Error(\"The parameter 'id' cannot be null.\");\r\n else if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\";\r\n if (name !== undefined && name !== null)\r\n url_ += \"Name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateDefaultDirectory(_response));\r\n });\r\n }\r\n\r\n protected processUpdateDefaultDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createDefaultDirectory(name: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/settings/projects/default-directories?\";\r\n if (name !== undefined && name !== null)\r\n url_ += \"Name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateDefaultDirectory(_response));\r\n });\r\n }\r\n\r\n protected processCreateDefaultDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n deleteDefaultDirectory(directoryId: string | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/settings/projects/default-directories?\";\r\n if (directoryId === null)\r\n throw new Error(\"The parameter 'directoryId' cannot be null.\");\r\n else if (directoryId !== undefined)\r\n url_ += \"directoryId=\" + encodeURIComponent(\"\" + directoryId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDeleteDefaultDirectory(_response));\r\n });\r\n }\r\n\r\n protected processDeleteDefaultDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n setFabricationDrawingDirectory(directoryId: string | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/settings/projects/default-directories/set-fabrication-directory?\";\r\n if (directoryId === null)\r\n throw new Error(\"The parameter 'directoryId' cannot be null.\");\r\n else if (directoryId !== undefined)\r\n url_ += \"directoryId=\" + encodeURIComponent(\"\" + directoryId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processSetFabricationDrawingDirectory(_response));\r\n });\r\n }\r\n\r\n protected processSetFabricationDrawingDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IProjectFileDirectoriesService {\r\n deleteDirectory(directoryId: string | undefined, projectId: string): Promise;\r\n getDirectories(projectId: string): Promise;\r\n createDirectory(projectId: string, parentDirectoryId: string | null | undefined, name: string | null | undefined): Promise;\r\n setCurrentFabricationDrawingDirectory(projectId: string, directoryId: string | undefined): Promise;\r\n}\r\n\r\nexport class ProjectFileDirectoriesService extends BaseService implements IProjectFileDirectoriesService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n deleteDirectory(directoryId: string | undefined, projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/directories?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (directoryId === null)\r\n throw new Error(\"The parameter 'directoryId' cannot be null.\");\r\n else if (directoryId !== undefined)\r\n url_ += \"directoryId=\" + encodeURIComponent(\"\" + directoryId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDeleteDirectory(_response));\r\n });\r\n }\r\n\r\n protected processDeleteDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n return Promise.resolve(null);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getDirectories(projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/directories\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetDirectories(_response));\r\n });\r\n }\r\n\r\n protected processGetDirectories(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetDirectoriesResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createDirectory(projectId: string, parentDirectoryId: string | null | undefined, name: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/directories?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (parentDirectoryId !== undefined && parentDirectoryId !== null)\r\n url_ += \"parentDirectoryId=\" + encodeURIComponent(\"\" + parentDirectoryId) + \"&\";\r\n if (name !== undefined && name !== null)\r\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateDirectory(_response));\r\n });\r\n }\r\n\r\n protected processCreateDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = CreateDirectoryResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n setCurrentFabricationDrawingDirectory(projectId: string, directoryId: string | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/directories/set-fabrication-directory?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (directoryId === null)\r\n throw new Error(\"The parameter 'directoryId' cannot be null.\");\r\n else if (directoryId !== undefined)\r\n url_ += \"directoryId=\" + encodeURIComponent(\"\" + directoryId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processSetCurrentFabricationDrawingDirectory(_response));\r\n });\r\n }\r\n\r\n protected processSetCurrentFabricationDrawingDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IProjectFilesService {\r\n download(fileId: string, projectId: string): Promise;\r\n open(fileId: string, projectId: string): Promise;\r\n deleteFiles(projectId: string, request: DeleteFilesReqeuest): Promise;\r\n getFiles(projectId: string, directoryId: string | null | undefined): Promise;\r\n uploadFile(projectId: string, directoryId: string | null | undefined, extractZip: boolean | undefined, file: FileParameter | null | undefined): Promise;\r\n createDirectory(projectId: string, parentDirectoryId: string | null | undefined, name: string | null | undefined): Promise;\r\n move(projectId: string, request: MoveFilesRequest): Promise;\r\n}\r\n\r\nexport class ProjectFilesService extends BaseService implements IProjectFilesService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n download(fileId: string, projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/download/{fileId}\";\r\n if (fileId === undefined || fileId === null)\r\n throw new Error(\"The parameter 'fileId' must be defined.\");\r\n url_ = url_.replace(\"{fileId}\", encodeURIComponent(\"\" + fileId));\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDownload(_response));\r\n });\r\n }\r\n\r\n protected processDownload(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n open(fileId: string, projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/{fileId}\";\r\n if (fileId === undefined || fileId === null)\r\n throw new Error(\"The parameter 'fileId' must be defined.\");\r\n url_ = url_.replace(\"{fileId}\", encodeURIComponent(\"\" + fileId));\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processOpen(_response));\r\n });\r\n }\r\n\r\n protected processOpen(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n deleteFiles(projectId: string, request: DeleteFilesReqeuest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/delete\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n responseType: \"blob\",\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDeleteFiles(_response));\r\n });\r\n }\r\n\r\n protected processDeleteFiles(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getFiles(projectId: string, directoryId: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (directoryId !== undefined && directoryId !== null)\r\n url_ += \"directoryId=\" + encodeURIComponent(\"\" + directoryId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetFiles(_response));\r\n });\r\n }\r\n\r\n protected processGetFiles(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ProjectFile.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n uploadFile(projectId: string, directoryId: string | null | undefined, extractZip: boolean | undefined, file: FileParameter | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (directoryId !== undefined && directoryId !== null)\r\n url_ += \"directoryId=\" + encodeURIComponent(\"\" + directoryId) + \"&\";\r\n if (extractZip === null)\r\n throw new Error(\"The parameter 'extractZip' cannot be null.\");\r\n else if (extractZip !== undefined)\r\n url_ += \"extractZip=\" + encodeURIComponent(\"\" + extractZip) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (file !== null && file !== undefined)\r\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUploadFile(_response));\r\n });\r\n }\r\n\r\n protected processUploadFile(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createDirectory(projectId: string, parentDirectoryId: string | null | undefined, name: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/directory?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (parentDirectoryId !== undefined && parentDirectoryId !== null)\r\n url_ += \"parentDirectoryId=\" + encodeURIComponent(\"\" + parentDirectoryId) + \"&\";\r\n if (name !== undefined && name !== null)\r\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateDirectory(_response));\r\n });\r\n }\r\n\r\n protected processCreateDirectory(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n move(projectId: string, request: MoveFilesRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/files/move\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processMove(_response));\r\n });\r\n }\r\n\r\n protected processMove(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IProjectPartsService {\r\n import(projectId: string, file: FileParameter | null | undefined): Promise;\r\n getParts(projectId: string): Promise;\r\n importAssemblies(projectId: string, file: FileParameter | null | undefined): Promise;\r\n importAssemblyParts(projectId: string, file: FileParameter | null | undefined): Promise;\r\n}\r\n\r\nexport class ProjectPartsService extends BaseService implements IProjectPartsService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n import(projectId: string, file: FileParameter | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/parts/import\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (file !== null && file !== undefined)\r\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processImport(_response));\r\n });\r\n }\r\n\r\n protected processImport(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ProjectPart.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getParts(projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/parts\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetParts(_response));\r\n });\r\n }\r\n\r\n protected processGetParts(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ProjectPart.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n importAssemblies(projectId: string, file: FileParameter | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/parts/import-assemblies\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (file !== null && file !== undefined)\r\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processImportAssemblies(_response));\r\n });\r\n }\r\n\r\n protected processImportAssemblies(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ProjectAssembly.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n importAssemblyParts(projectId: string, file: FileParameter | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/parts/import-assembly-parts\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (file !== null && file !== undefined)\r\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processImportAssemblyParts(_response));\r\n });\r\n }\r\n\r\n protected processImportAssemblyParts(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(item);\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IProjectsService {\r\n getProject(projectId: string): Promise;\r\n editProject(projectId: string, request: EditProjectCommand): Promise;\r\n getProjects(search: string | null | undefined): Promise;\r\n createProject(request: CreateProjectCommand): Promise;\r\n getStatuses(): Promise;\r\n updateStatus(projectId: string, request: UpdateProjectStatusRequest): Promise;\r\n updateAssignedUser(projectId: string, userId: string | undefined): Promise;\r\n}\r\n\r\nexport class ProjectsService extends BaseService implements IProjectsService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getProject(projectId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetProject(_response));\r\n });\r\n }\r\n\r\n protected processGetProject(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetProjectResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n editProject(projectId: string, request: EditProjectCommand , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processEditProject(_response));\r\n });\r\n }\r\n\r\n protected processEditProject(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = EditProjectResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getProjects(search: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects?\";\r\n if (search !== undefined && search !== null)\r\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetProjects(_response));\r\n });\r\n }\r\n\r\n protected processGetProjects(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetProjectsResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createProject(request: CreateProjectCommand , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateProject(_response));\r\n });\r\n }\r\n\r\n protected processCreateProject(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = CreateProjectResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getStatuses( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/statuses\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetStatuses(_response));\r\n });\r\n }\r\n\r\n protected processGetStatuses(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ProjectStatus.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateStatus(projectId: string, request: UpdateProjectStatusRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/update-status\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateStatus(_response));\r\n });\r\n }\r\n\r\n protected processUpdateStatus(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateAssignedUser(projectId: string, userId: string | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/projects/{projectId}/update-assigned-user?\";\r\n if (projectId === undefined || projectId === null)\r\n throw new Error(\"The parameter 'projectId' must be defined.\");\r\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\r\n if (userId === null)\r\n throw new Error(\"The parameter 'userId' cannot be null.\");\r\n else if (userId !== undefined)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateAssignedUser(_response));\r\n });\r\n }\r\n\r\n protected processUpdateAssignedUser(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IServicesService {\r\n get(): Promise;\r\n}\r\n\r\nexport class ServicesService extends BaseService implements IServicesService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/services\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IStockService {\r\n get(materialId: string | null | undefined, stockLocationId: string | null | undefined, materialProfileId: string | null | undefined, materialTypeId: string | null | undefined): Promise;\r\n post(stockItem: AddStockDto): Promise;\r\n getById(id: string): Promise;\r\n pull(stockId: string | undefined, qty: number | undefined): Promise;\r\n}\r\n\r\nexport class StockService extends BaseService implements IStockService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get(materialId: string | null | undefined, stockLocationId: string | null | undefined, materialProfileId: string | null | undefined, materialTypeId: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock?\";\r\n if (materialId !== undefined && materialId !== null)\r\n url_ += \"materialId=\" + encodeURIComponent(\"\" + materialId) + \"&\";\r\n if (stockLocationId !== undefined && stockLocationId !== null)\r\n url_ += \"stockLocationId=\" + encodeURIComponent(\"\" + stockLocationId) + \"&\";\r\n if (materialProfileId !== undefined && materialProfileId !== null)\r\n url_ += \"materialProfileId=\" + encodeURIComponent(\"\" + materialProfileId) + \"&\";\r\n if (materialTypeId !== undefined && materialTypeId !== null)\r\n url_ += \"materialTypeId=\" + encodeURIComponent(\"\" + materialTypeId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(StockResult.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n post(stockItem: AddStockDto , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(stockItem);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processPost(_response));\r\n });\r\n }\r\n\r\n protected processPost(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n return Promise.resolve(null);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getById(id: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetById(_response));\r\n });\r\n }\r\n\r\n protected processGetById(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = StockResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n pull(stockId: string | undefined, qty: number | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock/pull?\";\r\n if (stockId === null)\r\n throw new Error(\"The parameter 'stockId' cannot be null.\");\r\n else if (stockId !== undefined)\r\n url_ += \"stockId=\" + encodeURIComponent(\"\" + stockId) + \"&\";\r\n if (qty === null)\r\n throw new Error(\"The parameter 'qty' cannot be null.\");\r\n else if (qty !== undefined)\r\n url_ += \"qty=\" + encodeURIComponent(\"\" + qty) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processPull(_response));\r\n });\r\n }\r\n\r\n protected processPull(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n return Promise.resolve(null);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IStockLocationService {\r\n get(): Promise;\r\n createStockLocation(request: CreateStockLocationRequest): Promise;\r\n updateStockLocation(id: string, request: UpdateStockLocationRequest): Promise;\r\n deleteStockLocation(id: string): Promise;\r\n}\r\n\r\nexport class StockLocationService extends BaseService implements IStockLocationService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock-locations\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(StockLocation.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createStockLocation(request: CreateStockLocationRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock-locations\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateStockLocation(_response));\r\n });\r\n }\r\n\r\n protected processCreateStockLocation(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateStockLocation(id: string, request: UpdateStockLocationRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock-locations/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n responseType: \"blob\",\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateStockLocation(_response));\r\n });\r\n }\r\n\r\n protected processUpdateStockLocation(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n deleteStockLocation(id: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/stock-locations/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDeleteStockLocation(_response));\r\n });\r\n }\r\n\r\n protected processDeleteStockLocation(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = StockLocation.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface ISuppliersService {\r\n get(): Promise;\r\n}\r\n\r\nexport class SuppliersService extends BaseService implements ISuppliersService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/suppliers\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(Supplier.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface ISurfaceFinishService {\r\n get(): Promise;\r\n create(code: string | null | undefined, name: string | null | undefined, colours: Colour[] | null | undefined, isColoured: boolean | undefined): Promise;\r\n createColour(id: string, name: string | null | undefined): Promise;\r\n update(id: string, name: string | null | undefined, code: string | null | undefined): Promise;\r\n delete(id: string): Promise;\r\n updateColour(id: string, name: string | null | undefined): Promise;\r\n deleteColour(id: string): Promise;\r\n}\r\n\r\nexport class SurfaceFinishService extends BaseService implements ISurfaceFinishService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(SurfaceFinish.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n create(code: string | null | undefined, name: string | null | undefined, colours: Colour[] | null | undefined, isColoured: boolean | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes?\";\r\n if (code !== undefined && code !== null)\r\n url_ += \"Code=\" + encodeURIComponent(\"\" + code) + \"&\";\r\n if (name !== undefined && name !== null)\r\n url_ += \"Name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n if (colours !== undefined && colours !== null)\r\n colours && colours.forEach((item, index) => {\r\n for (let attr in item)\r\n \t\t\tif (item.hasOwnProperty(attr)) {\r\n \t\t\t\turl_ += \"Colours[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item)[attr]) + \"&\";\r\n \t\t\t}\r\n });\r\n if (isColoured === null)\r\n throw new Error(\"The parameter 'isColoured' cannot be null.\");\r\n else if (isColoured !== undefined)\r\n url_ += \"IsColoured=\" + encodeURIComponent(\"\" + isColoured) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreate(_response));\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createColour(id: string, name: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes/{id}/colour?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (name !== undefined && name !== null)\r\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateColour(_response));\r\n });\r\n }\r\n\r\n protected processCreateColour(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n update(id: string, name: string | null | undefined, code: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes/{id}?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (name !== undefined && name !== null)\r\n url_ += \"Name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n if (code !== undefined && code !== null)\r\n url_ += \"Code=\" + encodeURIComponent(\"\" + code) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdate(_response));\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n delete(id: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDelete(_response));\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateColour(id: string, name: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes/colour/{id}?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (name !== undefined && name !== null)\r\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateColour(_response));\r\n });\r\n }\r\n\r\n protected processUpdateColour(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n deleteColour(id: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/surface-finishes/colour/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDeleteColour(_response));\r\n });\r\n }\r\n\r\n protected processDeleteColour(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface ITasksService {\r\n getTasks(projectId: string | null | undefined): Promise;\r\n createTask(request: CreateTaskCommand): Promise;\r\n getTaskStatuses(): Promise;\r\n}\r\n\r\nexport class TasksService extends BaseService implements ITasksService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getTasks(projectId: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/tasks?\";\r\n if (projectId !== undefined && projectId !== null)\r\n url_ += \"projectId=\" + encodeURIComponent(\"\" + projectId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetTasks(_response));\r\n });\r\n }\r\n\r\n protected processGetTasks(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetTasksResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createTask(request: CreateTaskCommand , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/tasks\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateTask(_response));\r\n });\r\n }\r\n\r\n protected processCreateTask(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = CreateTaskCommandResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getTaskStatuses( cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/tasks/statuses\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetTaskStatuses(_response));\r\n });\r\n }\r\n\r\n protected processGetTaskStatuses(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetTaskStatusesResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface ITenantService {\r\n createTenant(request: CreateTenantRequest): Promise;\r\n}\r\n\r\nexport class TenantService extends BaseService implements ITenantService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n createTenant(request: CreateTenantRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/tenants\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateTenant(_response));\r\n });\r\n }\r\n\r\n protected processCreateTenant(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = CreateTenantResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IUserService {\r\n getUser(userId: string): Promise;\r\n updateUser(userId: string, request: UpdateUserRequest): Promise;\r\n disableUser(userId: string): Promise;\r\n getUsers(isActiveOnly: boolean | undefined): Promise;\r\n enableUser(userId: string): Promise;\r\n inviteUser(request: InviteUserRequest): Promise;\r\n}\r\n\r\nexport class UserService extends BaseService implements IUserService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getUser(userId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{userId}\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetUser(_response));\r\n });\r\n }\r\n\r\n protected processGetUser(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetUserResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateUser(userId: string, request: UpdateUserRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{userId}\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateUser(_response));\r\n });\r\n }\r\n\r\n protected processUpdateUser(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UpdateUserResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n disableUser(userId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{userId}\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDisableUser(_response));\r\n });\r\n }\r\n\r\n protected processDisableUser(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getUsers(isActiveOnly: boolean | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users?\";\r\n if (isActiveOnly === null)\r\n throw new Error(\"The parameter 'isActiveOnly' cannot be null.\");\r\n else if (isActiveOnly !== undefined)\r\n url_ += \"isActiveOnly=\" + encodeURIComponent(\"\" + isActiveOnly) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetUsers(_response));\r\n });\r\n }\r\n\r\n protected processGetUsers(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetUsersResult.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n enableUser(userId: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users/{userId}/enable\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n responseType: \"blob\",\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processEnableUser(_response));\r\n });\r\n }\r\n\r\n protected processEnableUser(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n inviteUser(request: InviteUserRequest , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/users/invite\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processInviteUser(_response));\r\n });\r\n }\r\n\r\n protected processInviteUser(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = InviteUserResponse.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IWorkLogService {\r\n getWorkLogEntries(projectId: string | null | undefined): Promise;\r\n createWorkLogEntry(files: FileParameter[] | null | undefined, projectId: string | undefined, userIds: string[] | null | undefined, date: Date | undefined, startTime: string | undefined, endTime: string | undefined, details: string | null | undefined): Promise;\r\n getWorkDiaryEntry(id: string): Promise;\r\n updateWorkDiaryEntry(id: string, files: FileParameter[] | null | undefined, projectId: string | undefined, userIds: string[] | null | undefined, date: Date | undefined, startTime: string | undefined, endTime: string | undefined, details: string | null | undefined): Promise;\r\n}\r\n\r\nexport class WorkLogService extends BaseService implements IWorkLogService {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(configuration: ServiceConfiguration, baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super(configuration);\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getWorkLogEntries(projectId: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/worklog?\";\r\n if (projectId !== undefined && projectId !== null)\r\n url_ += \"projectId=\" + encodeURIComponent(\"\" + projectId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetWorkLogEntries(_response));\r\n });\r\n }\r\n\r\n protected processGetWorkLogEntries(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(WorkLogEntrySummary.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n createWorkLogEntry(files: FileParameter[] | null | undefined, projectId: string | undefined, userIds: string[] | null | undefined, date: Date | undefined, startTime: string | undefined, endTime: string | undefined, details: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/worklog?\";\r\n if (files !== undefined && files !== null)\r\n files && files.forEach(item => { url_ += \"files=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (projectId === null || projectId === undefined)\r\n throw new Error(\"The parameter 'projectId' cannot be null.\");\r\n else\r\n content_.append(\"ProjectId\", projectId.toString());\r\n if (userIds !== null && userIds !== undefined)\r\n userIds.forEach(item_ => content_.append(\"UserIds\", item_.toString()));\r\n if (date === null || date === undefined)\r\n throw new Error(\"The parameter 'date' cannot be null.\");\r\n else\r\n content_.append(\"Date\", date.toJSON());\r\n if (startTime === null || startTime === undefined)\r\n throw new Error(\"The parameter 'startTime' cannot be null.\");\r\n else\r\n content_.append(\"StartTime\", startTime.toString());\r\n if (endTime === null || endTime === undefined)\r\n throw new Error(\"The parameter 'endTime' cannot be null.\");\r\n else\r\n content_.append(\"EndTime\", endTime.toString());\r\n if (details !== null && details !== undefined)\r\n content_.append(\"Details\", details.toString());\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processCreateWorkLogEntry(_response));\r\n });\r\n }\r\n\r\n protected processCreateWorkLogEntry(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = CreateWorkLogEntryResponse.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getWorkDiaryEntry(id: string , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/worklog/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processGetWorkDiaryEntry(_response));\r\n });\r\n }\r\n\r\n protected processGetWorkDiaryEntry(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = GetWorkDiaryEntryResponse.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n updateWorkDiaryEntry(id: string, files: FileParameter[] | null | undefined, projectId: string | undefined, userIds: string[] | null | undefined, date: Date | undefined, startTime: string | undefined, endTime: string | undefined, details: string | null | undefined , cancelToken?: CancelToken | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/worklog/{id}?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (files !== undefined && files !== null)\r\n files && files.forEach(item => { url_ += \"files=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (projectId === null || projectId === undefined)\r\n throw new Error(\"The parameter 'projectId' cannot be null.\");\r\n else\r\n content_.append(\"ProjectId\", projectId.toString());\r\n if (userIds !== null && userIds !== undefined)\r\n userIds.forEach(item_ => content_.append(\"UserIds\", item_.toString()));\r\n if (date === null || date === undefined)\r\n throw new Error(\"The parameter 'date' cannot be null.\");\r\n else\r\n content_.append(\"Date\", date.toJSON());\r\n if (startTime === null || startTime === undefined)\r\n throw new Error(\"The parameter 'startTime' cannot be null.\");\r\n else\r\n content_.append(\"StartTime\", startTime.toString());\r\n if (endTime === null || endTime === undefined)\r\n throw new Error(\"The parameter 'endTime' cannot be null.\");\r\n else\r\n content_.append(\"EndTime\", endTime.toString());\r\n if (details !== null && details !== undefined)\r\n content_.append(\"Details\", details.toString());\r\n\r\n let options_ = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateWorkDiaryEntry(_response));\r\n });\r\n }\r\n\r\n protected processUpdateWorkDiaryEntry(response: AxiosResponse): Promise {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UpdateWorkDiaryEntryResponse.fromJS(resultData200);\r\n return Promise.resolve(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport class GetContactsResponse implements IGetContactsResponse {\r\n contacts?: ContactSummary[] | undefined;\r\n\r\n constructor(data?: IGetContactsResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"contacts\"])) {\r\n this.contacts = [] as any;\r\n for (let item of _data[\"contacts\"])\r\n this.contacts!.push(ContactSummary.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetContactsResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetContactsResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.contacts)) {\r\n data[\"contacts\"] = [];\r\n for (let item of this.contacts)\r\n data[\"contacts\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetContactsResponse {\r\n contacts?: ContactSummary[] | undefined;\r\n}\r\n\r\nexport class ContactSummary implements IContactSummary {\r\n id?: string;\r\n name?: string | undefined;\r\n\r\n constructor(data?: IContactSummary) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ContactSummary {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ContactSummary();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContactSummary {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class CreateContactResponse implements ICreateContactResponse {\r\n contact?: Contact | undefined;\r\n\r\n constructor(data?: ICreateContactResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateContactResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateContactResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateContactResponse {\r\n contact?: Contact | undefined;\r\n}\r\n\r\nexport class Contact implements IContact {\r\n id?: string;\r\n isCustomer?: boolean;\r\n isSupplier?: boolean;\r\n name?: string | undefined;\r\n businessNumber?: string | undefined;\r\n taxNumber?: string | undefined;\r\n emailAddress?: string | undefined;\r\n addresses?: ContactAddress[] | undefined;\r\n phoneNumbers?: ContactPhoneNumber[] | undefined;\r\n contacts?: ContactPerson[] | undefined;\r\n xeroContactId?: string | undefined;\r\n\r\n constructor(data?: IContact) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.isCustomer = _data[\"isCustomer\"];\r\n this.isSupplier = _data[\"isSupplier\"];\r\n this.name = _data[\"name\"];\r\n this.businessNumber = _data[\"businessNumber\"];\r\n this.taxNumber = _data[\"taxNumber\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n if (Array.isArray(_data[\"addresses\"])) {\r\n this.addresses = [] as any;\r\n for (let item of _data[\"addresses\"])\r\n this.addresses!.push(ContactAddress.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"phoneNumbers\"])) {\r\n this.phoneNumbers = [] as any;\r\n for (let item of _data[\"phoneNumbers\"])\r\n this.phoneNumbers!.push(ContactPhoneNumber.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"contacts\"])) {\r\n this.contacts = [] as any;\r\n for (let item of _data[\"contacts\"])\r\n this.contacts!.push(ContactPerson.fromJS(item));\r\n }\r\n this.xeroContactId = _data[\"xeroContactId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Contact {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Contact();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"isCustomer\"] = this.isCustomer;\r\n data[\"isSupplier\"] = this.isSupplier;\r\n data[\"name\"] = this.name;\r\n data[\"businessNumber\"] = this.businessNumber;\r\n data[\"taxNumber\"] = this.taxNumber;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n if (Array.isArray(this.addresses)) {\r\n data[\"addresses\"] = [];\r\n for (let item of this.addresses)\r\n data[\"addresses\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.phoneNumbers)) {\r\n data[\"phoneNumbers\"] = [];\r\n for (let item of this.phoneNumbers)\r\n data[\"phoneNumbers\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.contacts)) {\r\n data[\"contacts\"] = [];\r\n for (let item of this.contacts)\r\n data[\"contacts\"].push(item.toJSON());\r\n }\r\n data[\"xeroContactId\"] = this.xeroContactId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContact {\r\n id?: string;\r\n isCustomer?: boolean;\r\n isSupplier?: boolean;\r\n name?: string | undefined;\r\n businessNumber?: string | undefined;\r\n taxNumber?: string | undefined;\r\n emailAddress?: string | undefined;\r\n addresses?: ContactAddress[] | undefined;\r\n phoneNumbers?: ContactPhoneNumber[] | undefined;\r\n contacts?: ContactPerson[] | undefined;\r\n xeroContactId?: string | undefined;\r\n}\r\n\r\nexport class ContactAddress implements IContactAddress {\r\n id?: string;\r\n contactId?: string;\r\n contact?: Contact | undefined;\r\n addressId?: string;\r\n address?: Address | undefined;\r\n\r\n constructor(data?: IContactAddress) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.contactId = _data[\"contactId\"];\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n this.addressId = _data[\"addressId\"];\r\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): ContactAddress {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ContactAddress();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"contactId\"] = this.contactId;\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n data[\"addressId\"] = this.addressId;\r\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContactAddress {\r\n id?: string;\r\n contactId?: string;\r\n contact?: Contact | undefined;\r\n addressId?: string;\r\n address?: Address | undefined;\r\n}\r\n\r\nexport class Address implements IAddress {\r\n id?: string;\r\n line1?: string | undefined;\r\n line2?: string | undefined;\r\n suburb?: string | undefined;\r\n state?: string | undefined;\r\n postCode?: string | undefined;\r\n country?: string | undefined;\r\n googlePlaceId?: string | undefined;\r\n\r\n constructor(data?: IAddress) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.line1 = _data[\"line1\"];\r\n this.line2 = _data[\"line2\"];\r\n this.suburb = _data[\"suburb\"];\r\n this.state = _data[\"state\"];\r\n this.postCode = _data[\"postCode\"];\r\n this.country = _data[\"country\"];\r\n this.googlePlaceId = _data[\"googlePlaceId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Address {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Address();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"line1\"] = this.line1;\r\n data[\"line2\"] = this.line2;\r\n data[\"suburb\"] = this.suburb;\r\n data[\"state\"] = this.state;\r\n data[\"postCode\"] = this.postCode;\r\n data[\"country\"] = this.country;\r\n data[\"googlePlaceId\"] = this.googlePlaceId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAddress {\r\n id?: string;\r\n line1?: string | undefined;\r\n line2?: string | undefined;\r\n suburb?: string | undefined;\r\n state?: string | undefined;\r\n postCode?: string | undefined;\r\n country?: string | undefined;\r\n googlePlaceId?: string | undefined;\r\n}\r\n\r\nexport class ContactPhoneNumber implements IContactPhoneNumber {\r\n id?: string;\r\n contactId?: string;\r\n contact?: Contact | undefined;\r\n phoneNumber?: string | undefined;\r\n areaCode?: string | undefined;\r\n countryCode?: string | undefined;\r\n\r\n constructor(data?: IContactPhoneNumber) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.contactId = _data[\"contactId\"];\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.areaCode = _data[\"areaCode\"];\r\n this.countryCode = _data[\"countryCode\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ContactPhoneNumber {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ContactPhoneNumber();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"contactId\"] = this.contactId;\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"areaCode\"] = this.areaCode;\r\n data[\"countryCode\"] = this.countryCode;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContactPhoneNumber {\r\n id?: string;\r\n contactId?: string;\r\n contact?: Contact | undefined;\r\n phoneNumber?: string | undefined;\r\n areaCode?: string | undefined;\r\n countryCode?: string | undefined;\r\n}\r\n\r\nexport class ContactPerson implements IContactPerson {\r\n id?: string;\r\n contactId?: string;\r\n contact?: Contact | undefined;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n position?: string | undefined;\r\n isMainContactPerson?: boolean;\r\n\r\n constructor(data?: IContactPerson) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.contactId = _data[\"contactId\"];\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.position = _data[\"position\"];\r\n this.isMainContactPerson = _data[\"isMainContactPerson\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ContactPerson {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ContactPerson();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"contactId\"] = this.contactId;\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"position\"] = this.position;\r\n data[\"isMainContactPerson\"] = this.isMainContactPerson;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContactPerson {\r\n id?: string;\r\n contactId?: string;\r\n contact?: Contact | undefined;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n position?: string | undefined;\r\n isMainContactPerson?: boolean;\r\n}\r\n\r\nexport class CreateContactCommand implements ICreateContactCommand {\r\n name?: string | undefined;\r\n businessNumber?: string | undefined;\r\n taxNumber?: string | undefined;\r\n emailAddress?: string | undefined;\r\n isCustomer?: boolean;\r\n isSupplier?: boolean;\r\n\r\n constructor(data?: ICreateContactCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.businessNumber = _data[\"businessNumber\"];\r\n this.taxNumber = _data[\"taxNumber\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n this.isCustomer = _data[\"isCustomer\"];\r\n this.isSupplier = _data[\"isSupplier\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateContactCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateContactCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"businessNumber\"] = this.businessNumber;\r\n data[\"taxNumber\"] = this.taxNumber;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"isCustomer\"] = this.isCustomer;\r\n data[\"isSupplier\"] = this.isSupplier;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateContactCommand {\r\n name?: string | undefined;\r\n businessNumber?: string | undefined;\r\n taxNumber?: string | undefined;\r\n emailAddress?: string | undefined;\r\n isCustomer?: boolean;\r\n isSupplier?: boolean;\r\n}\r\n\r\nexport class GetContactResponse implements IGetContactResponse {\r\n contact?: Contact | undefined;\r\n\r\n constructor(data?: IGetContactResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetContactResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetContactResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetContactResponse {\r\n contact?: Contact | undefined;\r\n}\r\n\r\n/** A machine-readable format for specifying errors in HTTP API responses based on https://tools.ietf.org/html/rfc7807. */\r\nexport class ProblemDetails implements IProblemDetails {\r\n /** A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when\r\ndereferenced, it provide human-readable documentation for the problem type\r\n(e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be\r\n\"about:blank\". */\r\n type?: string | undefined;\r\n /** A short, human-readable summary of the problem type.It SHOULD NOT change from occurrence to occurrence\r\nof the problem, except for purposes of localization(e.g., using proactive content negotiation;\r\nsee[RFC7231], Section 3.4). */\r\n title?: string | undefined;\r\n /** The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem. */\r\n status?: number | undefined;\r\n /** A human-readable explanation specific to this occurrence of the problem. */\r\n detail?: string | undefined;\r\n /** A URI reference that identifies the specific occurrence of the problem.It may or may not yield further information if dereferenced. */\r\n instance?: string | undefined;\r\n\r\n constructor(data?: IProblemDetails) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.type = _data[\"type\"];\r\n this.title = _data[\"title\"];\r\n this.status = _data[\"status\"];\r\n this.detail = _data[\"detail\"];\r\n this.instance = _data[\"instance\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProblemDetails {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProblemDetails();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"type\"] = this.type;\r\n data[\"title\"] = this.title;\r\n data[\"status\"] = this.status;\r\n data[\"detail\"] = this.detail;\r\n data[\"instance\"] = this.instance;\r\n return data;\r\n }\r\n}\r\n\r\n/** A machine-readable format for specifying errors in HTTP API responses based on https://tools.ietf.org/html/rfc7807. */\r\nexport interface IProblemDetails {\r\n /** A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when\r\ndereferenced, it provide human-readable documentation for the problem type\r\n(e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be\r\n\"about:blank\". */\r\n type?: string | undefined;\r\n /** A short, human-readable summary of the problem type.It SHOULD NOT change from occurrence to occurrence\r\nof the problem, except for purposes of localization(e.g., using proactive content negotiation;\r\nsee[RFC7231], Section 3.4). */\r\n title?: string | undefined;\r\n /** The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem. */\r\n status?: number | undefined;\r\n /** A human-readable explanation specific to this occurrence of the problem. */\r\n detail?: string | undefined;\r\n /** A URI reference that identifies the specific occurrence of the problem.It may or may not yield further information if dereferenced. */\r\n instance?: string | undefined;\r\n}\r\n\r\nexport class Material implements IMaterial {\r\n id?: string;\r\n materialProfileId?: string;\r\n materialProfile?: MaterialProfile | undefined;\r\n materialTypeId?: string;\r\n materialType?: MaterialType | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n weight?: number;\r\n isPlate?: boolean;\r\n thickness?: number | undefined;\r\n\r\n constructor(data?: IMaterial) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.materialProfileId = _data[\"materialProfileId\"];\r\n this.materialProfile = _data[\"materialProfile\"] ? MaterialProfile.fromJS(_data[\"materialProfile\"]) : undefined;\r\n this.materialTypeId = _data[\"materialTypeId\"];\r\n this.materialType = _data[\"materialType\"] ? MaterialType.fromJS(_data[\"materialType\"]) : undefined;\r\n this.code = _data[\"code\"];\r\n this.name = _data[\"name\"];\r\n this.weight = _data[\"weight\"];\r\n this.isPlate = _data[\"isPlate\"];\r\n this.thickness = _data[\"thickness\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Material {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Material();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"materialProfileId\"] = this.materialProfileId;\r\n data[\"materialProfile\"] = this.materialProfile ? this.materialProfile.toJSON() : undefined;\r\n data[\"materialTypeId\"] = this.materialTypeId;\r\n data[\"materialType\"] = this.materialType ? this.materialType.toJSON() : undefined;\r\n data[\"code\"] = this.code;\r\n data[\"name\"] = this.name;\r\n data[\"weight\"] = this.weight;\r\n data[\"isPlate\"] = this.isPlate;\r\n data[\"thickness\"] = this.thickness;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMaterial {\r\n id?: string;\r\n materialProfileId?: string;\r\n materialProfile?: MaterialProfile | undefined;\r\n materialTypeId?: string;\r\n materialType?: MaterialType | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n weight?: number;\r\n isPlate?: boolean;\r\n thickness?: number | undefined;\r\n}\r\n\r\nexport class MaterialProfile implements IMaterialProfile {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n\r\n constructor(data?: IMaterialProfile) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.code = _data[\"code\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): MaterialProfile {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MaterialProfile();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"code\"] = this.code;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMaterialProfile {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class MaterialType implements IMaterialType {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n grades?: MaterialGrade[] | undefined;\r\n\r\n constructor(data?: IMaterialType) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.code = _data[\"code\"];\r\n this.name = _data[\"name\"];\r\n if (Array.isArray(_data[\"grades\"])) {\r\n this.grades = [] as any;\r\n for (let item of _data[\"grades\"])\r\n this.grades!.push(MaterialGrade.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): MaterialType {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MaterialType();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"code\"] = this.code;\r\n data[\"name\"] = this.name;\r\n if (Array.isArray(this.grades)) {\r\n data[\"grades\"] = [];\r\n for (let item of this.grades)\r\n data[\"grades\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMaterialType {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n grades?: MaterialGrade[] | undefined;\r\n}\r\n\r\nexport class MaterialGrade implements IMaterialGrade {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n typeId?: string;\r\n type?: MaterialType | undefined;\r\n\r\n constructor(data?: IMaterialGrade) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.code = _data[\"code\"];\r\n this.name = _data[\"name\"];\r\n this.typeId = _data[\"typeId\"];\r\n this.type = _data[\"type\"] ? MaterialType.fromJS(_data[\"type\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): MaterialGrade {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MaterialGrade();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"code\"] = this.code;\r\n data[\"name\"] = this.name;\r\n data[\"typeId\"] = this.typeId;\r\n data[\"type\"] = this.type ? this.type.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMaterialGrade {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n typeId?: string;\r\n type?: MaterialType | undefined;\r\n}\r\n\r\nexport class ImportMaterialsRow implements IImportMaterialsRow {\r\n material?: string | undefined;\r\n profileCode?: string | undefined;\r\n materialCode?: string | undefined;\r\n materialName?: string | undefined;\r\n weight?: number;\r\n isPlate?: boolean | undefined;\r\n plateThickness?: number | undefined;\r\n\r\n constructor(data?: IImportMaterialsRow) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.material = _data[\"material\"];\r\n this.profileCode = _data[\"profileCode\"];\r\n this.materialCode = _data[\"materialCode\"];\r\n this.materialName = _data[\"materialName\"];\r\n this.weight = _data[\"weight\"];\r\n this.isPlate = _data[\"isPlate\"];\r\n this.plateThickness = _data[\"plateThickness\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ImportMaterialsRow {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ImportMaterialsRow();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"material\"] = this.material;\r\n data[\"profileCode\"] = this.profileCode;\r\n data[\"materialCode\"] = this.materialCode;\r\n data[\"materialName\"] = this.materialName;\r\n data[\"weight\"] = this.weight;\r\n data[\"isPlate\"] = this.isPlate;\r\n data[\"plateThickness\"] = this.plateThickness;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IImportMaterialsRow {\r\n material?: string | undefined;\r\n profileCode?: string | undefined;\r\n materialCode?: string | undefined;\r\n materialName?: string | undefined;\r\n weight?: number;\r\n isPlate?: boolean | undefined;\r\n plateThickness?: number | undefined;\r\n}\r\n\r\nexport class MaterialAlias implements IMaterialAlias {\r\n id?: string;\r\n alias?: string | undefined;\r\n materialId?: string;\r\n material?: Material | undefined;\r\n\r\n constructor(data?: IMaterialAlias) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.alias = _data[\"alias\"];\r\n this.materialId = _data[\"materialId\"];\r\n this.material = _data[\"material\"] ? Material.fromJS(_data[\"material\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): MaterialAlias {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MaterialAlias();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"alias\"] = this.alias;\r\n data[\"materialId\"] = this.materialId;\r\n data[\"material\"] = this.material ? this.material.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMaterialAlias {\r\n id?: string;\r\n alias?: string | undefined;\r\n materialId?: string;\r\n material?: Material | undefined;\r\n}\r\n\r\nexport class ProjectAssembly implements IProjectAssembly {\r\n id?: string;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n mark?: string | undefined;\r\n qty?: number | undefined;\r\n parts?: AssemblyPartLine[] | undefined;\r\n surfaceFinishId?: string | undefined;\r\n surfaceFinish?: SurfaceFinish | undefined;\r\n mainPartMaterialId?: string | undefined;\r\n mainPartMaterial?: Material | undefined;\r\n length?: number | undefined;\r\n weight?: number | undefined;\r\n area?: number | undefined;\r\n\r\n constructor(data?: IProjectAssembly) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.project = _data[\"project\"] ? Project.fromJS(_data[\"project\"]) : undefined;\r\n this.mark = _data[\"mark\"];\r\n this.qty = _data[\"qty\"];\r\n if (Array.isArray(_data[\"parts\"])) {\r\n this.parts = [] as any;\r\n for (let item of _data[\"parts\"])\r\n this.parts!.push(AssemblyPartLine.fromJS(item));\r\n }\r\n this.surfaceFinishId = _data[\"surfaceFinishId\"];\r\n this.surfaceFinish = _data[\"surfaceFinish\"] ? SurfaceFinish.fromJS(_data[\"surfaceFinish\"]) : undefined;\r\n this.mainPartMaterialId = _data[\"mainPartMaterialId\"];\r\n this.mainPartMaterial = _data[\"mainPartMaterial\"] ? Material.fromJS(_data[\"mainPartMaterial\"]) : undefined;\r\n this.length = _data[\"length\"];\r\n this.weight = _data[\"weight\"];\r\n this.area = _data[\"area\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectAssembly {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectAssembly();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"mark\"] = this.mark;\r\n data[\"qty\"] = this.qty;\r\n if (Array.isArray(this.parts)) {\r\n data[\"parts\"] = [];\r\n for (let item of this.parts)\r\n data[\"parts\"].push(item.toJSON());\r\n }\r\n data[\"surfaceFinishId\"] = this.surfaceFinishId;\r\n data[\"surfaceFinish\"] = this.surfaceFinish ? this.surfaceFinish.toJSON() : undefined;\r\n data[\"mainPartMaterialId\"] = this.mainPartMaterialId;\r\n data[\"mainPartMaterial\"] = this.mainPartMaterial ? this.mainPartMaterial.toJSON() : undefined;\r\n data[\"length\"] = this.length;\r\n data[\"weight\"] = this.weight;\r\n data[\"area\"] = this.area;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectAssembly {\r\n id?: string;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n mark?: string | undefined;\r\n qty?: number | undefined;\r\n parts?: AssemblyPartLine[] | undefined;\r\n surfaceFinishId?: string | undefined;\r\n surfaceFinish?: SurfaceFinish | undefined;\r\n mainPartMaterialId?: string | undefined;\r\n mainPartMaterial?: Material | undefined;\r\n length?: number | undefined;\r\n weight?: number | undefined;\r\n area?: number | undefined;\r\n}\r\n\r\nexport abstract class AuditableEntity implements IAuditableEntity {\r\n created?: Date;\r\n createdByUserId?: string;\r\n lastModified?: Date | undefined;\r\n lastModifiedByUserId?: string;\r\n\r\n constructor(data?: IAuditableEntity) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : undefined;\r\n this.createdByUserId = _data[\"createdByUserId\"];\r\n this.lastModified = _data[\"lastModified\"] ? new Date(_data[\"lastModified\"].toString()) : undefined;\r\n this.lastModifiedByUserId = _data[\"lastModifiedByUserId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AuditableEntity {\r\n data = typeof data === 'object' ? data : {};\r\n throw new Error(\"The abstract class 'AuditableEntity' cannot be instantiated.\");\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"created\"] = this.created ? this.created.toISOString() : undefined;\r\n data[\"createdByUserId\"] = this.createdByUserId;\r\n data[\"lastModified\"] = this.lastModified ? this.lastModified.toISOString() : undefined;\r\n data[\"lastModifiedByUserId\"] = this.lastModifiedByUserId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAuditableEntity {\r\n created?: Date;\r\n createdByUserId?: string;\r\n lastModified?: Date | undefined;\r\n lastModifiedByUserId?: string;\r\n}\r\n\r\nexport class Project extends AuditableEntity implements IProject {\r\n id?: string;\r\n number?: string | undefined;\r\n name?: string | undefined;\r\n details?: string | undefined;\r\n addressId?: string | undefined;\r\n address?: Address | undefined;\r\n contacts?: ProjectContact[] | undefined;\r\n projectStatusId?: string | undefined;\r\n projectStatus?: ProjectStatus | undefined;\r\n currentFabricationDrawingDirectoryId?: string | undefined;\r\n currentFabricationDrawingDirectory?: ProjectFileDirectory | undefined;\r\n assignedToUserId?: string | undefined;\r\n assignedToUser?: ApplicationUser | undefined;\r\n customerId?: string | undefined;\r\n customer?: Contact | undefined;\r\n\r\n constructor(data?: IProject) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.number = _data[\"number\"];\r\n this.name = _data[\"name\"];\r\n this.details = _data[\"details\"];\r\n this.addressId = _data[\"addressId\"];\r\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\r\n if (Array.isArray(_data[\"contacts\"])) {\r\n this.contacts = [] as any;\r\n for (let item of _data[\"contacts\"])\r\n this.contacts!.push(ProjectContact.fromJS(item));\r\n }\r\n this.projectStatusId = _data[\"projectStatusId\"];\r\n this.projectStatus = _data[\"projectStatus\"] ? ProjectStatus.fromJS(_data[\"projectStatus\"]) : undefined;\r\n this.currentFabricationDrawingDirectoryId = _data[\"currentFabricationDrawingDirectoryId\"];\r\n this.currentFabricationDrawingDirectory = _data[\"currentFabricationDrawingDirectory\"] ? ProjectFileDirectory.fromJS(_data[\"currentFabricationDrawingDirectory\"]) : undefined;\r\n this.assignedToUserId = _data[\"assignedToUserId\"];\r\n this.assignedToUser = _data[\"assignedToUser\"] ? ApplicationUser.fromJS(_data[\"assignedToUser\"]) : undefined;\r\n this.customerId = _data[\"customerId\"];\r\n this.customer = _data[\"customer\"] ? Contact.fromJS(_data[\"customer\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): Project {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Project();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"number\"] = this.number;\r\n data[\"name\"] = this.name;\r\n data[\"details\"] = this.details;\r\n data[\"addressId\"] = this.addressId;\r\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\r\n if (Array.isArray(this.contacts)) {\r\n data[\"contacts\"] = [];\r\n for (let item of this.contacts)\r\n data[\"contacts\"].push(item.toJSON());\r\n }\r\n data[\"projectStatusId\"] = this.projectStatusId;\r\n data[\"projectStatus\"] = this.projectStatus ? this.projectStatus.toJSON() : undefined;\r\n data[\"currentFabricationDrawingDirectoryId\"] = this.currentFabricationDrawingDirectoryId;\r\n data[\"currentFabricationDrawingDirectory\"] = this.currentFabricationDrawingDirectory ? this.currentFabricationDrawingDirectory.toJSON() : undefined;\r\n data[\"assignedToUserId\"] = this.assignedToUserId;\r\n data[\"assignedToUser\"] = this.assignedToUser ? this.assignedToUser.toJSON() : undefined;\r\n data[\"customerId\"] = this.customerId;\r\n data[\"customer\"] = this.customer ? this.customer.toJSON() : undefined;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProject extends IAuditableEntity {\r\n id?: string;\r\n number?: string | undefined;\r\n name?: string | undefined;\r\n details?: string | undefined;\r\n addressId?: string | undefined;\r\n address?: Address | undefined;\r\n contacts?: ProjectContact[] | undefined;\r\n projectStatusId?: string | undefined;\r\n projectStatus?: ProjectStatus | undefined;\r\n currentFabricationDrawingDirectoryId?: string | undefined;\r\n currentFabricationDrawingDirectory?: ProjectFileDirectory | undefined;\r\n assignedToUserId?: string | undefined;\r\n assignedToUser?: ApplicationUser | undefined;\r\n customerId?: string | undefined;\r\n customer?: Contact | undefined;\r\n}\r\n\r\nexport class ProjectContact implements IProjectContact {\r\n id?: string;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n positionInProject?: string | undefined;\r\n contact?: Contact | undefined;\r\n\r\n constructor(data?: IProjectContact) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.project = _data[\"project\"] ? Project.fromJS(_data[\"project\"]) : undefined;\r\n this.positionInProject = _data[\"positionInProject\"];\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectContact {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectContact();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"positionInProject\"] = this.positionInProject;\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectContact {\r\n id?: string;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n positionInProject?: string | undefined;\r\n contact?: Contact | undefined;\r\n}\r\n\r\nexport class ProjectStatus implements IProjectStatus {\r\n id?: string;\r\n name?: string | undefined;\r\n\r\n constructor(data?: IProjectStatus) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectStatus {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectStatus();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectStatus {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class ProjectFileDirectory implements IProjectFileDirectory {\r\n id?: string;\r\n projectId?: string;\r\n parentDirectoryId?: string | undefined;\r\n parentDirectory?: ProjectFileDirectory | undefined;\r\n name?: string | undefined;\r\n files?: ProjectFile[] | undefined;\r\n\r\n constructor(data?: IProjectFileDirectory) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.parentDirectoryId = _data[\"parentDirectoryId\"];\r\n this.parentDirectory = _data[\"parentDirectory\"] ? ProjectFileDirectory.fromJS(_data[\"parentDirectory\"]) : undefined;\r\n this.name = _data[\"name\"];\r\n if (Array.isArray(_data[\"files\"])) {\r\n this.files = [] as any;\r\n for (let item of _data[\"files\"])\r\n this.files!.push(ProjectFile.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectFileDirectory {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectFileDirectory();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"parentDirectoryId\"] = this.parentDirectoryId;\r\n data[\"parentDirectory\"] = this.parentDirectory ? this.parentDirectory.toJSON() : undefined;\r\n data[\"name\"] = this.name;\r\n if (Array.isArray(this.files)) {\r\n data[\"files\"] = [];\r\n for (let item of this.files)\r\n data[\"files\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectFileDirectory {\r\n id?: string;\r\n projectId?: string;\r\n parentDirectoryId?: string | undefined;\r\n parentDirectory?: ProjectFileDirectory | undefined;\r\n name?: string | undefined;\r\n files?: ProjectFile[] | undefined;\r\n}\r\n\r\nexport class ProjectFile implements IProjectFile {\r\n id?: string;\r\n fileName?: string | undefined;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n directoryId?: string | undefined;\r\n directory?: ProjectFileDirectory | undefined;\r\n\r\n constructor(data?: IProjectFile) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.fileName = _data[\"fileName\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.project = _data[\"project\"] ? Project.fromJS(_data[\"project\"]) : undefined;\r\n this.directoryId = _data[\"directoryId\"];\r\n this.directory = _data[\"directory\"] ? ProjectFileDirectory.fromJS(_data[\"directory\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectFile {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectFile();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"fileName\"] = this.fileName;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"directoryId\"] = this.directoryId;\r\n data[\"directory\"] = this.directory ? this.directory.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectFile {\r\n id?: string;\r\n fileName?: string | undefined;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n directoryId?: string | undefined;\r\n directory?: ProjectFileDirectory | undefined;\r\n}\r\n\r\nexport class IdentityUserOfGuid implements IIdentityUserOfGuid {\r\n id?: string;\r\n userName?: string | undefined;\r\n normalizedUserName?: string | undefined;\r\n email?: string | undefined;\r\n normalizedEmail?: string | undefined;\r\n emailConfirmed?: boolean;\r\n passwordHash?: string | undefined;\r\n securityStamp?: string | undefined;\r\n concurrencyStamp?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n phoneNumberConfirmed?: boolean;\r\n twoFactorEnabled?: boolean;\r\n lockoutEnd?: Date | undefined;\r\n lockoutEnabled?: boolean;\r\n accessFailedCount?: number;\r\n\r\n constructor(data?: IIdentityUserOfGuid) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.userName = _data[\"userName\"];\r\n this.normalizedUserName = _data[\"normalizedUserName\"];\r\n this.email = _data[\"email\"];\r\n this.normalizedEmail = _data[\"normalizedEmail\"];\r\n this.emailConfirmed = _data[\"emailConfirmed\"];\r\n this.passwordHash = _data[\"passwordHash\"];\r\n this.securityStamp = _data[\"securityStamp\"];\r\n this.concurrencyStamp = _data[\"concurrencyStamp\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.phoneNumberConfirmed = _data[\"phoneNumberConfirmed\"];\r\n this.twoFactorEnabled = _data[\"twoFactorEnabled\"];\r\n this.lockoutEnd = _data[\"lockoutEnd\"] ? new Date(_data[\"lockoutEnd\"].toString()) : undefined;\r\n this.lockoutEnabled = _data[\"lockoutEnabled\"];\r\n this.accessFailedCount = _data[\"accessFailedCount\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): IdentityUserOfGuid {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new IdentityUserOfGuid();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"userName\"] = this.userName;\r\n data[\"normalizedUserName\"] = this.normalizedUserName;\r\n data[\"email\"] = this.email;\r\n data[\"normalizedEmail\"] = this.normalizedEmail;\r\n data[\"emailConfirmed\"] = this.emailConfirmed;\r\n data[\"passwordHash\"] = this.passwordHash;\r\n data[\"securityStamp\"] = this.securityStamp;\r\n data[\"concurrencyStamp\"] = this.concurrencyStamp;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"phoneNumberConfirmed\"] = this.phoneNumberConfirmed;\r\n data[\"twoFactorEnabled\"] = this.twoFactorEnabled;\r\n data[\"lockoutEnd\"] = this.lockoutEnd ? this.lockoutEnd.toISOString() : undefined;\r\n data[\"lockoutEnabled\"] = this.lockoutEnabled;\r\n data[\"accessFailedCount\"] = this.accessFailedCount;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IIdentityUserOfGuid {\r\n id?: string;\r\n userName?: string | undefined;\r\n normalizedUserName?: string | undefined;\r\n email?: string | undefined;\r\n normalizedEmail?: string | undefined;\r\n emailConfirmed?: boolean;\r\n passwordHash?: string | undefined;\r\n securityStamp?: string | undefined;\r\n concurrencyStamp?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n phoneNumberConfirmed?: boolean;\r\n twoFactorEnabled?: boolean;\r\n lockoutEnd?: Date | undefined;\r\n lockoutEnabled?: boolean;\r\n accessFailedCount?: number;\r\n}\r\n\r\nexport class ApplicationUser extends IdentityUserOfGuid implements IApplicationUser {\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n avatar?: string | undefined;\r\n deactivated?: boolean;\r\n tenantId?: string | undefined;\r\n tenant?: ApplicationTenant | undefined;\r\n\r\n constructor(data?: IApplicationUser) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n this.avatar = _data[\"avatar\"];\r\n this.deactivated = _data[\"deactivated\"];\r\n this.tenantId = _data[\"tenantId\"];\r\n this.tenant = _data[\"tenant\"] ? ApplicationTenant.fromJS(_data[\"tenant\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): ApplicationUser {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ApplicationUser();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n data[\"avatar\"] = this.avatar;\r\n data[\"deactivated\"] = this.deactivated;\r\n data[\"tenantId\"] = this.tenantId;\r\n data[\"tenant\"] = this.tenant ? this.tenant.toJSON() : undefined;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IApplicationUser extends IIdentityUserOfGuid {\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n avatar?: string | undefined;\r\n deactivated?: boolean;\r\n tenantId?: string | undefined;\r\n tenant?: ApplicationTenant | undefined;\r\n}\r\n\r\nexport class ApplicationTenant implements IApplicationTenant {\r\n id?: string;\r\n name?: string | undefined;\r\n\r\n constructor(data?: IApplicationTenant) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ApplicationTenant {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ApplicationTenant();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IApplicationTenant {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class AssemblyPartLine implements IAssemblyPartLine {\r\n id?: string;\r\n partId?: string;\r\n assemblyId?: string;\r\n part?: ProjectPart | undefined;\r\n assembly?: ProjectAssembly | undefined;\r\n qty?: number;\r\n\r\n constructor(data?: IAssemblyPartLine) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.partId = _data[\"partId\"];\r\n this.assemblyId = _data[\"assemblyId\"];\r\n this.part = _data[\"part\"] ? ProjectPart.fromJS(_data[\"part\"]) : undefined;\r\n this.assembly = _data[\"assembly\"] ? ProjectAssembly.fromJS(_data[\"assembly\"]) : undefined;\r\n this.qty = _data[\"qty\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AssemblyPartLine {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AssemblyPartLine();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"partId\"] = this.partId;\r\n data[\"assemblyId\"] = this.assemblyId;\r\n data[\"part\"] = this.part ? this.part.toJSON() : undefined;\r\n data[\"assembly\"] = this.assembly ? this.assembly.toJSON() : undefined;\r\n data[\"qty\"] = this.qty;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAssemblyPartLine {\r\n id?: string;\r\n partId?: string;\r\n assemblyId?: string;\r\n part?: ProjectPart | undefined;\r\n assembly?: ProjectAssembly | undefined;\r\n qty?: number;\r\n}\r\n\r\nexport class ProjectPart implements IProjectPart {\r\n id?: string;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n mark?: string | undefined;\r\n qty?: number;\r\n materialTypeId?: string | undefined;\r\n materialType?: MaterialType | undefined;\r\n materialId?: string | undefined;\r\n material?: Material | undefined;\r\n materialGradeId?: string | undefined;\r\n materialGrade?: MaterialGrade | undefined;\r\n length?: number | undefined;\r\n width?: number | undefined;\r\n thickness?: number | undefined;\r\n weight?: number | undefined;\r\n\r\n constructor(data?: IProjectPart) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.project = _data[\"project\"] ? Project.fromJS(_data[\"project\"]) : undefined;\r\n this.mark = _data[\"mark\"];\r\n this.qty = _data[\"qty\"];\r\n this.materialTypeId = _data[\"materialTypeId\"];\r\n this.materialType = _data[\"materialType\"] ? MaterialType.fromJS(_data[\"materialType\"]) : undefined;\r\n this.materialId = _data[\"materialId\"];\r\n this.material = _data[\"material\"] ? Material.fromJS(_data[\"material\"]) : undefined;\r\n this.materialGradeId = _data[\"materialGradeId\"];\r\n this.materialGrade = _data[\"materialGrade\"] ? MaterialGrade.fromJS(_data[\"materialGrade\"]) : undefined;\r\n this.length = _data[\"length\"];\r\n this.width = _data[\"width\"];\r\n this.thickness = _data[\"thickness\"];\r\n this.weight = _data[\"weight\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectPart {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectPart();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"mark\"] = this.mark;\r\n data[\"qty\"] = this.qty;\r\n data[\"materialTypeId\"] = this.materialTypeId;\r\n data[\"materialType\"] = this.materialType ? this.materialType.toJSON() : undefined;\r\n data[\"materialId\"] = this.materialId;\r\n data[\"material\"] = this.material ? this.material.toJSON() : undefined;\r\n data[\"materialGradeId\"] = this.materialGradeId;\r\n data[\"materialGrade\"] = this.materialGrade ? this.materialGrade.toJSON() : undefined;\r\n data[\"length\"] = this.length;\r\n data[\"width\"] = this.width;\r\n data[\"thickness\"] = this.thickness;\r\n data[\"weight\"] = this.weight;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectPart {\r\n id?: string;\r\n projectId?: string;\r\n project?: Project | undefined;\r\n mark?: string | undefined;\r\n qty?: number;\r\n materialTypeId?: string | undefined;\r\n materialType?: MaterialType | undefined;\r\n materialId?: string | undefined;\r\n material?: Material | undefined;\r\n materialGradeId?: string | undefined;\r\n materialGrade?: MaterialGrade | undefined;\r\n length?: number | undefined;\r\n width?: number | undefined;\r\n thickness?: number | undefined;\r\n weight?: number | undefined;\r\n}\r\n\r\nexport class SurfaceFinish implements ISurfaceFinish {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n isColoured?: boolean;\r\n colours?: SurfaceFinishColour[] | undefined;\r\n deleted?: boolean;\r\n\r\n constructor(data?: ISurfaceFinish) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.code = _data[\"code\"];\r\n this.name = _data[\"name\"];\r\n this.isColoured = _data[\"isColoured\"];\r\n if (Array.isArray(_data[\"colours\"])) {\r\n this.colours = [] as any;\r\n for (let item of _data[\"colours\"])\r\n this.colours!.push(SurfaceFinishColour.fromJS(item));\r\n }\r\n this.deleted = _data[\"deleted\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): SurfaceFinish {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SurfaceFinish();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"code\"] = this.code;\r\n data[\"name\"] = this.name;\r\n data[\"isColoured\"] = this.isColoured;\r\n if (Array.isArray(this.colours)) {\r\n data[\"colours\"] = [];\r\n for (let item of this.colours)\r\n data[\"colours\"].push(item.toJSON());\r\n }\r\n data[\"deleted\"] = this.deleted;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISurfaceFinish {\r\n id?: string;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n isColoured?: boolean;\r\n colours?: SurfaceFinishColour[] | undefined;\r\n deleted?: boolean;\r\n}\r\n\r\nexport class SurfaceFinishColour implements ISurfaceFinishColour {\r\n id?: string;\r\n surfaceFinishId?: string;\r\n deleted?: boolean;\r\n name?: string | undefined;\r\n\r\n constructor(data?: ISurfaceFinishColour) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.surfaceFinishId = _data[\"surfaceFinishId\"];\r\n this.deleted = _data[\"deleted\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): SurfaceFinishColour {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SurfaceFinishColour();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"surfaceFinishId\"] = this.surfaceFinishId;\r\n data[\"deleted\"] = this.deleted;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISurfaceFinishColour {\r\n id?: string;\r\n surfaceFinishId?: string;\r\n deleted?: boolean;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class DefaultDirectoryResult implements IDefaultDirectoryResult {\r\n id?: string;\r\n name?: string | undefined;\r\n isFabricationDrawings?: boolean;\r\n\r\n constructor(data?: IDefaultDirectoryResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.isFabricationDrawings = _data[\"isFabricationDrawings\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DefaultDirectoryResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DefaultDirectoryResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"isFabricationDrawings\"] = this.isFabricationDrawings;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDefaultDirectoryResult {\r\n id?: string;\r\n name?: string | undefined;\r\n isFabricationDrawings?: boolean;\r\n}\r\n\r\nexport class GetDirectoriesResult implements IGetDirectoriesResult {\r\n directories?: Directory[] | undefined;\r\n\r\n constructor(data?: IGetDirectoriesResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"directories\"])) {\r\n this.directories = [] as any;\r\n for (let item of _data[\"directories\"])\r\n this.directories!.push(Directory.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetDirectoriesResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetDirectoriesResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.directories)) {\r\n data[\"directories\"] = [];\r\n for (let item of this.directories)\r\n data[\"directories\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetDirectoriesResult {\r\n directories?: Directory[] | undefined;\r\n}\r\n\r\nexport class Directory implements IDirectory {\r\n id?: string;\r\n name?: string | undefined;\r\n parentId?: string | undefined;\r\n\r\n constructor(data?: IDirectory) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.parentId = _data[\"parentId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Directory {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Directory();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"parentId\"] = this.parentId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDirectory {\r\n id?: string;\r\n name?: string | undefined;\r\n parentId?: string | undefined;\r\n}\r\n\r\nexport class CreateDirectoryResult implements ICreateDirectoryResult {\r\n id?: string;\r\n name?: string | undefined;\r\n parentDirectoryId?: string | undefined;\r\n\r\n constructor(data?: ICreateDirectoryResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.parentDirectoryId = _data[\"parentDirectoryId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateDirectoryResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateDirectoryResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"parentDirectoryId\"] = this.parentDirectoryId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateDirectoryResult {\r\n id?: string;\r\n name?: string | undefined;\r\n parentDirectoryId?: string | undefined;\r\n}\r\n\r\nexport class DeleteFilesReqeuest implements IDeleteFilesReqeuest {\r\n fileIds?: string[] | undefined;\r\n\r\n constructor(data?: IDeleteFilesReqeuest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"fileIds\"])) {\r\n this.fileIds = [] as any;\r\n for (let item of _data[\"fileIds\"])\r\n this.fileIds!.push(item);\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteFilesReqeuest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteFilesReqeuest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.fileIds)) {\r\n data[\"fileIds\"] = [];\r\n for (let item of this.fileIds)\r\n data[\"fileIds\"].push(item);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteFilesReqeuest {\r\n fileIds?: string[] | undefined;\r\n}\r\n\r\nexport class MoveFilesRequest implements IMoveFilesRequest {\r\n projectId?: string;\r\n directories?: string[] | undefined;\r\n files?: string[] | undefined;\r\n targetDirectory?: string | undefined;\r\n\r\n constructor(data?: IMoveFilesRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.projectId = _data[\"projectId\"];\r\n if (Array.isArray(_data[\"directories\"])) {\r\n this.directories = [] as any;\r\n for (let item of _data[\"directories\"])\r\n this.directories!.push(item);\r\n }\r\n if (Array.isArray(_data[\"files\"])) {\r\n this.files = [] as any;\r\n for (let item of _data[\"files\"])\r\n this.files!.push(item);\r\n }\r\n this.targetDirectory = _data[\"targetDirectory\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): MoveFilesRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MoveFilesRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"projectId\"] = this.projectId;\r\n if (Array.isArray(this.directories)) {\r\n data[\"directories\"] = [];\r\n for (let item of this.directories)\r\n data[\"directories\"].push(item);\r\n }\r\n if (Array.isArray(this.files)) {\r\n data[\"files\"] = [];\r\n for (let item of this.files)\r\n data[\"files\"].push(item);\r\n }\r\n data[\"targetDirectory\"] = this.targetDirectory;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMoveFilesRequest {\r\n projectId?: string;\r\n directories?: string[] | undefined;\r\n files?: string[] | undefined;\r\n targetDirectory?: string | undefined;\r\n}\r\n\r\nexport class GetProjectResult implements IGetProjectResult {\r\n id?: string;\r\n number?: string | undefined;\r\n name?: string | undefined;\r\n address?: Address | undefined;\r\n assignedUser?: UserSummary | undefined;\r\n projectStatus?: ProjectStatus | undefined;\r\n customer?: Contact | undefined;\r\n details?: string | undefined;\r\n\r\n constructor(data?: IGetProjectResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.number = _data[\"number\"];\r\n this.name = _data[\"name\"];\r\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\r\n this.assignedUser = _data[\"assignedUser\"] ? UserSummary.fromJS(_data[\"assignedUser\"]) : undefined;\r\n this.projectStatus = _data[\"projectStatus\"] ? ProjectStatus.fromJS(_data[\"projectStatus\"]) : undefined;\r\n this.customer = _data[\"customer\"] ? Contact.fromJS(_data[\"customer\"]) : undefined;\r\n this.details = _data[\"details\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetProjectResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetProjectResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"number\"] = this.number;\r\n data[\"name\"] = this.name;\r\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\r\n data[\"assignedUser\"] = this.assignedUser ? this.assignedUser.toJSON() : undefined;\r\n data[\"projectStatus\"] = this.projectStatus ? this.projectStatus.toJSON() : undefined;\r\n data[\"customer\"] = this.customer ? this.customer.toJSON() : undefined;\r\n data[\"details\"] = this.details;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetProjectResult {\r\n id?: string;\r\n number?: string | undefined;\r\n name?: string | undefined;\r\n address?: Address | undefined;\r\n assignedUser?: UserSummary | undefined;\r\n projectStatus?: ProjectStatus | undefined;\r\n customer?: Contact | undefined;\r\n details?: string | undefined;\r\n}\r\n\r\nexport class UserSummary implements IUserSummary {\r\n id?: string | undefined;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n\r\n constructor(data?: IUserSummary) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserSummary {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserSummary();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserSummary {\r\n id?: string | undefined;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n}\r\n\r\nexport class GetProjectsResult implements IGetProjectsResult {\r\n projects?: Project[] | undefined;\r\n\r\n constructor(data?: IGetProjectsResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"projects\"])) {\r\n this.projects = [] as any;\r\n for (let item of _data[\"projects\"])\r\n this.projects!.push(Project.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetProjectsResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetProjectsResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.projects)) {\r\n data[\"projects\"] = [];\r\n for (let item of this.projects)\r\n data[\"projects\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetProjectsResult {\r\n projects?: Project[] | undefined;\r\n}\r\n\r\nexport class UpdateProjectStatusRequest implements IUpdateProjectStatusRequest {\r\n statusId?: string;\r\n\r\n constructor(data?: IUpdateProjectStatusRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.statusId = _data[\"statusId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateProjectStatusRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateProjectStatusRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"statusId\"] = this.statusId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateProjectStatusRequest {\r\n statusId?: string;\r\n}\r\n\r\nexport class CreateProjectResult implements ICreateProjectResult {\r\n id?: string;\r\n projectName?: string | undefined;\r\n\r\n constructor(data?: ICreateProjectResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectName = _data[\"projectName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateProjectResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateProjectResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectName\"] = this.projectName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateProjectResult {\r\n id?: string;\r\n projectName?: string | undefined;\r\n}\r\n\r\nexport class CreateProjectCommand implements ICreateProjectCommand {\r\n project?: ProjectData | undefined;\r\n address?: AddressData | undefined;\r\n details?: string | undefined;\r\n\r\n constructor(data?: ICreateProjectCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.project = _data[\"project\"] ? ProjectData.fromJS(_data[\"project\"]) : undefined;\r\n this.address = _data[\"address\"] ? AddressData.fromJS(_data[\"address\"]) : undefined;\r\n this.details = _data[\"details\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateProjectCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateProjectCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\r\n data[\"details\"] = this.details;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateProjectCommand {\r\n project?: ProjectData | undefined;\r\n address?: AddressData | undefined;\r\n details?: string | undefined;\r\n}\r\n\r\nexport class ProjectData implements IProjectData {\r\n name?: string | undefined;\r\n statusId?: string | undefined;\r\n number?: string | undefined;\r\n assignedToUser?: string | undefined;\r\n customerId?: string | undefined;\r\n\r\n constructor(data?: IProjectData) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.statusId = _data[\"statusId\"];\r\n this.number = _data[\"number\"];\r\n this.assignedToUser = _data[\"assignedToUser\"];\r\n this.customerId = _data[\"customerId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectData {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectData();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"statusId\"] = this.statusId;\r\n data[\"number\"] = this.number;\r\n data[\"assignedToUser\"] = this.assignedToUser;\r\n data[\"customerId\"] = this.customerId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectData {\r\n name?: string | undefined;\r\n statusId?: string | undefined;\r\n number?: string | undefined;\r\n assignedToUser?: string | undefined;\r\n customerId?: string | undefined;\r\n}\r\n\r\nexport class AddressData implements IAddressData {\r\n addressLine1?: string | undefined;\r\n addressLine2?: string | undefined;\r\n city?: string | undefined;\r\n state?: string | undefined;\r\n country?: string | undefined;\r\n postCode?: string | undefined;\r\n\r\n constructor(data?: IAddressData) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.addressLine1 = _data[\"addressLine1\"];\r\n this.addressLine2 = _data[\"addressLine2\"];\r\n this.city = _data[\"city\"];\r\n this.state = _data[\"state\"];\r\n this.country = _data[\"country\"];\r\n this.postCode = _data[\"postCode\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AddressData {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AddressData();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"addressLine1\"] = this.addressLine1;\r\n data[\"addressLine2\"] = this.addressLine2;\r\n data[\"city\"] = this.city;\r\n data[\"state\"] = this.state;\r\n data[\"country\"] = this.country;\r\n data[\"postCode\"] = this.postCode;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAddressData {\r\n addressLine1?: string | undefined;\r\n addressLine2?: string | undefined;\r\n city?: string | undefined;\r\n state?: string | undefined;\r\n country?: string | undefined;\r\n postCode?: string | undefined;\r\n}\r\n\r\nexport class EditProjectResult implements IEditProjectResult {\r\n id?: string;\r\n projectName?: string | undefined;\r\n\r\n constructor(data?: IEditProjectResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectName = _data[\"projectName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): EditProjectResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EditProjectResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectName\"] = this.projectName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEditProjectResult {\r\n id?: string;\r\n projectName?: string | undefined;\r\n}\r\n\r\nexport class EditProjectCommand implements IEditProjectCommand {\r\n id?: string;\r\n project?: ProjectData2 | undefined;\r\n address?: AddressData2 | undefined;\r\n details?: string | undefined;\r\n\r\n constructor(data?: IEditProjectCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.project = _data[\"project\"] ? ProjectData2.fromJS(_data[\"project\"]) : undefined;\r\n this.address = _data[\"address\"] ? AddressData2.fromJS(_data[\"address\"]) : undefined;\r\n this.details = _data[\"details\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): EditProjectCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EditProjectCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\r\n data[\"details\"] = this.details;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEditProjectCommand {\r\n id?: string;\r\n project?: ProjectData2 | undefined;\r\n address?: AddressData2 | undefined;\r\n details?: string | undefined;\r\n}\r\n\r\nexport class ProjectData2 implements IProjectData2 {\r\n name?: string | undefined;\r\n number?: string | undefined;\r\n customerId?: string | undefined;\r\n\r\n constructor(data?: IProjectData2) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.number = _data[\"number\"];\r\n this.customerId = _data[\"customerId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ProjectData2 {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ProjectData2();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"number\"] = this.number;\r\n data[\"customerId\"] = this.customerId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IProjectData2 {\r\n name?: string | undefined;\r\n number?: string | undefined;\r\n customerId?: string | undefined;\r\n}\r\n\r\nexport class AddressData2 implements IAddressData2 {\r\n addressLine1?: string | undefined;\r\n addressLine2?: string | undefined;\r\n city?: string | undefined;\r\n state?: string | undefined;\r\n country?: string | undefined;\r\n postCode?: string | undefined;\r\n\r\n constructor(data?: IAddressData2) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.addressLine1 = _data[\"addressLine1\"];\r\n this.addressLine2 = _data[\"addressLine2\"];\r\n this.city = _data[\"city\"];\r\n this.state = _data[\"state\"];\r\n this.country = _data[\"country\"];\r\n this.postCode = _data[\"postCode\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AddressData2 {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AddressData2();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"addressLine1\"] = this.addressLine1;\r\n data[\"addressLine2\"] = this.addressLine2;\r\n data[\"city\"] = this.city;\r\n data[\"state\"] = this.state;\r\n data[\"country\"] = this.country;\r\n data[\"postCode\"] = this.postCode;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAddressData2 {\r\n addressLine1?: string | undefined;\r\n addressLine2?: string | undefined;\r\n city?: string | undefined;\r\n state?: string | undefined;\r\n country?: string | undefined;\r\n postCode?: string | undefined;\r\n}\r\n\r\nexport class StockResult implements IStockResult {\r\n id?: string;\r\n code?: string | undefined;\r\n length?: number;\r\n stockLocationId?: string;\r\n qty?: number;\r\n materialId?: string;\r\n materialProfileId?: string;\r\n weight?: number;\r\n materialTypeId?: string;\r\n\r\n constructor(data?: IStockResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.code = _data[\"code\"];\r\n this.length = _data[\"length\"];\r\n this.stockLocationId = _data[\"stockLocationId\"];\r\n this.qty = _data[\"qty\"];\r\n this.materialId = _data[\"materialId\"];\r\n this.materialProfileId = _data[\"materialProfileId\"];\r\n this.weight = _data[\"weight\"];\r\n this.materialTypeId = _data[\"materialTypeId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): StockResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new StockResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"code\"] = this.code;\r\n data[\"length\"] = this.length;\r\n data[\"stockLocationId\"] = this.stockLocationId;\r\n data[\"qty\"] = this.qty;\r\n data[\"materialId\"] = this.materialId;\r\n data[\"materialProfileId\"] = this.materialProfileId;\r\n data[\"weight\"] = this.weight;\r\n data[\"materialTypeId\"] = this.materialTypeId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IStockResult {\r\n id?: string;\r\n code?: string | undefined;\r\n length?: number;\r\n stockLocationId?: string;\r\n qty?: number;\r\n materialId?: string;\r\n materialProfileId?: string;\r\n weight?: number;\r\n materialTypeId?: string;\r\n}\r\n\r\nexport class AddStockDto implements IAddStockDto {\r\n stockLocationId?: string;\r\n materialId?: string;\r\n length?: number;\r\n qty?: number;\r\n\r\n constructor(data?: IAddStockDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.stockLocationId = _data[\"stockLocationId\"];\r\n this.materialId = _data[\"materialId\"];\r\n this.length = _data[\"length\"];\r\n this.qty = _data[\"qty\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AddStockDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AddStockDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"stockLocationId\"] = this.stockLocationId;\r\n data[\"materialId\"] = this.materialId;\r\n data[\"length\"] = this.length;\r\n data[\"qty\"] = this.qty;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAddStockDto {\r\n stockLocationId?: string;\r\n materialId?: string;\r\n length?: number;\r\n qty?: number;\r\n}\r\n\r\nexport class StockLocation implements IStockLocation {\r\n id?: string;\r\n parentId?: string | undefined;\r\n parent?: StockLocation | undefined;\r\n code?: string | undefined;\r\n deleted?: boolean;\r\n\r\n constructor(data?: IStockLocation) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.parentId = _data[\"parentId\"];\r\n this.parent = _data[\"parent\"] ? StockLocation.fromJS(_data[\"parent\"]) : undefined;\r\n this.code = _data[\"code\"];\r\n this.deleted = _data[\"deleted\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): StockLocation {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new StockLocation();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"parentId\"] = this.parentId;\r\n data[\"parent\"] = this.parent ? this.parent.toJSON() : undefined;\r\n data[\"code\"] = this.code;\r\n data[\"deleted\"] = this.deleted;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IStockLocation {\r\n id?: string;\r\n parentId?: string | undefined;\r\n parent?: StockLocation | undefined;\r\n code?: string | undefined;\r\n deleted?: boolean;\r\n}\r\n\r\nexport class UpdateStockLocationRequest implements IUpdateStockLocationRequest {\r\n parentId?: string | undefined;\r\n code?: string | undefined;\r\n\r\n constructor(data?: IUpdateStockLocationRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.parentId = _data[\"parentId\"];\r\n this.code = _data[\"code\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateStockLocationRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateStockLocationRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"parentId\"] = this.parentId;\r\n data[\"code\"] = this.code;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateStockLocationRequest {\r\n parentId?: string | undefined;\r\n code?: string | undefined;\r\n}\r\n\r\nexport class CreateStockLocationRequest implements ICreateStockLocationRequest {\r\n parentId?: string | undefined;\r\n code?: string | undefined;\r\n\r\n constructor(data?: ICreateStockLocationRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.parentId = _data[\"parentId\"];\r\n this.code = _data[\"code\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateStockLocationRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateStockLocationRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"parentId\"] = this.parentId;\r\n data[\"code\"] = this.code;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateStockLocationRequest {\r\n parentId?: string | undefined;\r\n code?: string | undefined;\r\n}\r\n\r\nexport class Supplier implements ISupplier {\r\n id?: string;\r\n name?: string | undefined;\r\n\r\n constructor(data?: ISupplier) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Supplier {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Supplier();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISupplier {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class Colour implements IColour {\r\n name?: string | undefined;\r\n\r\n constructor(data?: IColour) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Colour {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Colour();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IColour {\r\n name?: string | undefined;\r\n}\r\n\r\nexport class GetTasksResult implements IGetTasksResult {\r\n tasks?: Task[] | undefined;\r\n\r\n constructor(data?: IGetTasksResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"tasks\"])) {\r\n this.tasks = [] as any;\r\n for (let item of _data[\"tasks\"])\r\n this.tasks!.push(Task.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetTasksResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetTasksResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.tasks)) {\r\n data[\"tasks\"] = [];\r\n for (let item of this.tasks)\r\n data[\"tasks\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetTasksResult {\r\n tasks?: Task[] | undefined;\r\n}\r\n\r\nexport abstract class EntityObject implements IEntityObject {\r\n id?: string;\r\n createdAt?: Date;\r\n createdByUserId?: string | undefined;\r\n createdByUser?: ApplicationUser | undefined;\r\n modifiedAt?: Date;\r\n modifiedByUserId?: string | undefined;\r\n modifiedByUser?: ApplicationUser | undefined;\r\n\r\n constructor(data?: IEntityObject) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.createdAt = _data[\"createdAt\"] ? new Date(_data[\"createdAt\"].toString()) : undefined;\r\n this.createdByUserId = _data[\"createdByUserId\"];\r\n this.createdByUser = _data[\"createdByUser\"] ? ApplicationUser.fromJS(_data[\"createdByUser\"]) : undefined;\r\n this.modifiedAt = _data[\"modifiedAt\"] ? new Date(_data[\"modifiedAt\"].toString()) : undefined;\r\n this.modifiedByUserId = _data[\"modifiedByUserId\"];\r\n this.modifiedByUser = _data[\"modifiedByUser\"] ? ApplicationUser.fromJS(_data[\"modifiedByUser\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): EntityObject {\r\n data = typeof data === 'object' ? data : {};\r\n throw new Error(\"The abstract class 'EntityObject' cannot be instantiated.\");\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"createdAt\"] = this.createdAt ? this.createdAt.toISOString() : undefined;\r\n data[\"createdByUserId\"] = this.createdByUserId;\r\n data[\"createdByUser\"] = this.createdByUser ? this.createdByUser.toJSON() : undefined;\r\n data[\"modifiedAt\"] = this.modifiedAt ? this.modifiedAt.toISOString() : undefined;\r\n data[\"modifiedByUserId\"] = this.modifiedByUserId;\r\n data[\"modifiedByUser\"] = this.modifiedByUser ? this.modifiedByUser.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEntityObject {\r\n id?: string;\r\n createdAt?: Date;\r\n createdByUserId?: string | undefined;\r\n createdByUser?: ApplicationUser | undefined;\r\n modifiedAt?: Date;\r\n modifiedByUserId?: string | undefined;\r\n modifiedByUser?: ApplicationUser | undefined;\r\n}\r\n\r\nexport class Task extends EntityObject implements ITask {\r\n title?: string | undefined;\r\n projectId?: string | undefined;\r\n project?: Project | undefined;\r\n statusId?: string | undefined;\r\n status?: TaskStatus | undefined;\r\n assignedToUserId?: string | undefined;\r\n assignedToUser?: ApplicationUser | undefined;\r\n description?: string | undefined;\r\n comments?: TaskComment[] | undefined;\r\n startDate?: Date;\r\n endDate?: Date;\r\n attachments?: TaskAttachment[] | undefined;\r\n assignments?: TaskAssignment[] | undefined;\r\n workLog?: WorkLogEntry[] | undefined;\r\n\r\n constructor(data?: ITask) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.title = _data[\"title\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.project = _data[\"project\"] ? Project.fromJS(_data[\"project\"]) : undefined;\r\n this.statusId = _data[\"statusId\"];\r\n this.status = _data[\"status\"] ? TaskStatus.fromJS(_data[\"status\"]) : undefined;\r\n this.assignedToUserId = _data[\"assignedToUserId\"];\r\n this.assignedToUser = _data[\"assignedToUser\"] ? ApplicationUser.fromJS(_data[\"assignedToUser\"]) : undefined;\r\n this.description = _data[\"description\"];\r\n if (Array.isArray(_data[\"comments\"])) {\r\n this.comments = [] as any;\r\n for (let item of _data[\"comments\"])\r\n this.comments!.push(TaskComment.fromJS(item));\r\n }\r\n this.startDate = _data[\"startDate\"] ? new Date(_data[\"startDate\"].toString()) : undefined;\r\n this.endDate = _data[\"endDate\"] ? new Date(_data[\"endDate\"].toString()) : undefined;\r\n if (Array.isArray(_data[\"attachments\"])) {\r\n this.attachments = [] as any;\r\n for (let item of _data[\"attachments\"])\r\n this.attachments!.push(TaskAttachment.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"assignments\"])) {\r\n this.assignments = [] as any;\r\n for (let item of _data[\"assignments\"])\r\n this.assignments!.push(TaskAssignment.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"workLog\"])) {\r\n this.workLog = [] as any;\r\n for (let item of _data[\"workLog\"])\r\n this.workLog!.push(WorkLogEntry.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): Task {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Task();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"title\"] = this.title;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"project\"] = this.project ? this.project.toJSON() : undefined;\r\n data[\"statusId\"] = this.statusId;\r\n data[\"status\"] = this.status ? this.status.toJSON() : undefined;\r\n data[\"assignedToUserId\"] = this.assignedToUserId;\r\n data[\"assignedToUser\"] = this.assignedToUser ? this.assignedToUser.toJSON() : undefined;\r\n data[\"description\"] = this.description;\r\n if (Array.isArray(this.comments)) {\r\n data[\"comments\"] = [];\r\n for (let item of this.comments)\r\n data[\"comments\"].push(item.toJSON());\r\n }\r\n data[\"startDate\"] = this.startDate ? this.startDate.toISOString() : undefined;\r\n data[\"endDate\"] = this.endDate ? this.endDate.toISOString() : undefined;\r\n if (Array.isArray(this.attachments)) {\r\n data[\"attachments\"] = [];\r\n for (let item of this.attachments)\r\n data[\"attachments\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.assignments)) {\r\n data[\"assignments\"] = [];\r\n for (let item of this.assignments)\r\n data[\"assignments\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.workLog)) {\r\n data[\"workLog\"] = [];\r\n for (let item of this.workLog)\r\n data[\"workLog\"].push(item.toJSON());\r\n }\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ITask extends IEntityObject {\r\n title?: string | undefined;\r\n projectId?: string | undefined;\r\n project?: Project | undefined;\r\n statusId?: string | undefined;\r\n status?: TaskStatus | undefined;\r\n assignedToUserId?: string | undefined;\r\n assignedToUser?: ApplicationUser | undefined;\r\n description?: string | undefined;\r\n comments?: TaskComment[] | undefined;\r\n startDate?: Date;\r\n endDate?: Date;\r\n attachments?: TaskAttachment[] | undefined;\r\n assignments?: TaskAssignment[] | undefined;\r\n workLog?: WorkLogEntry[] | undefined;\r\n}\r\n\r\nexport class TaskStatus implements ITaskStatus {\r\n id?: string;\r\n name?: string | undefined;\r\n colour?: string | undefined;\r\n\r\n constructor(data?: ITaskStatus) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.colour = _data[\"colour\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): TaskStatus {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TaskStatus();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"colour\"] = this.colour;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ITaskStatus {\r\n id?: string;\r\n name?: string | undefined;\r\n colour?: string | undefined;\r\n}\r\n\r\nexport class TaskComment extends EntityObject implements ITaskComment {\r\n commentForId?: string;\r\n commentFor?: Task | undefined;\r\n contents?: string | undefined;\r\n\r\n constructor(data?: ITaskComment) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.commentForId = _data[\"commentForId\"];\r\n this.commentFor = _data[\"commentFor\"] ? Task.fromJS(_data[\"commentFor\"]) : undefined;\r\n this.contents = _data[\"contents\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): TaskComment {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TaskComment();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"commentForId\"] = this.commentForId;\r\n data[\"commentFor\"] = this.commentFor ? this.commentFor.toJSON() : undefined;\r\n data[\"contents\"] = this.contents;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ITaskComment extends IEntityObject {\r\n commentForId?: string;\r\n commentFor?: Task | undefined;\r\n contents?: string | undefined;\r\n}\r\n\r\nexport class TaskAttachment extends EntityObject implements ITaskAttachment {\r\n attachmentForId?: string;\r\n attachmentFor?: Task | undefined;\r\n\r\n constructor(data?: ITaskAttachment) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.attachmentForId = _data[\"attachmentForId\"];\r\n this.attachmentFor = _data[\"attachmentFor\"] ? Task.fromJS(_data[\"attachmentFor\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): TaskAttachment {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TaskAttachment();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"attachmentForId\"] = this.attachmentForId;\r\n data[\"attachmentFor\"] = this.attachmentFor ? this.attachmentFor.toJSON() : undefined;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ITaskAttachment extends IEntityObject {\r\n attachmentForId?: string;\r\n attachmentFor?: Task | undefined;\r\n}\r\n\r\nexport class TaskAssignment extends EntityObject implements ITaskAssignment {\r\n users?: TaskAssignmentUser[] | undefined;\r\n start?: Date | undefined;\r\n end?: Date | undefined;\r\n comments?: string | undefined;\r\n\r\n constructor(data?: ITaskAssignment) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n if (Array.isArray(_data[\"users\"])) {\r\n this.users = [] as any;\r\n for (let item of _data[\"users\"])\r\n this.users!.push(TaskAssignmentUser.fromJS(item));\r\n }\r\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\r\n this.end = _data[\"end\"] ? new Date(_data[\"end\"].toString()) : undefined;\r\n this.comments = _data[\"comments\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): TaskAssignment {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TaskAssignment();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.users)) {\r\n data[\"users\"] = [];\r\n for (let item of this.users)\r\n data[\"users\"].push(item.toJSON());\r\n }\r\n data[\"start\"] = this.start ? this.start.toISOString() : undefined;\r\n data[\"end\"] = this.end ? this.end.toISOString() : undefined;\r\n data[\"comments\"] = this.comments;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ITaskAssignment extends IEntityObject {\r\n users?: TaskAssignmentUser[] | undefined;\r\n start?: Date | undefined;\r\n end?: Date | undefined;\r\n comments?: string | undefined;\r\n}\r\n\r\nexport class TaskAssignmentUser extends EntityObject implements ITaskAssignmentUser {\r\n taskAssignmentId?: string;\r\n taskAssignment?: TaskAssignment | undefined;\r\n userId?: string;\r\n user?: ApplicationUser | undefined;\r\n\r\n constructor(data?: ITaskAssignmentUser) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.taskAssignmentId = _data[\"taskAssignmentId\"];\r\n this.taskAssignment = _data[\"taskAssignment\"] ? TaskAssignment.fromJS(_data[\"taskAssignment\"]) : undefined;\r\n this.userId = _data[\"userId\"];\r\n this.user = _data[\"user\"] ? ApplicationUser.fromJS(_data[\"user\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): TaskAssignmentUser {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TaskAssignmentUser();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"taskAssignmentId\"] = this.taskAssignmentId;\r\n data[\"taskAssignment\"] = this.taskAssignment ? this.taskAssignment.toJSON() : undefined;\r\n data[\"userId\"] = this.userId;\r\n data[\"user\"] = this.user ? this.user.toJSON() : undefined;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ITaskAssignmentUser extends IEntityObject {\r\n taskAssignmentId?: string;\r\n taskAssignment?: TaskAssignment | undefined;\r\n userId?: string;\r\n user?: ApplicationUser | undefined;\r\n}\r\n\r\nexport class WorkLogEntry implements IWorkLogEntry {\r\n id?: string;\r\n projectId?: string;\r\n users?: WorkLogEntryUser[] | undefined;\r\n date?: Date;\r\n startTime?: string;\r\n endTime?: string;\r\n details?: string | undefined;\r\n attachments?: WorkLogEntryFile[] | undefined;\r\n taskId?: string | undefined;\r\n task?: Task | undefined;\r\n\r\n constructor(data?: IWorkLogEntry) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.projectId = _data[\"projectId\"];\r\n if (Array.isArray(_data[\"users\"])) {\r\n this.users = [] as any;\r\n for (let item of _data[\"users\"])\r\n this.users!.push(WorkLogEntryUser.fromJS(item));\r\n }\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.startTime = _data[\"startTime\"];\r\n this.endTime = _data[\"endTime\"];\r\n this.details = _data[\"details\"];\r\n if (Array.isArray(_data[\"attachments\"])) {\r\n this.attachments = [] as any;\r\n for (let item of _data[\"attachments\"])\r\n this.attachments!.push(WorkLogEntryFile.fromJS(item));\r\n }\r\n this.taskId = _data[\"taskId\"];\r\n this.task = _data[\"task\"] ? Task.fromJS(_data[\"task\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): WorkLogEntry {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new WorkLogEntry();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"projectId\"] = this.projectId;\r\n if (Array.isArray(this.users)) {\r\n data[\"users\"] = [];\r\n for (let item of this.users)\r\n data[\"users\"].push(item.toJSON());\r\n }\r\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\r\n data[\"startTime\"] = this.startTime;\r\n data[\"endTime\"] = this.endTime;\r\n data[\"details\"] = this.details;\r\n if (Array.isArray(this.attachments)) {\r\n data[\"attachments\"] = [];\r\n for (let item of this.attachments)\r\n data[\"attachments\"].push(item.toJSON());\r\n }\r\n data[\"taskId\"] = this.taskId;\r\n data[\"task\"] = this.task ? this.task.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IWorkLogEntry {\r\n id?: string;\r\n projectId?: string;\r\n users?: WorkLogEntryUser[] | undefined;\r\n date?: Date;\r\n startTime?: string;\r\n endTime?: string;\r\n details?: string | undefined;\r\n attachments?: WorkLogEntryFile[] | undefined;\r\n taskId?: string | undefined;\r\n task?: Task | undefined;\r\n}\r\n\r\nexport class WorkLogEntryUser implements IWorkLogEntryUser {\r\n workLogEntryId?: string;\r\n userId?: string;\r\n entry?: WorkLogEntry | undefined;\r\n user?: ApplicationUser | undefined;\r\n\r\n constructor(data?: IWorkLogEntryUser) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.workLogEntryId = _data[\"workLogEntryId\"];\r\n this.userId = _data[\"userId\"];\r\n this.entry = _data[\"entry\"] ? WorkLogEntry.fromJS(_data[\"entry\"]) : undefined;\r\n this.user = _data[\"user\"] ? ApplicationUser.fromJS(_data[\"user\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): WorkLogEntryUser {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new WorkLogEntryUser();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"workLogEntryId\"] = this.workLogEntryId;\r\n data[\"userId\"] = this.userId;\r\n data[\"entry\"] = this.entry ? this.entry.toJSON() : undefined;\r\n data[\"user\"] = this.user ? this.user.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IWorkLogEntryUser {\r\n workLogEntryId?: string;\r\n userId?: string;\r\n entry?: WorkLogEntry | undefined;\r\n user?: ApplicationUser | undefined;\r\n}\r\n\r\nexport class WorkLogEntryFile implements IWorkLogEntryFile {\r\n workLogEntryId?: string;\r\n projectFileId?: string;\r\n entry?: WorkLogEntry | undefined;\r\n file?: ProjectFile | undefined;\r\n\r\n constructor(data?: IWorkLogEntryFile) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.workLogEntryId = _data[\"workLogEntryId\"];\r\n this.projectFileId = _data[\"projectFileId\"];\r\n this.entry = _data[\"entry\"] ? WorkLogEntry.fromJS(_data[\"entry\"]) : undefined;\r\n this.file = _data[\"file\"] ? ProjectFile.fromJS(_data[\"file\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): WorkLogEntryFile {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new WorkLogEntryFile();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"workLogEntryId\"] = this.workLogEntryId;\r\n data[\"projectFileId\"] = this.projectFileId;\r\n data[\"entry\"] = this.entry ? this.entry.toJSON() : undefined;\r\n data[\"file\"] = this.file ? this.file.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IWorkLogEntryFile {\r\n workLogEntryId?: string;\r\n projectFileId?: string;\r\n entry?: WorkLogEntry | undefined;\r\n file?: ProjectFile | undefined;\r\n}\r\n\r\nexport class CreateTaskCommandResult implements ICreateTaskCommandResult {\r\n\r\n constructor(data?: ICreateTaskCommandResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n }\r\n\r\n static fromJS(data: any): CreateTaskCommandResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateTaskCommandResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateTaskCommandResult {\r\n}\r\n\r\nexport class CreateTaskCommand implements ICreateTaskCommand {\r\n name?: string | undefined;\r\n projectId?: string | undefined;\r\n statusId?: string | undefined;\r\n\r\n constructor(data?: ICreateTaskCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.projectId = _data[\"projectId\"];\r\n this.statusId = _data[\"statusId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateTaskCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateTaskCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"projectId\"] = this.projectId;\r\n data[\"statusId\"] = this.statusId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateTaskCommand {\r\n name?: string | undefined;\r\n projectId?: string | undefined;\r\n statusId?: string | undefined;\r\n}\r\n\r\nexport class GetTaskStatusesResult implements IGetTaskStatusesResult {\r\n statuses?: TaskStatus[] | undefined;\r\n\r\n constructor(data?: IGetTaskStatusesResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"statuses\"])) {\r\n this.statuses = [] as any;\r\n for (let item of _data[\"statuses\"])\r\n this.statuses!.push(TaskStatus.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetTaskStatusesResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetTaskStatusesResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.statuses)) {\r\n data[\"statuses\"] = [];\r\n for (let item of this.statuses)\r\n data[\"statuses\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetTaskStatusesResult {\r\n statuses?: TaskStatus[] | undefined;\r\n}\r\n\r\nexport class CreateTenantResult implements ICreateTenantResult {\r\n id?: string;\r\n name?: string | undefined;\r\n\r\n constructor(data?: ICreateTenantResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateTenantResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateTenantResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateTenantResult {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport class CreateTenantRequest implements ICreateTenantRequest {\r\n name?: string | undefined;\r\n\r\n constructor(data?: ICreateTenantRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateTenantRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateTenantRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateTenantRequest {\r\n name?: string | undefined;\r\n}\r\n\r\nexport class GetUserResult implements IGetUserResult {\r\n id?: string;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n isActive?: boolean;\r\n emailConfirmed?: boolean;\r\n isAdmin?: boolean;\r\n\r\n constructor(data?: IGetUserResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.isActive = _data[\"isActive\"];\r\n this.emailConfirmed = _data[\"emailConfirmed\"];\r\n this.isAdmin = _data[\"isAdmin\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetUserResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetUserResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"isActive\"] = this.isActive;\r\n data[\"emailConfirmed\"] = this.emailConfirmed;\r\n data[\"isAdmin\"] = this.isAdmin;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetUserResult {\r\n id?: string;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n isActive?: boolean;\r\n emailConfirmed?: boolean;\r\n isAdmin?: boolean;\r\n}\r\n\r\nexport class UpdateUserResult implements IUpdateUserResult {\r\n\r\n constructor(data?: IUpdateUserResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n }\r\n\r\n static fromJS(data: any): UpdateUserResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateUserResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateUserResult {\r\n}\r\n\r\nexport class UpdateUserRequest implements IUpdateUserRequest {\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n isAdmin?: boolean;\r\n\r\n constructor(data?: IUpdateUserRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.isAdmin = _data[\"isAdmin\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateUserRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateUserRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"isAdmin\"] = this.isAdmin;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateUserRequest {\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n isAdmin?: boolean;\r\n}\r\n\r\nexport class GetUsersResult implements IGetUsersResult {\r\n users?: User[] | undefined;\r\n\r\n constructor(data?: IGetUsersResult) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"users\"])) {\r\n this.users = [] as any;\r\n for (let item of _data[\"users\"])\r\n this.users!.push(User.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetUsersResult {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetUsersResult();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.users)) {\r\n data[\"users\"] = [];\r\n for (let item of this.users)\r\n data[\"users\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetUsersResult {\r\n users?: User[] | undefined;\r\n}\r\n\r\nexport class User implements IUser {\r\n id?: string;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n isActive?: boolean;\r\n emailConfirmed?: boolean;\r\n\r\n constructor(data?: IUser) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.isActive = _data[\"isActive\"];\r\n this.emailConfirmed = _data[\"emailConfirmed\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): User {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new User();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"isActive\"] = this.isActive;\r\n data[\"emailConfirmed\"] = this.emailConfirmed;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUser {\r\n id?: string;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n emailAddress?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n isActive?: boolean;\r\n emailConfirmed?: boolean;\r\n}\r\n\r\nexport class InviteUserResponse implements IInviteUserResponse {\r\n error?: boolean;\r\n\r\n constructor(data?: IInviteUserResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.error = _data[\"error\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): InviteUserResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new InviteUserResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"error\"] = this.error;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IInviteUserResponse {\r\n error?: boolean;\r\n}\r\n\r\nexport class InviteUserRequest implements IInviteUserRequest {\r\n tenantId!: string;\r\n firstName!: string;\r\n lastName!: string;\r\n emailAddress!: string;\r\n phoneNumber?: string | undefined;\r\n\r\n constructor(data?: IInviteUserRequest) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.tenantId = _data[\"tenantId\"];\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n this.emailAddress = _data[\"emailAddress\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): InviteUserRequest {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new InviteUserRequest();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"tenantId\"] = this.tenantId;\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IInviteUserRequest {\r\n tenantId: string;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n phoneNumber?: string | undefined;\r\n}\r\n\r\nexport class WorkLogEntrySummary implements IWorkLogEntrySummary {\r\n attachments?: FileSummary[] | undefined;\r\n id?: string;\r\n date?: Date;\r\n startTime?: string;\r\n endTime?: string;\r\n details?: string | undefined;\r\n users?: UserSummary[] | undefined;\r\n\r\n constructor(data?: IWorkLogEntrySummary) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"attachments\"])) {\r\n this.attachments = [] as any;\r\n for (let item of _data[\"attachments\"])\r\n this.attachments!.push(FileSummary.fromJS(item));\r\n }\r\n this.id = _data[\"id\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.startTime = _data[\"startTime\"];\r\n this.endTime = _data[\"endTime\"];\r\n this.details = _data[\"details\"];\r\n if (Array.isArray(_data[\"users\"])) {\r\n this.users = [] as any;\r\n for (let item of _data[\"users\"])\r\n this.users!.push(UserSummary.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): WorkLogEntrySummary {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new WorkLogEntrySummary();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.attachments)) {\r\n data[\"attachments\"] = [];\r\n for (let item of this.attachments)\r\n data[\"attachments\"].push(item.toJSON());\r\n }\r\n data[\"id\"] = this.id;\r\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\r\n data[\"startTime\"] = this.startTime;\r\n data[\"endTime\"] = this.endTime;\r\n data[\"details\"] = this.details;\r\n if (Array.isArray(this.users)) {\r\n data[\"users\"] = [];\r\n for (let item of this.users)\r\n data[\"users\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IWorkLogEntrySummary {\r\n attachments?: FileSummary[] | undefined;\r\n id?: string;\r\n date?: Date;\r\n startTime?: string;\r\n endTime?: string;\r\n details?: string | undefined;\r\n users?: UserSummary[] | undefined;\r\n}\r\n\r\nexport class FileSummary implements IFileSummary {\r\n id?: string;\r\n fileName?: string | undefined;\r\n url?: string | undefined;\r\n\r\n constructor(data?: IFileSummary) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.fileName = _data[\"fileName\"];\r\n this.url = _data[\"url\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): FileSummary {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new FileSummary();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"fileName\"] = this.fileName;\r\n data[\"url\"] = this.url;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IFileSummary {\r\n id?: string;\r\n fileName?: string | undefined;\r\n url?: string | undefined;\r\n}\r\n\r\nexport class GetWorkDiaryEntryResponse implements IGetWorkDiaryEntryResponse {\r\n id?: string;\r\n users?: UserDto[] | undefined;\r\n projectId?: string;\r\n date?: Date;\r\n details?: string | undefined;\r\n startTime?: string;\r\n endTime?: string;\r\n\r\n constructor(data?: IGetWorkDiaryEntryResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n if (Array.isArray(_data[\"users\"])) {\r\n this.users = [] as any;\r\n for (let item of _data[\"users\"])\r\n this.users!.push(UserDto.fromJS(item));\r\n }\r\n this.projectId = _data[\"projectId\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.details = _data[\"details\"];\r\n this.startTime = _data[\"startTime\"];\r\n this.endTime = _data[\"endTime\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetWorkDiaryEntryResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetWorkDiaryEntryResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n if (Array.isArray(this.users)) {\r\n data[\"users\"] = [];\r\n for (let item of this.users)\r\n data[\"users\"].push(item.toJSON());\r\n }\r\n data[\"projectId\"] = this.projectId;\r\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\r\n data[\"details\"] = this.details;\r\n data[\"startTime\"] = this.startTime;\r\n data[\"endTime\"] = this.endTime;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGetWorkDiaryEntryResponse {\r\n id?: string;\r\n users?: UserDto[] | undefined;\r\n projectId?: string;\r\n date?: Date;\r\n details?: string | undefined;\r\n startTime?: string;\r\n endTime?: string;\r\n}\r\n\r\nexport class UserDto implements IUserDto {\r\n id?: string;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n\r\n constructor(data?: IUserDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.firstName = _data[\"firstName\"];\r\n this.lastName = _data[\"lastName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"firstName\"] = this.firstName;\r\n data[\"lastName\"] = this.lastName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserDto {\r\n id?: string;\r\n firstName?: string | undefined;\r\n lastName?: string | undefined;\r\n}\r\n\r\nexport class CreateWorkLogEntryResponse implements ICreateWorkLogEntryResponse {\r\n entry?: WorkLogEntry | undefined;\r\n\r\n constructor(data?: ICreateWorkLogEntryResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.entry = _data[\"entry\"] ? WorkLogEntry.fromJS(_data[\"entry\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateWorkLogEntryResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateWorkLogEntryResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"entry\"] = this.entry ? this.entry.toJSON() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateWorkLogEntryResponse {\r\n entry?: WorkLogEntry | undefined;\r\n}\r\n\r\nexport class UpdateWorkDiaryEntryResponse implements IUpdateWorkDiaryEntryResponse {\r\n\r\n constructor(data?: IUpdateWorkDiaryEntryResponse) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n }\r\n\r\n static fromJS(data: any): UpdateWorkDiaryEntryResponse {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateWorkDiaryEntryResponse();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateWorkDiaryEntryResponse {\r\n}\r\n\r\nfunction formatDate(d: Date) {\r\n return d.getFullYear() + '-' + \r\n (d.getMonth() < 9 ? ('0' + (d.getMonth()+1)) : (d.getMonth()+1)) + '-' +\r\n (d.getDate() < 10 ? ('0' + d.getDate()) : d.getDate());\r\n}\r\n\r\nexport interface FileParameter {\r\n data: any;\r\n fileName: string;\r\n}\r\n\r\nexport interface FileResponse {\r\n data: Blob;\r\n status: number;\r\n fileName?: string;\r\n headers?: { [name: string]: any };\r\n}\r\n\r\nexport class SwaggerException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isSwaggerException = true;\r\n\r\n static isSwaggerException(obj: any): obj is SwaggerException {\r\n return obj.isSwaggerException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new SwaggerException(message, status, response, headers, null);\r\n}\r\n\r\nfunction isAxiosError(obj: any | undefined): obj is AxiosError {\r\n return obj && obj.isAxiosError === true;\r\n}","import React, {useState} from 'react';\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {ProjectFileDirectoriesService, ProjectFilesService} from \"../../api/ApiService\";\r\n\r\n\r\nconst filesService = new ProjectFilesService();\r\nconst directoryService = new ProjectFileDirectoriesService();\r\n\r\nexport default function DeleteConfirmationDialog({isOpen, projectId, files, directories, onClose}) \r\n{\r\n let [loading, setLoading] = useState(false);\r\n const handleCancel = () => {\r\n onClose(false);\r\n };\r\n \r\n const handleConfirm = async () => {\r\n setLoading(true);\r\n \r\n await Promise.all(directories.map(d => {\r\n return directoryService.deleteDirectory(d.id, projectId);\r\n }));\r\n \r\n await filesService.deleteFiles(projectId, { fileIds: files.map(i => i.id)});\r\n setLoading(false);\r\n onClose(true);\r\n };\r\n \r\n return (\r\n \r\n Are you sure you want to delete these files?\r\n You won't be able to recover these files if you proceed.\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React, {useState} from 'react';\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {ProjectFileDirectoriesService } from \"../../api/ApiService\";\r\nimport TextField from \"@mui/material/TextField\";\r\n\r\nconst directoryService = new ProjectFileDirectoriesService();\r\n\r\nexport default function CreateDirectoryDialog({isOpen, projectId, directoryId, onClose}) \r\n{\r\n let [loading, setLoading] = useState(false);\r\n let [directoryName, setDirectoryName] = useState('');\r\n const handleCancel = () => {\r\n onClose(false);\r\n };\r\n \r\n const handleConfirm = async () => {\r\n setLoading(true);\r\n \r\n await directoryService.createDirectory(projectId, directoryId, directoryName);\r\n \r\n setLoading(false);\r\n onClose(true);\r\n };\r\n \r\n return (\r\n \r\n Create New Directory\r\n \r\n setDirectoryName(e.target.value)}\r\n value={directoryName}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React, {Fragment} from 'react';\r\n\r\nexport default function ProjectDirectorySelectorOption({directories, directory, depth}) {\r\n const children = directories.filter(i => i.parentId === directory.id);\r\n return (\r\n \r\n \r\n {children.map(i => (\r\n \r\n ))}\r\n \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport InputLabel from \"@mui/material/InputLabel\";\r\nimport Select from \"@mui/material/Select\";\r\nimport ProjectDirectorySelectorOption from \"./ProjectDirectorySelectorOption\";\r\nimport {ProjectFileDirectoriesService} from \"../../api/ApiService\";\r\n\r\nconst directoryService = new ProjectFileDirectoriesService();\r\nexport default function ProjectDirectorySelector({ projectId, selectedDirectoryId, onSelectedDirectoryChanged})\r\n{\r\n let [directory, setDirectories] = useState([]);\r\n\r\n useEffect(() => {\r\n const loadData = async() => {\r\n let directoriesRequest = await directoryService.getDirectories(projectId);\r\n setDirectories(directoriesRequest.directories);\r\n };\r\n\r\n loadData();\r\n }, [projectId]);\r\n\r\n const topLevelDirectories = directory.filter(i => !i.parentId);\r\n\r\n const handleChange = (event) => {\r\n console.log(event.target);\r\n onSelectedDirectoryChanged(event.target.value);\r\n }\r\n \r\n return (\r\n \r\n Directory\r\n \r\n \r\n {topLevelDirectories.map(item => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\n","import React, {useState} from 'react';\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {MoveFilesRequest, ProjectFilesService} from \"../../api/ApiService\";\r\nimport ProjectDirectorySelector from \"../../components/projects/ProjectDirectorySelector\";\r\n\r\nconst projectFileService = new ProjectFilesService();\r\n\r\nexport default function MoveDialog({isOpen, projectId, directories, files, onClose}) \r\n{\r\n let [loading, setLoading] = useState(false);\r\n let [directory, setDirectory] = useState('');\r\n const handleCancel = () => {\r\n onClose(false);\r\n };\r\n \r\n const handleConfirm = async () => {\r\n setLoading(true);\r\n let directoryIds = directories.map(d => d.id);\r\n let fileIds = files.map(f => f.id);\r\n await projectFileService.move(projectId, new MoveFilesRequest({ directories: directoryIds, files: fileIds, projectId: projectId, targetDirectory: directory}));\r\n //await directoryService.createDirectory(projectId, directoryId, directoryName);\r\n \r\n setLoading(false);\r\n onClose(true);\r\n };\r\n \r\n const handleDirectoryChange = (directoryId) => {\r\n setDirectory(directoryId);\r\n }\r\n \r\n return (\r\n \r\n Move Selected To:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React, {Fragment, useEffect, useState} from 'react';\r\nimport {Link as RouterLink, useParams} from \"react-router-dom\";\r\nimport List from \"@mui/material/List\";\r\nimport ListItem from \"@mui/material/ListItem\";\r\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport FolderIcon from '@mui/icons-material/Folder';\r\nimport DescriptionOutlinedIcon from '@mui/icons-material/DescriptionOutlined';\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Menu, MenuItem, TableCell, Tooltip} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport {ProjectFileDirectoriesService, ProjectFilesService, ProjectsService} from \"../../api/ApiService\";\r\nimport RefreshIcon from '@mui/icons-material/Refresh';\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\r\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\r\nimport DeleteConfirmationDialog from \"./DeleteConfirmationDialog\";\r\nimport Button from \"@mui/material/Button\";\r\nimport CreateDirectoryDialog from \"./CreateDirectoryDialog\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\r\nimport StarIcon from '@mui/icons-material/Star';\r\nimport MoveDialog from \"./MoveDialog\";\r\n\r\nconst filesService = new ProjectFilesService();\r\nconst directoryService = new ProjectFileDirectoriesService();\r\nexport const ProjectFilesPage = () => {\r\n let { projectId } = useParams();\r\n\r\n let [project, setProject] = useState({});\r\n let [directories, setDirectories] = useState([]);\r\n let [currentDirectoryId, setCurrentDirectoryId] = useState(null);\r\n let [currentDirectoryFiles, setCurrentDirectoryFiles] = useState([]); \r\n let [deleteConfirmationDialogOpen, setDeleteConfirmationDialogOpen] = useState(false);\r\n let [createDirectoryDialogOpen, setCreateDirectoryDialogOpen] = useState(false);\r\n let [selectAllToggle, setSelectAllToggle] = useState(false);\r\n let [moveDialogOpen, setMoveDialogOpen] = useState(false);\r\n \r\n useEffect(() => {\r\n const loadData = async() => {\r\n let projectRequest = new ProjectsService().getProject(projectId);\r\n let directoriesRequest = directoryService.getDirectories(projectId);\r\n let filesRequest = filesService.getFiles(projectId);\r\n let all = await Promise.all([projectRequest, directoriesRequest, filesRequest]);\r\n setProject(all[0]);\r\n setDirectories(all[1].directories.map(i => {\r\n i.selected = false;\r\n return i;\r\n }));\r\n setCurrentDirectoryFiles(all[2].map(i => {\r\n i.selected = false;\r\n return i;\r\n }));\r\n };\r\n \r\n loadData();\r\n }, [projectId]);\r\n \r\n let handleChangeDirectory = async (directoryId) => {\r\n if(directoryId !== currentDirectoryId) {\r\n setDirectories(prevState => {\r\n return prevState.map(i => {\r\n i.selected = false;\r\n return i;\r\n })\r\n })\r\n }\r\n setCurrentDirectoryId(directoryId);\r\n let response = await filesService.getFiles(projectId, directoryId);\r\n \r\n function stripExcess(list) {\r\n if(!list || list.length === 0) return;\r\n //remove file extensions\r\n let listNoExtensions = list.map(i => {\r\n return i.substr(0, i.lastIndexOf('.'));\r\n });\r\n \r\n let shortestStringLength = list[0].length;\r\n let longestStringLength = 0;\r\n\r\n listNoExtensions.forEach(i => {\r\n if(i.length < shortestStringLength) shortestStringLength = i.length;\r\n if(i.length > longestStringLength) longestStringLength = i.length;\r\n });\r\n \r\n function charToStrip(l) \r\n {\r\n let charactersToStripAtStart = 0;\r\n let same = true;\r\n for(let i = 0; i < shortestStringLength && same === true; i++) {\r\n let character = l[0][i];\r\n for(let j = 1; j < l.length; j++) {\r\n if(character !== l[j][i]) {\r\n same = false;\r\n break;\r\n }\r\n }\r\n if(same === true) charactersToStripAtStart += 1;\r\n }\r\n return charactersToStripAtStart;\r\n }\r\n \r\n let charToStringAtStart = charToStrip(listNoExtensions);\r\n let charToStripAtEnd = charToStrip(listNoExtensions.map(i => i.split(\"\").reverse().join(\"\")));\r\n \r\n let listRemovedLastChars = listNoExtensions.map(i => i.split(\"\").reverse().join(\"\")).map(i => i.substr(charToStripAtEnd)).map(i => i.split(\"\").reverse().join(\"\"));\r\n return listRemovedLastChars.map(i => i.substr(charToStringAtStart));\r\n }\r\n \r\n let shortFileNames = stripExcess(response.map(i => i.fileName));\r\n \r\n response = response.map((i, j) => {\r\n i.shortFileName = shortFileNames[j];\r\n return i;\r\n });\r\n \r\n setCurrentDirectoryFiles(response.map(i => {\r\n i.selected = false;\r\n return i;\r\n }));\r\n \r\n console.log(stripExcess(response.map(i => i.fileName)));\r\n \r\n setSelectAllToggle(false);\r\n\r\n };\r\n \r\n let parentDirectoryId = null;\r\n let currentDirectory = directories.filter(i => i.id === currentDirectoryId);\r\n if(currentDirectory.length === 1) {\r\n parentDirectoryId = currentDirectory[0].parentId;\r\n currentDirectoryId = currentDirectory[0].id;\r\n }\r\n\r\n let handleFileSelected = (fileId) => {\r\n setCurrentDirectoryFiles(prevState => {\r\n return prevState.map(i => {\r\n if(i.id === fileId) i.selected = !i.selected;\r\n return i;\r\n }); \r\n }\r\n )\r\n };\r\n\r\n let handleDirectorySelected = (directoryId) => {\r\n setDirectories(prevState => {\r\n return prevState.map(i => {\r\n if(i.id === directoryId) i.selected = !i.selected;\r\n return i;\r\n });\r\n }\r\n )\r\n };\r\n \r\n let handleSelectAllToggle = () => {\r\n if(!selectAllToggle) {\r\n setCurrentDirectoryFiles(prevState => {\r\n return prevState.map(i => {\r\n i.selected = true;\r\n return i;\r\n });\r\n }\r\n )\r\n\r\n setDirectories(prevState => {\r\n return prevState.map(i => {\r\n i.selected = true;\r\n return i;\r\n });\r\n }\r\n )\r\n \r\n setSelectAllToggle(true);\r\n } else {\r\n setCurrentDirectoryFiles(prevState => {\r\n return prevState.map(i => {\r\n i.selected = false;\r\n return i;\r\n });\r\n }\r\n )\r\n\r\n setDirectories(prevState => {\r\n return prevState.map(i => {\r\n i.selected = false;\r\n return i;\r\n });\r\n }\r\n )\r\n\r\n setSelectAllToggle(false);\r\n }\r\n \r\n }\r\n \r\n let handleRefresh = () => {\r\n handleChangeDirectory(currentDirectoryId);\r\n refreshDirectories();\r\n };\r\n \r\n let handleDelete = () => {\r\n setDeleteConfirmationDialogOpen(true);\r\n }\r\n \r\n let handleDeleteConfirmationClosed = (deleted) => {\r\n setDeleteConfirmationDialogOpen(false);\r\n if(!deleted) return;\r\n handleRefresh();\r\n };\r\n\r\n let refreshDirectories = async () => {\r\n let directoriesRequest = await directoryService.getDirectories(projectId);\r\n setDirectories(directoriesRequest.directories.map(i => { i.selected = false; return i}))\r\n };\r\n\r\n let handleNavigateUpDirectory = async () => {\r\n handleChangeDirectory(parentDirectoryId);\r\n };\r\n \r\n let handleUpload = async (files) => {\r\n await Promise.all(Array.from(files).map(f => {\r\n return filesService.uploadFile(projectId, currentDirectoryId, true, {data: f, fileName: f.name});\r\n }));\r\n handleRefresh();\r\n };\r\n\r\n let handleCreateDirectory = () => {\r\n setCreateDirectoryDialogOpen(true);\r\n }\r\n\r\n let handleCreateDirectoryClosed = () => {\r\n setCreateDirectoryDialogOpen(false);\r\n handleRefresh();\r\n };\r\n \r\n const handleMove = () => {\r\n setMoveDialogOpen(true);\r\n }\r\n\r\n const handleMoveClosed = () => {\r\n setMoveDialogOpen(false);\r\n handleRefresh();\r\n }\r\n \r\n const handleSetFabDirectory = async (directoryId) => {\r\n let pfd = new ProjectFileDirectoriesService();\r\n await pfd.setCurrentFabricationDrawingDirectory(projectId, directoryId);\r\n setProject(prevState => {\r\n return { ...prevState, currentFabricationDrawingDirectoryId: directoryId};\r\n });\r\n \r\n }\r\n \r\n return ( \r\n \r\n \r\n \r\n \r\n Home\r\n \r\n \r\n Projects\r\n \r\n \r\n JB{project.number} - {project.name}\r\n \r\n Files\r\n \r\n \r\n \r\n {project.name}\r\n FILES\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i.parentId === currentDirectoryId)}\r\n files={currentDirectoryFiles}\r\n onFileSelected={handleFileSelected}\r\n onDirectorySelected={handleDirectorySelected}\r\n onDirectoryChange={handleChangeDirectory}\r\n onUpload={handleUpload}\r\n onSelectAllToggle={handleSelectAllToggle}\r\n onSetFabDirectory={handleSetFabDirectory}\r\n selectAllToggle={selectAllToggle}\r\n project={project}\r\n />\r\n \r\n i.selected)}\r\n files={currentDirectoryFiles.filter(i => i.selected)}\r\n isOpen={deleteConfirmationDialogOpen}\r\n projectId={projectId}\r\n onClose={handleDeleteConfirmationClosed}\r\n />\r\n \r\n i.selected)}\r\n files={currentDirectoryFiles.filter(i => i.selected)}\r\n isOpen={moveDialogOpen}\r\n />\r\n \r\n )\r\n};\r\n\r\nconst useStylesFileActionPanel = makeStyles({\r\n root: {\r\n display: 'flex',\r\n 'justify-content': 'flex-end'\r\n }\r\n})\r\n\r\nfunction FileActionPanel({onRefresh, onDelete, onNavigateUpDirectory, onUpload, onCreateDirectory, onMove}) \r\n{\r\n const classes = useStylesFileActionPanel();\r\n \r\n let fileInput = React.createRef();\r\n\r\n let handleUploadClick = () => {\r\n fileInput.current.click()\r\n };\r\n\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleMove = () => {\r\n handleClose();\r\n onMove();\r\n }\r\n\r\n const handleDelete = () => {\r\n handleClose();\r\n onDelete();\r\n }\r\n\r\n const handleCreateDirectory = () => {\r\n handleClose();\r\n onCreateDirectory();\r\n }\r\n \r\n return (\r\n \r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n onUpload(e.target.files)} hidden/>\r\n \r\n \r\n Move Selected\r\n Delete Selected\r\n Create Directory\r\n \r\n \r\n );\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n tableLayout: 'fixed',\r\n width: '100%',\r\n \r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n },\r\n \r\n cells: {\r\n whiteSpace: \"nowrap\",\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n }\r\n});\r\n\r\nfunction FilePanel({directories, files, onFileSelected, onDirectorySelected, onDirectoryChange, project, onSelectAllToggle, selectAllToggle, onSetFabDirectory}) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n Type\r\n By\r\n Modified\r\n \r\n \r\n \r\n \r\n {directories.map(d => onDirectorySelected(d.id)} onDirectoryChange={() => onDirectoryChange(d.id)} onSetFabDirectory={onSetFabDirectory}/>)}\r\n {files.map(f => onFileSelected(f.id)} project={project} />)}\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\n\r\nfunction FilePanelDirectoryLine({directory, onDirectorySelected, onDirectoryChange, onSetFabDirectory, currentFabDirectoryId}) {\r\n const classes = useStyles();\r\n let isCurrentFabDirectory = false;\r\n if(currentFabDirectoryId) {\r\n if(currentFabDirectoryId === directory.id) isCurrentFabDirectory = true;\r\n }\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n \r\n const handleDirectoryClick = () => {\r\n if(!!anchorEl) return;\r\n onDirectoryChange(directory.id);\r\n } \r\n \r\n return (\r\n \r\n \r\n { e.stopPropagation()}} onChange={onDirectorySelected}/>\r\n \r\n \r\n {directory.name}   {isCurrentFabDirectory ? : ''}\r\n \r\n Robert O'Reilly\r\n 1 min ago\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction FilePanelFileLine({file, onFileSelected, project}) {\r\n let periodPoint = file.fileName.lastIndexOf('.');\r\n let fileExtension = file.fileName.substr(periodPoint + 1, file.fileName.length - periodPoint + 1).toUpperCase();\r\n \r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n \r\n const classes = useStyles();\r\n const link = \"/api/projects/\" + project.id + \"/files/download/\" + file.id;\r\n return (\r\n Boolean(anchorEl) ? null : window.open(link, '_blank')}>\r\n e.stopPropagation()}/>\r\n \r\n {file.fileName}\r\n {fileExtension}\r\n Robert O'Reilly\r\n 1 min ago\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction DirectoryPanelLine({ directory, selectedDirectory, onChangeDirectory, currentFabDirectoryId}) { \r\n let isCurrentFabDirectory = false;\r\n if(currentFabDirectoryId) {\r\n if(currentFabDirectoryId === directory.id) isCurrentFabDirectory = true;\r\n }\r\n return (\r\n \r\n onChangeDirectory(directory.id)} selected={directory.id === selectedDirectory} style={{paddingLeft: 8*directory.depth}}>\r\n \r\n \r\n \r\n {directory.name}  \r\n \r\n {isCurrentFabDirectory ? : ''}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction DirectoryPanel({ directories, selectedDirectory, onChangeDirectory, project}) {\r\n \r\n let homeDirectory = {\r\n id: null,\r\n name: project.name + ' Files',\r\n parentId: null,\r\n depth: 0\r\n };\r\n\r\n let dirs = [homeDirectory, ...sortHeirarchyWithDepth(directories)];\r\n let dirElements = dirs.map(d => )\r\n return (\r\n \r\n {dirElements}\r\n \r\n )\r\n}\r\n\r\nfunction sortHeirarchyWithDepth(items, startDepth = 1) {\r\n let sorted = [];\r\n \r\n function addDepth(arr, depth = 0) {\r\n arr.forEach(obj => {\r\n obj.depth = depth\r\n sorted.push(obj);\r\n addDepth(items.filter(i => i.parentId === obj.id), depth + 1)\r\n })\r\n }\r\n \r\n addDepth(items.filter(i => i.parentId === null), startDepth);\r\n \r\n return sorted;\r\n}\r\n","import React from 'react';\r\n\r\nconst classes = {\r\n root: {\r\n width: '100%',\r\n minWidth: '150px',\r\n borderRadius: '8px',\r\n overflow: 'hidden'\r\n }\r\n}\r\n\r\nexport default function StatusBar({statuses, total}) {\r\n statuses = [\r\n { count: 5, colour: '#B794F4', status: 'Approved'},\r\n { count: 10, colour: '#63B3ED', status: 'Fabricated'},\r\n { count: 15, colour: '#4FD1C5', status: 'On Site'},\r\n ]\r\n total = 30;\r\n return (\r\n
\r\n {statuses.map(status => (\r\n \r\n ))}\r\n
\r\n )\r\n}\r\n\r\nfunction StatusBarItem({status, total}) {\r\n let width = (status.count / total * 100) + '%';\r\n let styles = {\r\n width: width,\r\n backgroundColor: status.colour,\r\n float: 'left',\r\n minWidth: width,\r\n height: '16px'\r\n };\r\n return (\r\n
\r\n )\r\n}","import React from \"react\";\r\nimport styles from './PartsList.module.css'\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\n\r\nexport default function PartsListItemStatusLine({partStatusLine}) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {partStatusLine.statusCode}\r\n {partStatusLine.qty}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React from \"react\";\r\nimport PartsListItemStatusLine from \"./PartsListItemStatusLine\";\r\nimport styles from './PartsList.module.css'\r\nexport default function PartsListItemStatus({partStatus}) {\r\n let statusLines = partStatus.map(s => );\r\n return (\r\n
\r\n {statusLines}\r\n
\r\n )\r\n}","import React, {Fragment} from \"react\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport StatusBar from \"../../components/parts/StatusBar\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport PartsListItemStatus from \"./PartsListItemStatus\";\r\nimport styles from './PartsList.module.css';\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nexport default function PartsListItem({part, onToggleStatusLine}) {\r\n return (\r\n \r\n onToggleStatusLine(part.id)}>\r\n \r\n \r\n \r\n \r\n \r\n {part.mark.toUpperCase()}\r\n \r\n \r\n {part.mark.toUpperCase()}\r\n \r\n {part.materialType && part.materialType.name}\r\n {part.material && part.material.code}\r\n \r\n \r\n \r\n {part.qty}\r\n {part.length} mm\r\n {part.weight} kg\r\n \r\n \r\n \r\n \r\n \r\n \r\n {part.statusLineOpen && }\r\n \r\n)\r\n}","import React from 'react';\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport PartsListItem from \"./PartsListItem\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\n\r\nexport default function PartsLists({ parts, onToggleStatusLine }){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Part Mark\r\n Files\r\n Material\r\n Profile\r\n Status\r\n Qty\r\n Length\r\n Weight\r\n \r\n \r\n \r\n \r\n {parts.map((row) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n )\r\n} ","import React, {useCallback, useEffect, useState} from 'react';\r\nimport {Link as RouterLink, useParams} from \"react-router-dom\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport PartsList from \"./PartsList\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {ProjectPartsService, ProjectsService} from \"../../api/ApiService\";\r\n\r\nlet projectService = new ProjectsService();\r\n\r\nexport default function PartsPages() {\r\n let { projectId } = useParams();\r\n let [parts, setParts] = useState([]);\r\n let importFileRef = React.createRef();\r\n let [project, setProject] = useState({ name: ''});\r\n useEffect(() => {\r\n async function loadProject() {\r\n let projectRequest = await projectService.getProject(projectId);\r\n setProject(projectRequest);\r\n }\r\n loadProject();\r\n }, [projectId]);\r\n \r\n const fetchParts = useCallback(async () => {\r\n const response = await fetch(`/api/projects/${projectId}/parts`);\r\n let data = await response.json();\r\n data = data.map(i => {\r\n i.status = [\r\n { statusCode: 'DRAFT', qty: 10 },\r\n { statusCode: 'READY TO CUT', qty: 15 },\r\n { statusCode: 'FABRICATED', qty: 5 },\r\n { statusCode: 'COMPLETE', qty: 2 },\r\n ];\r\n return i;\r\n });\r\n setParts(data);\r\n }, [projectId]);\r\n \r\n useEffect(() => {\r\n fetchParts();\r\n }, [fetchParts, projectId]);\r\n \r\n let handleImportParts = () => {\r\n importFileRef.current.click();\r\n }\r\n \r\n let handleImportPartsFile = async (event) => {\r\n let partsService = new ProjectPartsService();\r\n await partsService.import(projectId, {data: event.target.files[0], fileName: event.target.files[0].name});\r\n await fetchParts();\r\n }\r\n \r\n let handleToggleStatusLine = (id) => {\r\n setParts(prevState => {\r\n return prevState.map(i => {\r\n if(i.id === id) i.statusLineOpen = !i.statusLineOpen;\r\n return i;\r\n });\r\n }\r\n )\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n \r\n Projects\r\n \r\n \r\n JB{project.number} - {project.name}\r\n \r\n Parts\r\n \r\n \r\n \r\n \r\n {'RU Data 66 / Priority 9 - Awning'.toUpperCase()}\r\n PARTS\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\n","import React, { useEffect, useState} from 'react';\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport Table from \"@mui/material/Table\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link} from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport { useNavigate } from 'react-router';\r\nimport {UserService} from \"../api/ApiService\";\r\n\r\nconst useStyles = makeStyles({\r\n tableRow: {\r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n }\r\n});\r\n \r\nconst userService = new UserService();\r\n\r\nexport default function UsersPage(props) \r\n{\r\n let navigate = useNavigate();\r\n let [users, setUsers] = useState([]);\r\n useEffect( () => {\r\n let loadUsers = async () => {\r\n let response = await userService.getUsers(false);\r\n setUsers(response.users);\r\n };\r\n loadUsers(); \r\n }, []);\r\n\r\n let [isAdmin, setIsAdmin] = useState(false);\r\n\r\n useEffect(() => {\r\n const isAdmin = async() => {\r\n const result = await authService.userInRole('Administrator');\r\n setIsAdmin(result);\r\n };\r\n\r\n isAdmin();\r\n }, []);\r\n \r\n let navigateToUserPage = (userId) => {\r\n navigate('/users/' + userId);\r\n };\r\n \r\n const classes = useStyles();\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Users\r\n \r\n \r\n \r\n {isAdmin && }\r\n Users\r\n \r\n \r\n \r\n \r\n \r\n Name\r\n Phone Number\r\n Email\r\n Status\r\n \r\n \r\n \r\n {users.map(user =>\r\n navigateToUserPage(user.id)} className={classes.tableRow}>\r\n {user.firstName} {user.lastName}\r\n {user.phoneNumber}\r\n {user.emailAddress}\r\n {!user.isActive ? 'Disabled' : user.emailConfirmed ? 'Active' : 'Invited'}\r\n )}\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n )\r\n}","import { SimpleObservable } from 'uno-js';\r\nimport { MessageType } from './GlobalSnackbar';\r\n\r\nexport interface Snackbar {\r\n message: { messageText: string; messageType: MessageType };\r\n milliSeconds?: number;\r\n isMobile: boolean;\r\n}\r\n\r\nclass SnackbarService extends SimpleObservable {\r\n private snackbar: Snackbar = {\r\n isMobile: false,\r\n message: {\r\n messageText: '',\r\n messageType: 'info',\r\n },\r\n milliSeconds: 5000\r\n };\r\n\r\n public getSnackbar(): Snackbar {\r\n return this.snackbar;\r\n }\r\n\r\n public showSnackbar(message: string, type: MessageType = 'success', milliSeconds = 5000): Promise<{}> {\r\n return new Promise(() => {\r\n this.snackbar = {\r\n isMobile: false,\r\n message: {\r\n messageText: message,\r\n messageType: type,\r\n },\r\n milliSeconds,\r\n };\r\n this.inform();\r\n });\r\n }\r\n}\r\n\r\nexport const snackbarService = new SnackbarService();\r\n","import React, {useEffect, useState} from 'react';\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link} from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Link as RouterLink, useParams, useNavigate} from 'react-router-dom';\r\nimport {snackbarService} from \"../components/ui/snackbar/SnackbarService\";\r\nimport PageLoadingIndicator from \"../components/ui/PageLoadingIndicator\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nexport default function UserPage() \r\n{\r\n let [user, setUser] = useState({\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n phoneNumber: '',\r\n isAdmin: false\r\n });\r\n let [loading, setLoading] = useState(true);\r\n let [editing, setEditing] = useState(false);\r\n\r\n let [isAdmin, setIsAdmin] = useState(false);\r\n\r\n let {userId} = useParams();\r\n let navigate = useNavigate();\r\n \r\n useEffect(() => {\r\n const isAdmin = async() => {\r\n const result = await authService.userInRole('Administrator');\r\n setIsAdmin(result);\r\n };\r\n\r\n isAdmin();\r\n }, []);\r\n \r\n useEffect(() => {\r\n const fetchUser = async() => {\r\n const token = await authService.getAccessToken();\r\n const request = await fetch(`/api/users/${userId}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n let response = await request.json();\r\n setUser(response);\r\n setLoading(false);\r\n };\r\n\r\n fetchUser();\r\n }, [userId]);\r\n \r\n let navigateToUsersPage = () => {\r\n navigate('/users');\r\n };\r\n \r\n let save = async () => {\r\n setLoading(true);\r\n const token = await authService.getAccessToken();\r\n let headers = { 'Content-Type': 'application/json'};\r\n if(token) headers['Authorization'] = `Bearer ${token}`;\r\n const request = await fetch(`/api/users/${user.id}`, {\r\n method: 'PUT',\r\n headers: headers,\r\n body: JSON.stringify(user)\r\n });\r\n try{\r\n let responseOk = request.status === 200;\r\n if(!responseOk) {\r\n snackbarService.showSnackbar(`There was an error while updating the user`, 'error');\r\n } else {\r\n snackbarService.showSnackbar(`User's details were updated successfully`, 'success');\r\n navigateToUsersPage();\r\n }\r\n } catch {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n let disableUser = async () => {\r\n setLoading(true);\r\n const token = await authService.getAccessToken();\r\n let headers = { 'Content-Type': 'application/json'};\r\n if(token) headers['Authorization'] = `Bearer ${token}`;\r\n const request = await fetch(`/api/users/${user.id}`, {\r\n method: 'DELETE',\r\n headers: headers,\r\n });\r\n try{\r\n let responseOk = request.status === 200;\r\n if(!responseOk) {\r\n snackbarService.showSnackbar(`There was an error while disabling the user`, 'error');\r\n } else {\r\n snackbarService.showSnackbar(`The user account has been disabled`, 'success');\r\n navigateToUsersPage();\r\n }\r\n } catch {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n let enableUser = async () => {\r\n setLoading(true);\r\n const token = await authService.getAccessToken();\r\n let headers = { 'Content-Type': 'application/json'};\r\n if(token) headers['Authorization'] = `Bearer ${token}`;\r\n const request = await fetch(`/api/users/${user.id}/enable`, {\r\n method: 'POST',\r\n headers: headers,\r\n });\r\n try{\r\n let responseOk = request.status === 200;\r\n if(!responseOk) {\r\n snackbarService.showSnackbar(`There was an error enabling the user`, 'error');\r\n } else {\r\n snackbarService.showSnackbar(`The user account has been enabled`, 'success');\r\n navigateToUsersPage();\r\n }\r\n } catch {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Users\r\n {user.firstName} {user.lastName}\r\n \r\n \r\n \r\n {isAdmin && !editing && }\r\n {isAdmin && user.isActive && }\r\n {isAdmin && !user.isActive && }\r\n\r\n {user.firstName} {user.lastName}\r\n \r\n \r\n
\r\n setUser({ ...user, isAdmin: e.target.checked })} name=\"isAdministrator\" />}\r\n label=\"Administrator\"\r\n />\r\n setUser({ ...user, firstName: e.target.value })}\r\n />\r\n setUser({ ...user, lastName: e.target.value })}\r\n />\r\n setUser({ ...user, emailAddress: e.target.value })}\r\n />\r\n setUser({ ...user, phoneNumber: e.target.value })}\r\n />\r\n \r\n {editing && }\r\n \r\n
\r\n
\r\n\r\n )\r\n}","import React, {useState} from 'react';\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs } from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Link as RouterLink, useNavigate} from 'react-router-dom';\r\nimport Link from \"@mui/material/Link\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport {snackbarService} from \"../components/ui/snackbar/SnackbarService\";\r\nimport PageLoadingIndicator from \"../components/ui/PageLoadingIndicator\";\r\n\r\nexport default function InviteUserPage(props) \r\n{\r\n let [user, setUser] = useState({\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n phoneNumber: ''\r\n });\r\n let [loading, setLoading] = useState(false);\r\n let navigate = useNavigate();\r\n \r\n let navigateToUsersPage = () => {\r\n navigate('/users');\r\n };\r\n\r\n let inviteUser = async () => {\r\n setLoading(true);\r\n const token = await authService.getAccessToken();\r\n let headers = { 'Content-Type': 'application/json'};\r\n if(token) headers['Authorization'] = `Bearer ${token}`;\r\n const request = await fetch(`/api/users/invite`, {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(user)\r\n });\r\n try{\r\n let response = await request.json();\r\n if(response.error) {\r\n snackbarService.showSnackbar(`There was an error while attempting to send an invitation`, 'error');\r\n } else {\r\n snackbarService.showSnackbar(`An invitation has been sent to ${user.emailAddress}`, 'success');\r\n navigateToUsersPage();\r\n }\r\n } catch {\r\n setLoading(false);\r\n }\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Users\r\n Invite User\r\n \r\n \r\n \r\n \r\n Invite User\r\n \r\n The user will be sent an email invitation to join.\r\n They will be able to set a password once they have confirmed their email address.\r\n \r\n \r\n \r\n
\r\n setUser({ ...user, firstName: e.target.value })}\r\n />\r\n setUser({ ...user, lastName: e.target.value })}\r\n />\r\n setUser({ ...user, emailAddress: e.target.value })}\r\n />\r\n setUser({ ...user, phoneNumber: e.target.value })}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n )\r\n}","import * as React from 'react';\r\nimport {amber, blue, green, red} from \"@mui/material/colors\";\r\nimport { Snackbar, SnackbarContent, SnackbarOrigin, Theme} from \"@mui/material\";\r\nimport {CheckCircle, Close, Info, Warning, Error} from \"@mui/icons-material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport { makeStyles } from '@mui/styles'\r\nexport type MessageType = 'success' | 'error' | 'warning' | 'info';\r\n\r\nconst useStyles = makeStyles(({ palette }: Theme) => ({\r\n closeIcon: {\r\n color: '#fff !important',\r\n fontSize: '20px !important',\r\n },\r\n error: {\r\n backgroundColor: palette ? `${palette.error.main} !important` : `${red[600]} !important`,\r\n display: 'flex !important',\r\n },\r\n icon: {\r\n fontSize: '20px !important',\r\n marginRight: '15px !important',\r\n },\r\n iconMobile: {\r\n fontSize: '34px !important',\r\n marginRight: '15px !important',\r\n },\r\n info: {\r\n backgroundColor: palette ? `${palette.primary.main} !important` : `${blue[600]} !important`,\r\n display: 'flex !important',\r\n },\r\n success: {\r\n backgroundColor: `${green[600]} !important`,\r\n display: 'flex !important',\r\n },\r\n text: {\r\n alignItems: 'center',\r\n color: '#fff !important',\r\n display: 'inline-flex !important',\r\n fontSize: '18px !important',\r\n },\r\n textMobile: {\r\n color: '#fff !important',\r\n display: 'inline-flex !important',\r\n fontSize: '28px !important',\r\n },\r\n warning: {\r\n backgroundColor: `${amber[700]} !important`,\r\n display: 'flex !important',\r\n },\r\n}));\r\n\r\nexport interface GlobalSnackbarProps {\r\n message: { messageText: string; messageType: MessageType };\r\n milliSeconds: number;\r\n mobile: boolean;\r\n}\r\n\r\nexport const GlobalSnackbar: React.FunctionComponent = ({\r\n message,\r\n milliSeconds = 2500,\r\n mobile = false,\r\n}) => {\r\n // @ts-ignore\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const getIconStyle = (): string => (mobile ? classes.iconMobile : classes.icon);\r\n\r\n const getIcon = (): JSX.Element => {\r\n switch (message.messageType) {\r\n case 'info':\r\n return ;\r\n case 'warning':\r\n return ;\r\n case 'error':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n };\r\n\r\n const getStyle = (): string => {\r\n switch (message.messageType) {\r\n case 'info':\r\n return classes.info;\r\n case 'warning':\r\n return classes.warning;\r\n case 'error':\r\n return classes.error;\r\n default:\r\n return classes.success;\r\n }\r\n };\r\n\r\n const getTextStyle = (): string => (mobile ? classes.textMobile : classes.text);\r\n const onClose = (): void => setOpen(false);\r\n\r\n React.useEffect(() => {\r\n if (message && message.messageText !== '') {\r\n setOpen(true);\r\n setTimeout(() => setOpen(false), milliSeconds);\r\n }\r\n }, [message, milliSeconds]);\r\n\r\n const anchorOrigin: SnackbarOrigin = {\r\n horizontal: mobile ? 'center' : 'right',\r\n vertical: 'bottom',\r\n };\r\n\r\n return (\r\n \r\n \r\n {getIcon()} {message.messageText}\r\n \r\n }\r\n action={\r\n !mobile && (\r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { GlobalSnackbar } from './GlobalSnackbar';\r\nimport { Snackbar, snackbarService } from './SnackbarService';\r\n\r\nexport const SnackbarContainer: React.FunctionComponent = () => {\r\n const [snackbar, setSnackbar] = React.useState();\r\n\r\n const onUpdate = (): void => setSnackbar({ ...snackbarService.getSnackbar() });\r\n\r\n React.useEffect(() => {\r\n snackbarService.subscribe(onUpdate);\r\n }, []);\r\n\r\n if (!snackbar) {\r\n return null;\r\n }\r\n\r\n return ;\r\n};\r\n","import React, {useEffect, useState} from 'react';\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport Table from \"@mui/material/Table\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link, TextField} from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\r\nimport { ProjectsService } from \"../api/ApiService.ts\";\r\nimport {Search} from \"@mui/icons-material\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\n\r\nconst useStyles = makeStyles({\r\n tableRow: {\r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n }\r\n});\r\n\r\nexport default function ProjectsPage(props)\r\n{\r\n let [searchTerm, setSearchTerm] = useState('');\r\n let navigate = useNavigate();\r\n let [projects, setProjects] = useState([]);\r\n useEffect(() => {\r\n const fetchProjects = async() => {\r\n const projectService = new ProjectsService();\r\n let results = await projectService.getProjects(searchTerm);\r\n setProjects(results.projects);\r\n };\r\n fetchProjects();\r\n }, [searchTerm]);\r\n\r\n let navigateToProjectPage = (projectId) => {\r\n navigate(projectId);\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n let getProjectAddressString = (address) => {\r\n let formattedAddress = '';\r\n if(address) {\r\n if(address.line1) formattedAddress = address.line1 + ', ';\r\n if(address.line2) formattedAddress = formattedAddress + address.line2 + ', ';\r\n if(address.suburb) formattedAddress = formattedAddress + address.suburb;\r\n }\r\n return formattedAddress;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Projects\r\n \r\n \r\n \r\n \r\n Projects\r\n \r\n \r\n \r\n \r\n \r\n }} value={searchTerm} onChange={e => setSearchTerm(e.target.value)} fullWidth={true} />\r\n \r\n \r\n \r\n Number\r\n Name\r\n Address\r\n Customer\r\n Status\r\n \r\n \r\n \r\n {projects.map(project =>\r\n navigateToProjectPage(project.id)} className={classes.tableRow}>\r\n {project.number}\r\n {project.name}\r\n {getProjectAddressString(project.address)}\r\n {project.customer?.name}\r\n {project.projectStatus?.name}\r\n )}\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n )\r\n}","import React from 'react';\r\nimport TextField from '@mui/material/TextField';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\nimport LocationOnIcon from '@mui/icons-material/LocationOn';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport throttle from 'lodash/throttle';\r\n\r\nfunction loadScript(src, position, id) {\r\n if (!position) {\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.setAttribute('async', '');\r\n script.setAttribute('id', id);\r\n script.src = src;\r\n position.appendChild(script);\r\n}\r\n\r\nconst autocompleteService = { current: null };\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n color: theme.palette.text.secondary,\r\n marginRight: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport default function GoogleMaps({onChangeAddress}) {\r\n const classes = useStyles();\r\n const [value, setValue] = React.useState(null);\r\n const [inputValue, setInputValue] = React.useState('');\r\n const [options, setOptions] = React.useState([]);\r\n const loaded = React.useRef(false);\r\n\r\n if (typeof window !== 'undefined' && !loaded.current) {\r\n if (!document.querySelector('#google-maps')) {\r\n loadScript(\r\n 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAGnX_GJEzGKxrdVfKk_ik_pd6TNS39yQ0&libraries=places',\r\n document.querySelector('head'),\r\n 'google-maps',\r\n );\r\n }\r\n\r\n loaded.current = true;\r\n }\r\n\r\n const fetch = React.useMemo(\r\n () =>\r\n throttle((request, callback) => {\r\n autocompleteService.current.getPlacePredictions({...request, componentRestrictions: { country: 'au'}}, callback);\r\n }, 500),\r\n [],\r\n );\r\n\r\n React.useEffect(() => {\r\n let active = true;\r\n\r\n if (!autocompleteService.current && window.google) {\r\n autocompleteService.current = new window.google.maps.places.AutocompleteService();\r\n }\r\n if (!autocompleteService.current) {\r\n return undefined;\r\n }\r\n\r\n if (inputValue === '') {\r\n setOptions(value ? [value] : []);\r\n return undefined;\r\n }\r\n\r\n fetch({ input: inputValue }, (results) => {\r\n if (active) {\r\n let newOptions = [];\r\n\r\n if (value) {\r\n newOptions = [value];\r\n }\r\n\r\n if (results) {\r\n newOptions = [...newOptions, ...results];\r\n }\r\n\r\n setOptions(newOptions);\r\n }\r\n });\r\n\r\n return () => {\r\n active = false;\r\n };\r\n }, [value, inputValue, fetch]);\r\n\r\n function fillInAddress(value) {\r\n if(value === null) return;\r\n const geocoder = new window.google.maps.Geocoder();\r\n geocoder.geocode({ placeId: value.place_id }, (results, status) => {\r\n if (status !== \"OK\") {\r\n window.alert(\"Geocoder failed due to: \" + status);\r\n return;\r\n }\r\n let fields = [];\r\n if(results[0]) {\r\n results[0].address_components.forEach(component => {\r\n fields[component.types[0]] = component.long_name;\r\n });\r\n if(fields['street_number'] === undefined) fields['street_number'] = '';\r\n if(fields['route'] === undefined) fields['route'] = '';\r\n if(fields['locality'] === undefined) fields['locality'] = '';\r\n if(fields['postal_code'] === undefined) fields['postal_code'] = '';\r\n if(fields['administrative_area_level_1'] === undefined) fields['administrative_area_level_1'] = '';\r\n if(fields['country'] === undefined) fields['country'] = '';\r\n let addressLine1 = `${fields['street_number']} ${fields['route']}`.trim();\r\n let addressLine2 = ``;\r\n let city = `${fields['locality']}`.trim();\r\n let postCode = `${fields['postal_code']}`.trim();\r\n let state = `${fields['administrative_area_level_1']}`.trim();\r\n let country = `${fields['country']}`.trim();\r\n onChangeAddress({\r\n addressLine1,\r\n addressLine2,\r\n city,\r\n postCode,\r\n state,\r\n country\r\n });\r\n }\r\n });\r\n \r\n /*for (const component in componentForm) {\r\n document.getElementById(component).value = \"\";\r\n document.getElementById(component).disabled = false;\r\n }\r\n\r\n // Get each component of the address from the place details,\r\n // and then fill-in the corresponding field on the form.\r\n for (const component of place.address_components) {\r\n const addressType = component.types[0];\r\n\r\n if (componentForm[addressType]) {\r\n const val = component[componentForm[addressType]];\r\n document.getElementById(addressType).value = val;\r\n }\r\n }*/\r\n }\r\n\r\n return (\r\n (typeof option === 'string' ? option : option.description)}\r\n filterOptions={(x) => x}\r\n options={options}\r\n autoComplete\r\n includeInputInList\r\n filterSelectedOptions\r\n value={value}\r\n onChange={(event, newValue) => {\r\n console.log(\"onchange:\", event, newValue);\r\n setOptions(newValue ? [newValue, ...options] : options);\r\n fillInAddress(newValue);\r\n setValue(newValue);\r\n }}\r\n onInputChange={(event, newInputValue) => {\r\n setInputValue(newInputValue);\r\n }}\r\n renderInput={(params) => (\r\n \r\n )}\r\n renderOption={(props, option) => {\r\n console.log(option);\r\n const matches = option.structured_formatting.main_text_matched_substrings;\r\n const parts = parse(\r\n option.structured_formatting.main_text,\r\n matches.map((match) => [match.offset, match.offset + match.length]),\r\n );\r\n\r\n return (\r\n
  • \r\n \r\n \r\n \r\n \r\n \r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n \r\n \r\n {option.structured_formatting.secondary_text}\r\n \r\n \r\n \r\n
  • \r\n );\r\n }}\r\n />\r\n );\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport InputLabel from \"@mui/material/InputLabel\";\r\nimport Select from \"@mui/material/Select\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport authService from \"../../auth/AuthorizeService\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\n\r\nexport default function ProjectStatusSelect({onStatusChange, value, ...props}) \r\n{\r\n let [statuses, setStatuses] = useState([]);\r\n\r\n useEffect(() => {\r\n const fetchProjectStatuses = async() => {\r\n const token = await authService.getAccessToken();\r\n const request = await fetch(`/api/projects/statuses`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n let response = await request.json();\r\n setStatuses(response); \r\n };\r\n \r\n fetchProjectStatuses();\r\n }, []);\r\n \r\n return (\r\n \r\n Project Status\r\n onStatusChange(e.target.value)} value={value}\r\n >\r\n {statuses.map(item => (\r\n {item.name}\r\n ))}\r\n \r\n \r\n )\r\n}","import React, {SyntheticEvent, useEffect, useState} from 'react';\r\nimport {Avatar, TextField} from \"@mui/material\";\r\nimport {Autocomplete} from \"@mui/lab\";\r\nimport {ServiceConfiguration, User, UserService} from \"../api/ApiService\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\ntype UserSelectProps = {\r\n userId: string,\r\n label: string,\r\n onChange: (value: string | undefined) => void\r\n}\r\n\r\nlet userService = new UserService(new ServiceConfiguration());\r\n\r\nfunction UserSelect({userId, label, onChange}: UserSelectProps) {\r\n console.log(userId);\r\n let [users, setUsers] = useState([]);\r\n let [selectedUser, setSelectedUser] = useState(null);\r\n useEffect(() => {\r\n const getUsers = async () => {\r\n let usersRequest = await userService.getUsers(true);\r\n setUsers(usersRequest.users || []);\r\n }\r\n getUsers();\r\n }, []);\r\n \r\n useEffect(() => {\r\n let selectedUser = users.filter(i => i.id === userId);\r\n if(selectedUser.length === 1) {\r\n setSelectedUser(selectedUser[0]);\r\n } else {\r\n setSelectedUser(null);\r\n }\r\n }, [users, userId]);\r\n \r\n let handleChange = (event: SyntheticEvent, user: User | null | string) => {\r\n if(typeof user === \"string\") {\r\n onChange(undefined);\r\n }\r\n else { onChange(user?.id) }\r\n }\r\n \r\n const isOptionEqualToValue = (option: User, value: User) => {\r\n return option.id === value.id;\r\n }\r\n \r\n return (\r\n {\r\n \r\n if(selectedUser) {\r\n params.InputProps.startAdornment = (\r\n \r\n \r\n );\r\n }\r\n return \r\n }\r\n }\r\n onChange={handleChange} value={selectedUser}\r\n isOptionEqualToValue={isOptionEqualToValue}\r\n getOptionLabel={(option) => option.firstName + ' ' + option.lastName}\r\n renderOption={(props, option, state) => {\r\n return
  • \r\n \r\n {option.firstName} {option.lastName}\r\n
  • \r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default UserSelect;","import React, {useState} from 'react';\r\nimport {Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField, Typography} from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {ContactsService} from \"../api/ApiService\";\r\nimport {snackbarService} from \"./ui/snackbar/SnackbarService\";\r\nimport PageLoadingIndicator from \"./ui/PageLoadingIndicator\";\r\n\r\nlet contactsService = new ContactsService();\r\n\r\nexport default function ContactCreateDialog({open, onClose, isCustomer = false, isSupplier = false}) {\r\n let title = 'Contact';\r\n if(!isCustomer) title = 'Supplier';\r\n if(!isSupplier) title = 'Customer';\r\n \r\n let [error, setError] = useState(false);\r\n let [errors, setErrors] = useState([]);\r\n \r\n let [loading, setLoading] = useState(false);\r\n let [contact, setContact] = useState({\r\n name: '',\r\n businessNumber: '',\r\n taxNumber: '',\r\n emailAddress: ''\r\n })\r\n \r\n const handleClose = () => {\r\n onClose(false);\r\n }\r\n \r\n const handleSave = async () => {\r\n setError(false);\r\n setErrors([]);\r\n setLoading(true);\r\n try {\r\n let result = await contactsService.createContact({\r\n name: contact.name,\r\n businessNumber: contact.businessNumber,\r\n emailAddress: contact.emailAddress,\r\n taxNumber: contact.taxNumber,\r\n isSupplier: isSupplier,\r\n isCustomer: isCustomer\r\n });\r\n snackbarService.showSnackbar(`Contact created`, 'success');\r\n console.log(result);\r\n onClose(true, result.contact);\r\n } catch(ex) {\r\n console.log(ex);\r\n if(ex.status === 400) {\r\n setError(true);\r\n setErrors(ex.response.errors);\r\n }\r\n snackbarService.showSnackbar(`There was an error creating the contact`, 'error');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n const hasError = (field) => {\r\n return field && field.length > 0;\r\n }\r\n\r\n\r\n function handleNameChange(event) {\r\n setContact(prevState => ({...prevState, name: event.target.value}) )\r\n }\r\n\r\n function handleBusinessNumberChange(event) {\r\n setContact(prevState => ({...prevState, businessNumber: event.target.value}) )\r\n }\r\n\r\n function handleTaxNumberChange(event) {\r\n setContact(prevState => ({...prevState, taxNumber: event.target.value}) )\r\n }\r\n\r\n function handleEmailAddressChange(event) {\r\n setContact(prevState => ({...prevState, emailAddress: event.target.value}) )\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n New {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/*Contacts\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport {ContactsService} from \"../api/ApiService\";\r\nimport {Autocomplete, Box, TextField, Tooltip} from \"@mui/material\";\r\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ContactCreateDialog from \"./ClientCreateDialog\";\r\n\r\nconst contactsService = new ContactsService();\r\n\r\nexport default function ContactSelect({contact, label, onChange}) {\r\n let [contacts, setContacts] = useState([]);\r\n let [createClientDialogOpen, setCreateClientDialogOpen] = useState(false);\r\n useEffect(() => {\r\n async function loadClients() {\r\n let results = await contactsService.getContacts();\r\n setContacts(results.contacts);\r\n }\r\n loadClients(); \r\n }, []);\r\n \r\n const onValueChange = (event, value) => {\r\n onChange(value);\r\n }\r\n \r\n const createClient = () => {\r\n setCreateClientDialogOpen(true);\r\n }\r\n \r\n const handleDialogClose = (didSave, result) => {\r\n setCreateClientDialogOpen(false);\r\n if(!didSave) return;\r\n console.log(result);\r\n onChange(result);\r\n setContacts(prevState => [...prevState, result]);\r\n }\r\n \r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return }}\r\n onChange={onValueChange} \r\n renderOption={(props, option) =>
  • {option.name}
  • }\r\n getOptionLabel={(option) => option.name}\r\n isOptionEqualToValue={(option, value) => {\r\n return option.id === value.id\r\n }}\r\n freeSolo\r\n />\r\n \r\n
    \r\n \r\n \r\n )\r\n}","import React, {useState} from 'react';\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Stack} from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { Link as RouterLink,useNavigate } from 'react-router-dom';\r\nimport Link from \"@mui/material/Link\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport {snackbarService} from \"../components/ui/snackbar/SnackbarService\";\r\nimport PageLoadingIndicator from \"../components/ui/PageLoadingIndicator\";\r\nimport GoogleMaps from \"../components/ui/GoogleMapsAutoComplete\";\r\nimport ProjectStatusSelect from \"../components/projects/ProjectStatusSelect\";\r\nimport UserSelect from \"../components/UserSelect\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport {ContactType, ProjectsService} from \"../api/ApiService\";\r\nimport ContactSelect from \"../components/ContactSelect\";\r\n\r\nconst projectsService = new ProjectsService();\r\n\r\nexport default function CreateProjectPage(props) \r\n{\r\n let [error, setError] = useState(false);\r\n let [errors, setErrors] = useState([]);\r\n let [assignedUser, setAssignedUser] = useState(null);\r\n let navigate = useNavigate();\r\n let [project, setProject] = useState({\r\n name: '',\r\n statusId: '',\r\n number: ''\r\n });\r\n let [address, setAddress] = useState({\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n state: '',\r\n postCode: '',\r\n country: '',\r\n googlePlaceId: '',\r\n latitude: null,\r\n longitude: null\r\n });\r\n let [customer, setCustomer] = useState({ id: '', name: ''});\r\n let [loading, setLoading] = useState(false);\r\n let [manualAddress, setManualAddress] = useState(false);\r\n let [projectDetails, setProjectDetails] = useState('');\r\n \r\n let navigateToProjectPage = (projectId) => {\r\n console.log(projectId);\r\n navigate('/projects/' + projectId);\r\n };\r\n\r\n const handleAssignedUserChange = (userId) => {\r\n setAssignedUser(userId);\r\n }\r\n \r\n let createProject = async () => {\r\n setErrors([]);\r\n let request = {\r\n address: address,\r\n project: {\r\n ...project,\r\n assignedToUser: assignedUser ? assignedUser : null,\r\n customerId: customer?.id ? customer?.id : null,\r\n statusId: project.statusId ? project.statusId : null\r\n },\r\n details: projectDetails\r\n };\r\n setLoading(true);\r\n \r\n try {\r\n let result = await projectsService.createProject(request);\r\n snackbarService.showSnackbar(`${project.name} created`, 'success');\r\n console.log(result);\r\n navigateToProjectPage(result.id);\r\n } catch(ex) {\r\n if(ex.status === 400) {\r\n setErrors(ex.response.errors);\r\n console.dir(ex.response.errors);\r\n }\r\n console.log(ex);\r\n snackbarService.showSnackbar(`There was an error while creating the project`, 'error');\r\n setLoading(false);\r\n }\r\n }\r\n\r\n let handleChangeAddress = (address) => {\r\n setAddress(address);\r\n setManualAddress(true);\r\n };\r\n \r\n const handleCustomerChange = (value) => {\r\n console.log(value);\r\n setCustomer(value);\r\n }\r\n \r\n const hasError = (field) => {\r\n return field && field.length > 0;\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Projects\r\n Create Project\r\n \r\n \r\n \r\n Project Details\r\n \r\n \r\n JB-,\r\n }}\r\n onChange={(e) => setProject({ ...project, number: e.target.value })}\r\n />\r\n \r\n \r\n setProject({ ...project, name: e.target.value })}\r\n />\r\n \r\n \r\n setProjectDetails(e.target.value)}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setProject({ ...project, statusId: value })\r\n }} value={project.statusId}/>\r\n \r\n \r\n \r\n
    \r\n \r\n Address\r\n
    \r\n {!manualAddress && }\r\n {manualAddress && \r\n \r\n \r\n setAddress({ ...address, addressLine1: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, addressLine2: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, city: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, postCode: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, state: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, country: e.target.value })}\r\n />\r\n \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport {WorkLogService} from \"../../api/ApiService\";\r\nimport {Box, Stack} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFile\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport {ChronoUnit, LocalTime} from \"@js-joda/core\";\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport Button from \"@mui/material/Button\";\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\nlet workLogService = new WorkLogService();\r\n\r\nfunction WorkLogListEntry({entry}) {\r\n return (\r\n \r\n \r\n \r\n
    \r\n {entry.date.toDateString()}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Users\r\n {entry.users.map(i => i.firstName + ' ' + i.lastName).join(', ')}\r\n \r\n \r\n Start Time\r\n {entry.startTime ? LocalTime.parse(entry.startTime).truncatedTo(ChronoUnit.MINUTES).toString() : ''}\r\n \r\n \r\n End Time\r\n {entry.endTime ? LocalTime.parse(entry.endTime).truncatedTo(ChronoUnit.MINUTES).toString() : ''}\r\n \r\n \r\n \r\n Details \r\n {entry.details}\r\n \r\n \r\n \r\n Attachments\r\n \r\n {entry.attachments.map( i => )}\r\n \r\n \r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nfunction WorkLogListEntryAttachmentItem({file}) {\r\n let isImage = false;\r\n if (file.fileName.match(/.(jpg|jpeg|png|gif)$/i)) {\r\n isImage = true;\r\n }\r\n\r\n return (\r\n \r\n \r\n {isImage && {file.fileName}}\r\n {!isImage && }\r\n

    {file.fileName}

    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nWorkLogListEntry.propTypes = {};\r\nexport default function WorkLogList({projectId}) {\r\n let [entries, setEntries] = useState([]);\r\n \r\n useEffect(() => {\r\n loadWorkListEntries();\r\n \r\n async function loadWorkListEntries() {\r\n let results = await workLogService.getWorkLogEntries(projectId);\r\n console.log(results);\r\n setEntries(results);\r\n }\r\n }, [projectId]);\r\n \r\n return (\r\n \r\n {entries.length > 0 && entries.map(i => )}\r\n {entries.length === 0 && There are no diary entries yet. Click here to enter a new work diary entry.}\r\n {}\r\n \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Box, Breadcrumbs, Link, Stack, Tooltip} from \"@mui/material\";\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport ProjectStatusSelect from \"../components/projects/ProjectStatusSelect\";\r\nimport {snackbarService} from \"../components/ui/snackbar/SnackbarService\";\r\nimport {useParams} from \"react-router-dom\";\r\nimport WorkLogList from \"./worklog/WorkLogList\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport {ProjectsService} from \"../api/ApiService\";\r\nimport UserSelect from \"../components/UserSelect\";\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport {Edit} from \"@mui/icons-material\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\n\r\nconst projectsService = new ProjectsService();\r\n\r\nexport default function ProjectPage(props)\r\n{\r\n let {projectId} = useParams();\r\n let [loading, setLoading] = useState(false);\r\n let [project, setProject] = useState({\r\n name: '',\r\n address: {\r\n line1: '',\r\n line2: '',\r\n city: '',\r\n state: '',\r\n postCode: ''\r\n },\r\n projectStatus: {\r\n id: '',\r\n name: ''\r\n },\r\n assignedUser: {\r\n id: '',\r\n firstName: '',\r\n lastName: ''\r\n },\r\n details: ''\r\n });\r\n useEffect(() => {\r\n \r\n const fetchProject = async() => {\r\n setLoading(true);\r\n try {\r\n let response = await projectsService.getProject(projectId);\r\n if(!response.assignedUser) {\r\n response.assignedUser = {\r\n id: ''\r\n } \r\n }\r\n if(!response.projectStatus) {\r\n response.projectStatus = {\r\n id: ''\r\n }\r\n }\r\n setProject(response);\r\n } catch {\r\n await snackbarService.showSnackbar(`Whoops, something went wrong.`, 'error');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }; \r\n\r\n fetchProject();\r\n }, [projectId]);\r\n\r\n let changeStatus = (value) => {\r\n const updateStatus = async() => {\r\n \r\n try {\r\n let response = await projectsService.updateStatus(projectId, { statusId: value });\r\n setProject(prevState => {\r\n return { ...prevState, ...{ projectStatus: { id: value } } };\r\n });\r\n await snackbarService.showSnackbar(`Status updated`, 'success');\r\n } catch {\r\n await snackbarService.showSnackbar(`There was an error while updating the status`, 'error');\r\n }\r\n };\r\n\r\n updateStatus();\r\n }\r\n\r\n const changeAssignedUser = async (user) => {\r\n setLoading(true);\r\n try {\r\n let response = await projectsService.updateAssignedUser(projectId, user);\r\n setProject({...project, assignedUser: { id: user, firstName: '', lastName: ''}});\r\n snackbarService.showSnackbar(`Project assignee changed.`, 'success');\r\n setLoading(false);\r\n } catch {\r\n snackbarService.showSnackbar(`There was an error updating assignee`, 'error');\r\n setLoading(false);\r\n }\r\n \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Projects\r\n JB{project.number} - {project.name}\r\n \r\n \r\n \r\n \r\n
    \r\n JB{project.number} - {project.name}\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Address\r\n

    {project.address.line1}

    \r\n

    {project.address.line2}

    \r\n

    {project.address.suburb} {project.address.state} {project.address.postCode}

    \r\n
    \r\n
    \r\n \r\n \r\n Customer\r\n

    {project.customer?.name}

    \r\n
    \r\n
    \r\n \r\n \r\n Details\r\n

    {project.details}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Work Diary\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n )\r\n}","import React, {Fragment} from \"react\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport StatusBar from \"../../components/parts/StatusBar\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport styles from './AssemblyList.module.css';\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\n\r\nexport default function AssemblyListItem({assembly, onToggleStatusLine}) {\r\n return (\r\n \r\n onToggleStatusLine(assembly.id)}>\r\n \r\n \r\n \r\n \r\n \r\n {assembly.mark.toUpperCase()}\r\n \r\n \r\n {assembly.mark.toUpperCase()}\r\n \r\n {assembly.materialType && assembly.materialType.name}\r\n {assembly.material && assembly.material.code}\r\n \r\n \r\n \r\n {assembly.qty}\r\n {assembly.length} mm\r\n {assembly.weight} kg\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n}","import React from 'react';\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport AssemblyListItem from \"./AssemblyListItem\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\n\r\nexport default function AssemblyList({ assemblies, onToggleStatusLine }){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Assembly Mark\r\n Material\r\n Profile\r\n Status\r\n Qty\r\n Length\r\n Weight\r\n Files\r\n \r\n \r\n \r\n \r\n {assemblies.map((row) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n )\r\n} ","import React, {useEffect, useState} from 'react';\r\nimport {useParams} from \"react-router\";\r\nimport {ProjectAssemblyService, ProjectsService} from \"../../api/ApiService\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Link} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport AssemblyList from \"./AssemblyList\";\r\nimport {Link as RouterLink} from \"react-router-dom\";\r\n\r\nconst assemblyService = new ProjectAssemblyService();\r\nconst projectService = new ProjectsService();\r\n\r\nexport default function AssembliesPage() {\r\n let { projectId } = useParams();\r\n let [assemblies, setAssemblies] = useState([]);\r\n \r\n useEffect(() => {\r\n const loadAssembles = async () => {\r\n let results = await assemblyService.getAssemblies(projectId);\r\n setAssemblies(results);\r\n }\r\n \r\n loadAssembles();\r\n }, [projectId]);\r\n\r\n let [project, setProject] = useState({ name: ''});\r\n useEffect(() => {\r\n async function loadProject() {\r\n let projectRequest = await projectService.getProject(projectId);\r\n setProject(projectRequest);\r\n }\r\n loadProject();\r\n }, [projectId]);\r\n return (\r\n \r\n \r\n \r\n \r\n Home\r\n \r\n \r\n Projects\r\n \r\n \r\n JB{project.number} - {project.name}\r\n \r\n Assemblies\r\n \r\n \r\n \r\n {/**/}\r\n {'RU Data 66 / Priority 9 - Awning'.toUpperCase()}\r\n ASSEMBLIES\r\n \r\n \r\n \r\n \r\n {/**/}\r\n \r\n )\r\n}","import React from 'react';\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\n\r\nimport { Fragment, useState, useEffect } from 'react';\r\n\r\nexport default function DataTable({ key, columns, data }) {\r\n let [tableData, setTableData] = useState(data);\r\n \r\n useEffect(() => {\r\n setTableData(data.map(d => {\r\n return {\r\n ...d,\r\n isExpanded: false\r\n }\r\n }))\r\n }, [data]);\r\n \r\n const toggleExpanded = (key) => {\r\n console.log(key);\r\n console.log(tableData);\r\n setTableData(state => {\r\n return state.map(i => {\r\n if(i.key === key) {\r\n return {\r\n ...i,\r\n isExpanded: !i.isExpanded\r\n } \r\n } else {\r\n return i;\r\n }\r\n });\r\n });\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n {columns.map(m => {m.name})}\r\n \r\n \r\n \r\n {tableData.map(row => (\r\n \r\n toggleExpanded(row[key])}>\r\n\r\n \r\n \r\n\r\n \r\n \r\n ))}\r\n \r\n
    \r\n )\r\n}\r\n\r\nfunction DataTableExpandRowGroup({children}) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nfunction DataTableParentRow({ onExpand }) {\r\n return (\r\n \r\n Hello\r\n \r\n );\r\n}\r\n\r\nfunction DataTableChildRow() {\r\n return (\r\n \r\n Hello\r\n \r\n );\r\n}","import React, {useEffect, useState} from 'react';\r\nimport DataTable from \"../components/ui/data-table/DataTable\";\r\nimport {SuppliersService} from \"../api/ApiService\";\r\n\r\nconst supplierService = new SuppliersService();\r\n\r\nexport default function SuppliersPage() {\r\n let [suppliers, setSuppliers] = useState([]);\r\n useEffect(() => {\r\n const loadSuppliers = async () => {\r\n let response = await supplierService.get();\r\n setSuppliers(response);\r\n } \r\n loadSuppliers();\r\n }, []);\r\n \r\n const columns = [\r\n {\r\n name: 'Name',\r\n property: 'name'\r\n }\r\n ];\r\n \r\n return \r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport { MaterialTypeService} from \"../../api/ApiService\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport {TableCell} from \"@mui/material\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport Table from \"@mui/material/Table\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport {Link} from \"react-router-dom\";\r\n\r\nconst materialTypeService = new MaterialTypeService();\r\n\r\nexport default function MaterialTypesPage() {\r\n const [materialTypes, setMaterialTypes] = useState([]);\r\n\r\n useEffect(() => {\r\n const loadMaterialTypes = async () => {\r\n let response = await materialTypeService.get();\r\n setMaterialTypes(response);\r\n }\r\n loadMaterialTypes();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Name\r\n \r\n \r\n \r\n {materialTypes.map(mt => (\r\n \r\n {mt.name}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport {ProjectDefaultDirectoriesService} from \"../../api/ApiService\";\r\nimport {Chip, TableCell} from \"@mui/material\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\n\r\nlet pddService = new ProjectDefaultDirectoriesService();\r\nexport default function ProjectDirectories() {\r\n let [directories, setDirectories] = useState([]);\r\n useEffect(() => {\r\n const loadDirectories = async () => {\r\n let response = await pddService.getDefaultDirectories();\r\n setDirectories(response);\r\n }\r\n loadDirectories();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n Directory Name\r\n \r\n \r\n \r\n {directories.map(d => (\r\n \r\n {d.name} \r\n {d.isFabricationDrawings ? : ''} \r\n \r\n \r\n ))}\r\n \r\n
    \r\n )\r\n}","import React from 'react';\r\nimport {Link as RouterLink} from \"react-router-dom\";\r\n\r\nexport default function SettingsPage() {\r\n return (\r\n
    \r\n

    Settings

    \r\n
    \r\n

    Project Settings

    \r\n Default Directories\r\n
    \r\n
    \r\n

    User Administration

    \r\n Users\r\n
    \r\n
    \r\n

    Inventory

    \r\n Stock Location\r\n
    \r\n
    \r\n )\r\n}","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n render() {\r\n const action = this.props.action;\r\n const { message } = this.state;\r\n\r\n if (!!message) {\r\n return
    {message}
    \r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (
    Processing login
    );\r\n case LoginActions.LoginCallback:\r\n return (
    Processing login callback
    );\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
    );\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}/${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser they get sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n this.logout(this.getReturnUrl());\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n render() {\r\n const { isReady, message } = this.state;\r\n if (!isReady) {\r\n return
    \r\n }\r\n if (!!message) {\r\n return (
    {message}
    );\r\n } else {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n return (
    Processing logout
    );\r\n case LogoutActions.LogoutCallback:\r\n return (
    Processing logout callback
    );\r\n case LogoutActions.LoggedOut:\r\n return (
    {message}
    );\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport Paper from \"@mui/material/Paper\";\r\nimport {SurfaceFinishService} from \"../../api/ApiService\";\r\nimport {TableCell} from \"@mui/material\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport {Link} from \"react-router-dom\";\r\nimport Button from \"@mui/material/Button\";\r\n\r\nconst surfaceFinishService = new SurfaceFinishService();\r\n\r\nexport default function SurfaceFinishes()\r\n{\r\n let [surfaceFinishes, setSurfaceFinishes] = useState([]);\r\n \r\n useEffect(() => {\r\n let getSurfaceFinishes = async () => {\r\n let result = await surfaceFinishService.get();\r\n setSurfaceFinishes(result);\r\n }\r\n \r\n getSurfaceFinishes();\r\n }, []);\r\n \r\n return (\r\n \r\n

    Surface Finishes

    \r\n \r\n {surfaceFinishes.map(i => \r\n \r\n {i.code}\r\n {i.name}\r\n \r\n \r\n )}\r\n
    \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport {useParams, useNavigate} from \"react-router-dom\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport {SurfaceFinishService} from \"../../api/ApiService\";\r\nimport Button from \"@mui/material/Button\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport {FormControlLabel, Switch, TableCell} from \"@mui/material\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport Table from \"@mui/material/Table\";\r\nimport {snackbarService} from \"../../components/ui/snackbar/SnackbarService\";\r\nimport makeStyles from \"@mui/styles/makeStyles\";\r\nconst surfaceFinishService = new SurfaceFinishService();\r\nexport default function EditSurfaceFinishPage() \r\n{\r\n let params = useParams();\r\n let navigate = useNavigate();\r\n let surfaceFinishId = params.id;\r\n let creating = surfaceFinishId === 'create';\r\n let [surfaceFinish, setSurfaceFinish] = useState({ id: null, name: '', code: '', isColoured: true, colours: []});\r\n let [colours, setColours] = useState([]);\r\n let [newColour, setNewColour] = useState(false);\r\n\r\n const getSurfaceFinish = async () => {\r\n let surfaceFinishes = await surfaceFinishService.get();\r\n let surfaceFinish = surfaceFinishes.filter(i => i.id === surfaceFinishId)[0];\r\n setSurfaceFinish(surfaceFinish);\r\n setColours(surfaceFinish.colours);\r\n console.log(surfaceFinish);\r\n }\r\n \r\n useEffect(() => {\r\n if(creating) return;\r\n \r\n getSurfaceFinish();\r\n }, [surfaceFinishId]);\r\n \r\n const handleSave = async () => {\r\n let result = await surfaceFinishService.create(surfaceFinish.code, surfaceFinish.name, colours, surfaceFinish.isColoured);\r\n console.log(result);\r\n navigate(\"../\" + result);\r\n }\r\n \r\n const onCodeChange = (e) => {\r\n setSurfaceFinish({\r\n ...surfaceFinish, \r\n code: e.target.value\r\n })\r\n }\r\n\r\n const onNameChange = (e) => {\r\n setSurfaceFinish({\r\n ...surfaceFinish,\r\n name: e.target.value\r\n })\r\n }\r\n \r\n const onIsColouredChange = (e) => {\r\n setSurfaceFinish({\r\n ...surfaceFinish,\r\n isColoured: e.target.checked\r\n });\r\n }\r\n \r\n const newColor = (val) => {\r\n setNewColour(val);\r\n }\r\n \r\n const handleColourUpdated = () => {\r\n getSurfaceFinish();\r\n }\r\n \r\n const handleColourDeleted = () => {\r\n getSurfaceFinish();\r\n }\r\n \r\n const newColourData = {\r\n id: null,\r\n name: ''\r\n }\r\n \r\n const useStyles = makeStyles({\r\n root: {\r\n marginTop: '24px',\r\n \r\n paddingBottom: '32px',\r\n \r\n },\r\n header: {\r\n paddingTop: '16px',\r\n paddingBottom: '16px',\r\n paddingLeft: '24px',\r\n paddingRight: '24px',\r\n display: \"flex\",\r\n marginBottom: '32px',\r\n borderBottom: '1px solid #ECECF3',\r\n lineHeight: 1,\r\n verticalAlign: \"bottom\",\r\n alignItems: 'center'\r\n },\r\n headerTitle: {\r\n fontWeight: 500,\r\n fontSize: '18px',\r\n flexGrow: 1,\r\n letterSpacing: '-0.5px'\r\n },\r\n headerActions: {\r\n \r\n }\r\n })\r\n \r\n const styles = useStyles();\r\n \r\n return (\r\n \r\n
    \r\n
    \r\n Edit Surface Finish\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n }\r\n label=\"This surface finish has colour options\"\r\n />\r\n \r\n \r\n \r\n Colour\r\n \r\n \r\n \r\n \r\n {newColour && newColor(false)} onUpdated={() => {newColor(false); handleColourUpdated();}}/>}\r\n {colours.map(c =>\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nfunction ColourRow({surfaceFinishId, colour, onDeleted, onUpdated}) {\r\n let [isEditing, setIsEditing] = useState(false);\r\n let [name, setName] = useState();\r\n \r\n useEffect(() => {\r\n setName(colour.name);\r\n if(!colour.id) setIsEditing(true); \r\n }, [colour])\r\n \r\n \r\n const onEdit = () => {\r\n setIsEditing(true);\r\n }\r\n \r\n const onDelete = async () => {\r\n try {\r\n await surfaceFinishService.deleteColour(colour.id);\r\n onDeleted(); \r\n } catch(err) {\r\n await snackbarService.showSnackbar(`There was an error deleting the colour`, 'error');\r\n }\r\n }\r\n \r\n const onSave = async () => {\r\n if(!colour.id) {\r\n try {\r\n console.log(surfaceFinishId);\r\n await surfaceFinishService.createColour(surfaceFinishId, name);\r\n onUpdated();\r\n setIsEditing(false);\r\n } catch(err) {\r\n await snackbarService.showSnackbar(`There was an error adding the colour`, 'error');\r\n }\r\n } else {\r\n try {\r\n await surfaceFinishService.updateColour(colour.id, name);\r\n onUpdated();\r\n setIsEditing(false);\r\n } catch(err) {\r\n await snackbarService.showSnackbar(`There was an error updating the colour`, 'error');\r\n }\r\n }\r\n }\r\n \r\n const onCancel = async () => {\r\n if(!colour.id) {\r\n onDeleted();\r\n return;\r\n }\r\n setName(colour.name);\r\n setIsEditing(false);\r\n }\r\n \r\n const onNameChange = (e) => {\r\n setName(e.target.value);\r\n }\r\n let result;\r\n \r\n if(isEditing) {\r\n result = \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } else {\r\n result = \r\n \r\n {colour.name}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n return (\r\n <>\r\n {result}\r\n \r\n );\r\n}","import React from 'react';\r\nimport {Route, Routes} from \"react-router-dom\";\r\nimport {InputLabel} from \"@mui/material\";\r\n\r\nexport default function PartPage() {\r\n const part = {\r\n partMark: 'P107'\r\n }\r\n return (\r\n
    \r\n

    {part.partMark}

    \r\n
    \r\n Hello\r\n \r\n
    \r\n
    \r\n Hello\r\n \r\n
    \r\n \r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n \r\n
    \r\n )\r\n}\r\n\r\nfunction PartFilesTab() {\r\n return (\r\n

    Files

    \r\n )\r\n}\r\n\r\n\r\nfunction PartDetailsTab() {\r\n return (\r\n

    Details

    \r\n )\r\n}\r\n\r\n\r\nfunction PartAssembliesTab() {\r\n return (\r\n

    Assemblies

    \r\n )\r\n}\r\n\r\nfunction PartHistoryTab() {\r\n return (\r\n

    History

    \r\n )\r\n}","import React from 'react';\r\nimport {Autocomplete} from \"@mui/lab\";\r\nimport {TextField} from \"@mui/material\";\r\n\r\n\r\nexport default function TakeOffMaterialCodeInput({materials, value, onValueChange}) {\r\n materials = materials.sort((a, b) => a.code.localeCompare(b.code, 'en', { numeric: true})).map(i => {\r\n return { id: i.id, label: i.code};\r\n });\r\n\r\n let isOptionEqualToValue = (option, value) => {\r\n return option.label === value;\r\n }\r\n\r\n return (\r\n }\r\n onChange={onValueChange} value={value}\r\n isOptionEqualToValue={isOptionEqualToValue}\r\n />\r\n )\r\n}","import React from 'react';\r\nimport {Autocomplete} from \"@mui/lab\";\r\nimport {TextField} from \"@mui/material\";\r\n\r\n\r\nexport default function TakeOffMaterialTypeInput({materialTypes, value, onValueChange}) {\r\n materialTypes = materialTypes.sort((a, b) => a.code.localeCompare(b.code, 'en', { numeric: true})).map(i => {\r\n return { id: i.id, label: i.code};\r\n });\r\n\r\n let isOptionEqualToValue = (option, value) => {\r\n return option.label === value;\r\n }\r\n\r\n return (\r\n }\r\n onChange={onValueChange} value={value}\r\n isOptionEqualToValue={isOptionEqualToValue}\r\n />\r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport Table from \"@mui/material/Table\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport {Input, TableCell, TextField} from \"@mui/material\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport {MaterialProfileService, MaterialService, MaterialTypeService} from \"../../api/ApiService\";\r\nimport TakeOffMaterialCodeInput from \"./components/TakeOffMaterialCodeInput\";\r\nimport TakeOffMaterialTypeInput from \"./components/TakeOffMaterialTypeInput\";\r\n\r\nlet data = {\r\n lines: [\r\n {\r\n type: 'group',\r\n name: 'Columns',\r\n lines: [\r\n {\r\n length: 3000,\r\n material: 'Steel',\r\n materialCode: '200UB25',\r\n qty: 5\r\n }\r\n ]\r\n }\r\n ]\r\n}\r\n\r\n// type: Group or Line\r\n\r\nlet materialService = new MaterialService();\r\nlet materialTypeService = new MaterialTypeService();\r\n\r\nexport default function QuotationTakeOff() {\r\n\r\n let [materials, setMaterials] = useState([]);\r\n let [materialTypes, setMaterialTypes] = useState([]);\r\n \r\n let [data, setData] = useState({\r\n name: 'S1'\r\n })\r\n \r\n useEffect(() => {\r\n let loadMaterials = async () => {\r\n let results = await materialService.get();\r\n setMaterials(results);\r\n console.log(results);\r\n } \r\n loadMaterials();\r\n }, []);\r\n\r\n useEffect(() => {\r\n let loadMaterialTypes = async () => {\r\n let results = await materialTypeService.get();\r\n setMaterialTypes(results);\r\n console.log(results);\r\n }\r\n loadMaterialTypes();\r\n }, []);\r\n \r\n let setMaterialCode = (value) => {\r\n setData({ ...data, materialCode: value});\r\n }\r\n\r\n let setMaterialType = (value) => {\r\n setData({ ...data, materialType: value});\r\n }\r\n \r\n let getWeight = (data) => {\r\n let material = materials.filter(i => i.code === data.materialCode);\r\n if(material.length === 1) return materials[0].weight;\r\n return \"\";\r\n }\r\n\r\n let getTotalWeight = (data) => {\r\n console.log(data);\r\n let material = materials.filter(i => i.code === data.material);\r\n console.log(material);\r\n if(material.length === 1) return materials[0].weight;\r\n return \"\";\r\n }\r\n \r\n return (\r\n
    \r\n \r\n \r\n \r\n Name\r\n Material Type\r\n Material Code\r\n Surface Finish\r\n Quantity\r\n Length\r\n Width\r\n Weight\r\n Total Weight\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setMaterialType(v)}/>\r\n \r\n \r\n setMaterialCode(v)}/>\r\n \r\n \r\n setMaterialCode(v)}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {getWeight(data)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction TakeOffGroup({group}) {\r\n return (\r\n <>\r\n {group.lines.map(l => {\r\n if(l.type === 'group') return \r\n else return \r\n })}\r\n \r\n )\r\n}\r\n\r\nfunction TakeOffLine({line}) {\r\n return (\r\n \r\n {line.name}\r\n {line.materialType}\r\n {line.materialCode}\r\n {line.surfaceFinish}\r\n {line.qty}\r\n {line.length}\r\n {line.width}\r\n \r\n )\r\n}","import React, {useState} from 'react';\r\nimport ContactCreateDialog from \"../components/ClientCreateDialog\";\r\n\r\nexport default function Quotation() {\r\n let [client, setClient] = useState({\r\n id: ''\r\n })\r\n \r\n const handleClose = (value) => {\r\n console.log(value);\r\n }\r\n return (\r\n
    \r\n {/**/}\r\n \r\n
    \r\n )\r\n}","import React, {SyntheticEvent, useEffect, useState} from 'react';\r\nimport {Avatar, ListItem, TextField} from \"@mui/material\";\r\nimport {Autocomplete} from \"@mui/lab\";\r\nimport {ServiceConfiguration, User, UserService} from \"../api/ApiService\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\ntype MultiUserSelectProps = {\r\n selectedUsers: User[],\r\n label: string,\r\n onChange: (event: SyntheticEvent, value: User[]) => void,\r\n helperText: string,\r\n error: boolean\r\n}\r\n\r\nlet userService = new UserService(new ServiceConfiguration());\r\n\r\nfunction MultiUserSelect({selectedUsers, label, onChange, helperText, error}: MultiUserSelectProps) {\r\n let [users, setUsers] = useState([]);\r\n useEffect(() => {\r\n const getUsers = async () => {\r\n let usersRequest = await userService.getUsers(true);\r\n setUsers(usersRequest.users || []);\r\n }\r\n getUsers();\r\n }, []);\r\n \r\n const isOptionEqualToValue = (option: User, value: any) => option.id == value.id;\r\n\r\n return (\r\n {\r\n return \r\n }\r\n }\r\n onChange={onChange} value={selectedUsers}\r\n getOptionLabel={(option) => option.firstName + ' ' + option.lastName}\r\n renderOption={(props, option, state) => {\r\n return
  • \r\n \r\n {option.firstName} {option.lastName}\r\n
  • \r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default MultiUserSelect;","import React, {useEffect, useState} from 'react';\r\nimport {TextField} from \"@mui/material\";\r\nimport {Autocomplete} from \"@mui/lab\";\r\nimport {ProjectsService, ServiceConfiguration, User, UserService} from \"../api/ApiService\";\r\n\r\nlet projectService = new ProjectsService(new ServiceConfiguration());\r\n\r\nfunction ProjectSelect({project, onChange, disabled, error, helperText}) {\r\n let [projects, setProjects] = useState([]);\r\n let [selectedProject, setSelectedProject] = useState(null);\r\n useEffect(() => {\r\n const getProjects = async () => {\r\n let projectsRequest = await projectService.getProjects();\r\n setProjects(projectsRequest.projects);\r\n \r\n }\r\n getProjects();\r\n }, []);\r\n \r\n useEffect(() => {\r\n if(typeof project === 'string') {\r\n let projectFound = projects.filter(i => i.id === project);\r\n if(projectFound && projectFound.length === 1) {\r\n setSelectedProject(projectFound[0]);\r\n }\r\n }\r\n }, [project, projects]);\r\n \r\n const onValueChange = (event, value) => {\r\n console.log(value);\r\n if(typeof project === 'string' && value != null) {\r\n onChange(value.id);\r\n } else {\r\n onChange(value);\r\n }\r\n }\r\n \r\n return (\r\n {\r\n return }}\r\n onChange={onValueChange} value={selectedProject}\r\n getOptionLabel={(option) => {\r\n return 'JB' + option.number + ' - ' + option.name;\r\n }}\r\n margin=\"dense\"\r\n />\r\n )\r\n}\r\n\r\nexport default ProjectSelect;","import React, {useEffect, useRef, useState} from 'react';\r\nimport {DatePicker, TimePicker} from \"@mui/lab\";\r\nimport { Stack, TextField, Typography} from \"@mui/material\";\r\nimport MultiUserSelect from \"../../components/MultiUserSelect\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {styled} from \"@mui/styles\";\r\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';\r\nimport ProjectSelect from \"../../components/ProjectSelect\";\r\nimport {useParams, } from \"react-router\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Container from \"@mui/material/Container\";\r\nimport { WorkLogService} from \"../../api/ApiService\";\r\nimport {useNavigate} from \"react-router-dom\";\r\nimport {LocalDate, LocalTime, nativeJs} from \"@js-joda/core\";\r\nimport PageLoadingIndicator from \"../../components/ui/PageLoadingIndicator\";\r\nimport {snackbarService} from \"../../components/ui/snackbar/SnackbarService\";\r\nlet workLogService = new WorkLogService();\r\n\r\nconst Input = styled('input')({\r\n display: 'none',\r\n});\r\n\r\nexport default function EnterProjectWorkLog() {\r\n let [errors, setErrors] = useState([]);\r\n let [users, setUsers] = useState([]);\r\n let [date, setDate] = useState(new Date());\r\n let [startTime, setStartTime] = useState(null);\r\n let [endTime, setEndTime] = useState(new Date());\r\n let [details, setDetails] = useState('');\r\n let [files, setFiles] = useState([]);\r\n let [project, setProject] = useState(null);\r\n let [loading, setLoading] = useState(false);\r\n let {projectId} = useParams();\r\n let navigate = useNavigate();\r\n useEffect(() => {\r\n setProject(projectId);\r\n }, [projectId]);\r\n \r\n \r\n let uploadInput = useRef(null);\r\n \r\n let handleUserChange = (event, users) => {\r\n console.log(users);\r\n setUsers(users);\r\n }\r\n \r\n let handleDateChange = (value) => {\r\n setDate(value);\r\n }\r\n \r\n let handleFileInput = (val) => {\r\n if(val.target.files && val.target.files.length > 0) {\r\n setFiles([...files, ...val.target.files]);\r\n }\r\n console.log(...files, ...val.target.files);\r\n }\r\n \r\n let handleStartTimeChange = (value) => setStartTime(value);\r\n let handleEndTimeChange = (value) => setEndTime(value);\r\n let handleDetailsChange = (event) => setDetails(event.target.value);\r\n let handleProjectChange = (value) => { setProject(value)}\r\n \r\n let handleSaveWorkLog = async () => {\r\n let formData = new FormData();\r\n formData.append('projectId', project ? (typeof project === 'string') ? project : project.id : '');\r\n users.forEach(u => formData.append('userIds[]', u.id));\r\n formData.append('date', date ? LocalDate.from(nativeJs(date)).toString() : null);\r\n formData.append('startTime', startTime != null ? LocalTime.from(nativeJs(startTime)).toString() : null);\r\n formData.append('endTime', LocalTime.from(nativeJs(endTime)).toString());\r\n formData.append('details', details);\r\n files.forEach(f => formData.append('files', f, f.name));\r\n \r\n setLoading(true);\r\n fetch(`/api/worklog`, {\r\n method: 'POST',\r\n body: formData\r\n })\r\n .then(res => {\r\n if(res.status === 400) {\r\n snackbarService.showSnackbar(`There was an error creating the work diary entry`, 'error');\r\n res.json().then((response) => {\r\n console.log(response.errors);\r\n setErrors(response.errors);\r\n setLoading(false);\r\n });\r\n } else {\r\n snackbarService.showSnackbar(`Work diary created!`, 'success');\r\n navigate('../../');\r\n }})\r\n }\r\n \r\n const hasError = (field) => {\r\n console.log(field);\r\n return field && field.length > 0;\r\n }\r\n \r\n const errorString = (fieldName) => {\r\n return errors[fieldName]?.join(\",\");\r\n }\r\n \r\n return (\r\n <>\r\n \r\n \r\n \r\n Work Diary Entry\r\n\r\n \r\n \r\n }\r\n \r\n />\r\n }\r\n />\r\n }\r\n margin=\"dense\"\r\n />\r\n \r\n \r\n \r\n {files.map(f => ) }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction FileUploadPreview({file}) {\r\n let imageData = null;\r\n if(file.type.startsWith('image/')) {\r\n imageData = URL.createObjectURL(file);\r\n }\r\n useEffect(() => {\r\n \r\n }, [file]);\r\n \r\n return (\r\n
    \r\n {imageData && {file.name}}\r\n {!imageData && }\r\n {file.name}\r\n
    \r\n )\r\n}\r\n\r\n/*\r\npublic IList Users { get; set; }\r\n public DateTime Date { get; set; }\r\n public DateTime StartTime { get; set; }\r\n public DateTime EndTime { get; set; }\r\n public String Details { get; set; }\r\n public IList Attachments { get; set; }\r\n */","import React from 'react'\r\nimport { Component } from 'react'\r\nimport { Route, Navigate } from 'react-router-dom'\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\n\r\nexport default class AuthorizeRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n this.populateAuthenticationState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n \r\n render() {\r\n console.log('helo');\r\n const { ready, authenticated } = this.state;\r\n var link = document.createElement(\"a\");\r\n link.href = this.props.path;\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`\r\n \r\n if(!ready) return
    ;\r\n \r\n if (ready && !authenticated) return ;\r\n\r\n const { element: Component, ...rest } = this.props;\r\n \r\n return
    {Component}
    ;\r\n \r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ ready: true, authenticated });\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {Breadcrumbs, Stack} from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { Link as RouterLink,useNavigate } from 'react-router-dom';\r\nimport Link from \"@mui/material/Link\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport {snackbarService} from \"../components/ui/snackbar/SnackbarService\";\r\nimport PageLoadingIndicator from \"../components/ui/PageLoadingIndicator\";\r\nimport GoogleMaps from \"../components/ui/GoogleMapsAutoComplete\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\nimport { ProjectsService } from \"../api/ApiService\";\r\nimport ContactSelect from \"../components/ContactSelect\";\r\nimport {useParams} from \"react-router\";\r\n\r\nconst projectsService = new ProjectsService();\r\n\r\nexport default function EditProjectPage() \r\n{\r\n let { projectId } = useParams();\r\n let [errors, setErrors] = useState([]);\r\n let navigate = useNavigate();\r\n let [project, setProject] = useState({\r\n name: '',\r\n statusId: '',\r\n number: ''\r\n });\r\n let [address, setAddress] = useState({\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n state: '',\r\n postCode: '',\r\n country: '',\r\n googlePlaceId: '',\r\n latitude: null,\r\n longitude: null\r\n });\r\n \r\n useEffect(() => {\r\n async function loadProject(projectId) {\r\n let result = await projectsService.getProject(projectId);\r\n setProject({\r\n name: result.name,\r\n number: result.number\r\n });\r\n setProjectDetails(result.details);\r\n setCustomer(result.customer != null ? {\r\n id: result.customer.id,\r\n name: result.customer.name\r\n } : { id: '', name: ''});\r\n\r\n setAddress({\r\n addressLine1: result.address.line1,\r\n addressLine2: result.address.line2,\r\n city: result.address.suburb,\r\n state: result.address.state,\r\n postCode: result.address.postCode,\r\n country: result.address.country,\r\n googlePlaceId: result.address.googlePlaceId,\r\n latitude: null,\r\n longitude: null\r\n });\r\n setLoading(false);\r\n }\r\n \r\n setLoading(true);\r\n loadProject(projectId);\r\n \r\n }, [projectId]);\r\n \r\n let [customer, setCustomer] = useState({ id: '', name: ''});\r\n let [loading, setLoading] = useState(false);\r\n let [manualAddress, setManualAddress] = useState(true);\r\n let [projectDetails, setProjectDetails] = useState('');\r\n \r\n let navigateToProjectPage = (projectId) => {\r\n console.log(projectId);\r\n navigate('/projects/' + projectId);\r\n };\r\n \r\n let saveProject = async () => {\r\n setErrors([]);\r\n let request = {\r\n id: projectId,\r\n address: address,\r\n project: {\r\n ...project,\r\n customerId: customer?.id ? customer?.id : null,\r\n },\r\n details: projectDetails\r\n };\r\n setLoading(true);\r\n \r\n try {\r\n let result = await projectsService.editProject(projectId, request);\r\n snackbarService.showSnackbar(`The project has been updated`, 'success');\r\n console.log(result);\r\n navigateToProjectPage(result.id);\r\n } catch(ex) {\r\n if(ex.status === 400) {\r\n setErrors(ex.response.errors);\r\n console.dir(ex.response.errors);\r\n }\r\n console.log(ex);\r\n snackbarService.showSnackbar(`There was an error while updating the project`, 'error');\r\n setLoading(false);\r\n }\r\n }\r\n\r\n let handleChangeAddress = (address) => {\r\n setAddress(address);\r\n setManualAddress(true);\r\n };\r\n \r\n const handleCustomerChange = (value) => {\r\n console.log(value);\r\n setCustomer(value);\r\n }\r\n \r\n const hasError = (field) => {\r\n return field && field.length > 0;\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Home\r\n \r\n Projects\r\n Edit Project\r\n \r\n \r\n \r\n Edit Project Details\r\n \r\n \r\n JB-,\r\n }}\r\n onChange={(e) => setProject({ ...project, number: e.target.value })}\r\n />\r\n \r\n \r\n setProject({ ...project, name: e.target.value })}\r\n />\r\n \r\n \r\n setProjectDetails(e.target.value)}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n Address\r\n
    \r\n {!manualAddress && }\r\n {manualAddress && \r\n \r\n \r\n setAddress({ ...address, addressLine1: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, addressLine2: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, city: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, postCode: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, state: e.target.value })}\r\n />\r\n \r\n \r\n setAddress({ ...address, country: e.target.value })}\r\n />\r\n \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n )\r\n}","import React, {useEffect, useRef, useState} from 'react';\r\nimport {useNavigate, useParams} from \"react-router\";\r\nimport {WorkLogService} from \"../../api/ApiService\";\r\nimport PageLoadingIndicator from \"../../components/ui/PageLoadingIndicator\";\r\nimport Container from \"@mui/material/Container\";\r\nimport {Stack, TextField, Typography} from \"@mui/material\";\r\nimport ProjectSelect from \"../../components/ProjectSelect\";\r\nimport MultiUserSelect from \"../../components/MultiUserSelect\";\r\nimport {DatePicker, TimePicker} from \"@mui/lab\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFile\";\r\nimport { LocalDate, LocalTime, nativeJs} from \"@js-joda/core\";\r\nimport {snackbarService} from \"../../components/ui/snackbar/SnackbarService\";\r\nimport {styled} from \"@mui/styles\";\r\n\r\nconst workDiaryService = new WorkLogService();\r\n\r\nconst Input = styled('input')({\r\n display: 'none',\r\n});\r\n\r\nexport default function EditWorkDiaryEntry() {\r\n let { id } = useParams();\r\n let [loading, setLoading] = useState(true);\r\n let [entry, setEntry] = useState({ users: []});\r\n let [errors, setErrors] = useState([]);\r\n let [files, setFiles] = useState([]);\r\n let navigate = useNavigate();\r\n let uploadInput = useRef(null);\r\n\r\n let handleUserChange = (event, users) => {\r\n setEntry(prevState => ({ ...prevState, users: users}));\r\n }\r\n\r\n let handleDateChange = (value) => {\r\n setEntry(prevState => ({ ...prevState, date: value}));\r\n }\r\n\r\n let handleFileInput = (val) => {\r\n if(val.target.files && val.target.files.length > 0) {\r\n setFiles([...files, ...val.target.files]);\r\n }\r\n }\r\n\r\n let handleStartTimeChange = (value) => setEntry(prevState => ({ ...prevState, startTime: value}));\r\n let handleEndTimeChange = (value) => setEntry(prevState => ({ ...prevState, endTime: value}));\r\n let handleDetailsChange = (event) => setEntry(prevState => ({ ...prevState, details: event.target.value}));\r\n let handleProjectChange = (value) => setEntry(prevState => ({ ...prevState, projectId: value}));\r\n\r\n const hasError = (field) => {\r\n return field && field.length > 0;\r\n }\r\n\r\n const errorString = (fieldName) => {\r\n return errors[fieldName]?.join(\",\");\r\n }\r\n \r\n useEffect(() => {\r\n const loadWorkDiaryEntry = async () => {\r\n setLoading(true);\r\n let response = await workDiaryService.getWorkDiaryEntry(id);\r\n let hours = LocalTime.parse(response.startTime).hour();\r\n let minute = LocalTime.parse(response.startTime).minute();\r\n response.startTime = new Date();\r\n response.startTime.setHours(hours);\r\n response.startTime.setMinutes(minute);\r\n\r\n let hours2 = LocalTime.parse(response.endTime).hour();\r\n let minute2 = LocalTime.parse(response.endTime).minute();\r\n response.endTime = new Date();\r\n response.endTime.setHours(hours2);\r\n response.endTime.setMinutes(minute2);\r\n\r\n setEntry(response);\r\n setLoading(false);\r\n }\r\n\r\n loadWorkDiaryEntry();\r\n }, [id]);\r\n\r\n let handleSaveWorkLog = async () => {\r\n let formData = new FormData();\r\n formData.append('projectId', entry.projectId);\r\n entry.users.forEach(u => formData.append('userIds[]', u.id));\r\n formData.append('date', entry.date ? LocalDate.from(nativeJs(entry.date)).toString() : null);\r\n formData.append('startTime', entry.startTime != null ? LocalTime.from(nativeJs(entry.startTime)).toString() : null);\r\n formData.append('endTime', entry.endTime != null ? LocalTime.from(nativeJs(entry.endTime)).toString() : null);\r\n formData.append('details', entry.details);\r\n files.forEach(f => formData.append('files', f, f.name));\r\n\r\n setLoading(true);\r\n fetch(`/api/worklog/${id}`, {\r\n method: 'POST',\r\n body: formData\r\n })\r\n .then(res => {\r\n if(res.status === 400) {\r\n snackbarService.showSnackbar(`There was an error updating the work diary entry`, 'error');\r\n res.json().then((response) => {\r\n setErrors(response.errors);\r\n setLoading(false);\r\n });\r\n } else {\r\n snackbarService.showSnackbar(`Work diary updated!`, 'success');\r\n navigate('../../../');\r\n }})\r\n }\r\n \r\n return (\r\n <>\r\n \r\n \r\n \r\n Work Diary Entry\r\n\r\n \r\n \r\n }\r\n\r\n />\r\n }\r\n />\r\n }\r\n margin=\"dense\"\r\n />\r\n \r\n \r\n \r\n {files.map(f => ) }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction FileUploadPreview({file}) {\r\n let imageData = null;\r\n if(file.type.startsWith('image/')) {\r\n imageData = URL.createObjectURL(file);\r\n }\r\n useEffect(() => {\r\n\r\n }, [file]);\r\n\r\n return (\r\n
    \r\n {imageData && {file.name}}\r\n {!imageData && }\r\n {file.name}\r\n
    \r\n )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport styles from './TaskScheduler.module.css';\r\nimport {UserService} from \"../api/ApiService\";\r\n\r\nconst userService = new UserService();\r\n\r\nexport default function TaskScheduler() {\r\n let [users, setUsers] = useState([]);\r\n let [days, setDays] = useState([\r\n { day: 'MON', date: 7}, \r\n { day: 'TUE', date: 8}, \r\n { day: 'WED', date: 9}, \r\n { day: 'THU', date: 10}, \r\n { day: 'FRI', date: 11}, \r\n { day: 'SAT', date: 12}, \r\n { day: 'SUN', date: 13} \r\n ]);\r\n useEffect(() => {\r\n const loadUsers = async () => {\r\n let response = await userService.getUsers(true);\r\n setUsers(response.users);\r\n } \r\n \r\n loadUsers();\r\n });\r\n \r\n return (\r\n
    \r\n
     
    \r\n {days.map(d => )}\r\n {users.map(u => )}\r\n
    \r\n );\r\n}\r\n\r\nfunction DayHeader({date, day}) {\r\n return (\r\n
    \r\n
    {day}
    \r\n
    {date}
    \r\n
    \r\n )\r\n}\r\n\r\nfunction TaskSchedulerRow({ user }) {\r\n return (\r\n <>\r\n
    {user.firstName} {user.lastName}
    \r\n
     
    \r\n
     
    \r\n
     
    \r\n
     
    \r\n
     
    \r\n
     
    \r\n
     
    \r\n \r\n );\r\n}\r\n\r\nconst data = {\r\n users: [],\r\n \r\n}","import React, {useEffect, useState} from 'react';\r\nimport {TasksService} from \"../api/ApiService\";\r\nimport InputLabel from \"@mui/material/InputLabel\";\r\nimport Select from \"@mui/material/Select\";\r\nimport {MenuItem} from \"@mui/material\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\n\r\nconst tasksService = new TasksService();\r\n\r\nfunction TaskStatusSelect({taskStatusId, onStatusChange}) {\r\n let [statuses, setStatuses] = useState([]);\r\n \r\n useEffect(() => {\r\n const loadStatuses = async () => {\r\n let response = await tasksService.getTaskStatuses();\r\n setStatuses(response.statuses);\r\n }\r\n \r\n loadStatuses();\r\n }, []);\r\n\r\n const handleStatusChange = (e) => {\r\n onStatusChange(e.target.value);\r\n }\r\n \r\n return (\r\n \r\n Status\r\n \r\n \r\n )\r\n}\r\n\r\nexport default TaskStatusSelect;","import React, {useState} from 'react';\r\nimport {Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField} from \"@mui/material\";\r\nimport PageLoadingIndicator from \"../../components/ui/PageLoadingIndicator\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {snackbarService} from \"../../components/ui/snackbar/SnackbarService\";\r\nimport {TasksService} from \"../../api/ApiService\";\r\nimport TaskStatusSelect from \"../../components/TaskStatusSelect\";\r\nimport ProjectSelect from \"../../components/ProjectSelect\";\r\n\r\nconst tasksService = new TasksService();\r\n\r\nexport default function CreateTaskDialog({open, onClose}) {\r\n let [loading, setLoading] = useState(false);\r\n let [name, setName] = useState('');\r\n let [status, setStatus] = useState('');\r\n let [project, setProject] = useState(null);\r\n let [errors, setErrors] = useState([]);\r\n let [error, setError] = useState(false);\r\n \r\n const hasError = (field) => field && field.length > 0;\r\n\r\n const handleClose = () => {\r\n onClose(false);\r\n }\r\n\r\n const handleSave = async () => {\r\n setError(false);\r\n setErrors([]);\r\n setLoading(true);\r\n try {\r\n let result = await tasksService.createTask({\r\n name: name,\r\n projectId: project.id,\r\n statusId: status\r\n });\r\n snackbarService.showSnackbar(`Task created`, 'success');\r\n onClose(true, result);\r\n } catch(ex) {\r\n console.log(ex);\r\n if(ex.status === 400) {\r\n setError(true);\r\n setErrors(ex.response.errors);\r\n }\r\n snackbarService.showSnackbar(`There was an error creating the task`, 'error');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n \r\n const handleStatusChange = (value) => {\r\n console.log(value);\r\n setStatus(value);\r\n }\r\n \r\n const handleNameChange = (event) => setName(event.target.value);\r\n \r\n const handleProjectChange = (value) => {\r\n setProject(value);\r\n }\r\n return (\r\n <>\r\n \r\n \r\n New Task\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, {useEffect, useState} from 'react';\r\nimport {GetTasksRequest, TasksService} from \"../../api/ApiService\";\r\nimport {useParams} from \"react-router\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Button from \"@mui/material/Button\";\r\nimport CreateTaskDialog from \"./CreateTaskDialog\";\r\n\r\nconst tasksService = new TasksService();\r\n\r\nexport default function ProjectTasksList() {\r\n let { projectId } = useParams();\r\n let [createDialogOpen, setCreateDialogOpen] = useState(false);\r\n \r\n let [tasks, setTasks] = useState([]);\r\n useEffect(() => {\r\n const loadTasks = async () => {\r\n let response = await tasksService.getTasks(projectId);\r\n setTasks(response.tasks);\r\n }\r\n loadTasks();\r\n }, [projectId]);\r\n \r\n const openCreateTaskDialog = () => {\r\n setCreateDialogOpen(true);\r\n }\r\n \r\n const handleCreateTaskDialogClose = () => {\r\n \r\n }\r\n \r\n return (\r\n
    \r\n Tasks\r\n \r\n {tasks.map(t => )}\r\n \r\n
    \r\n )\r\n}\r\n\r\nfunction TaskListItem({ task }) {\r\n return (
    \r\n {task.title}\r\n
    )\r\n}","import React, {useEffect, useState} from 'react';\r\nimport './App.css';\r\nimport { makeStyles } from '@mui/styles';\r\nimport AppBar from \"@mui/material/AppBar\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Toolbar from \"@mui/material/Toolbar\";\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\r\nimport ListItem from \"@mui/material/ListItem\";\r\nimport List from \"@mui/material/List\";\r\nimport HomeIcon from '@mui/icons-material/Home';\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport ListSubheader from \"@mui/material/ListSubheader\";\r\nimport Container from \"@mui/material/Container\";\r\nimport { Routes, Route } from \"react-router-dom\";\r\nimport AddStock from \"../inventory/AddStock\";\r\nimport StockItem from \"../inventory/StockItem\";\r\nimport StockList from \"../inventory/StockList\";\r\nimport StockLocations from \"../inventory/locations/StockLocations\";\r\nimport CssBaseline from \"@mui/material/CssBaseline\";\r\nimport {ApplicationPaths, LoginActions, LogoutActions, QueryParameterNames} from '../auth/ApiAuthorizationConstants';\r\nimport {LoginMenu} from \"../auth/LoginMenu\";\r\nimport {ProjectFilesPage} from \"../projects/files/ProjectFilesPage\";\r\nimport PartsPage from \"../projects/parts/PartsPage\";\r\nimport UsersPage from \"../users/UsersPage\";\r\nimport UserPage from \"../users/UserPage\";\r\nimport InviteUserPage from \"../users/InviteUserPage\";\r\nimport {SnackbarContainer} from \"../components/ui/snackbar/SnackbarContainer\";\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport ProjectsPage from \"../projects/ProjectsPage\";\r\nimport CreateProjectPage from \"../projects/CreateProjectPage\";\r\nimport ProjectPage from \"../projects/ProjectPage\";\r\nimport AssembliesPage from \"../projects/assemblies/ProjectAssembliesPage\";\r\nimport SuppliersPage from \"../suppliers/SuppliersPage\";\r\nimport MaterialTypesPage from \"../materials/types/MaterialTypesPage\";\r\nimport ProjectDirectories from \"../settings/project-directories/ProjectDirectories\";\r\nimport SettingsPage from \"../settings/SettingsPage\";\r\nimport {Login} from \"../auth/Login\";\r\nimport {Logout} from \"../auth/Logout\";\r\nimport SurfaceFinishes from \"../materials/surface-finishes/SurfaceFinishesPage\";\r\nimport EditSurfaceFinishPage from \"../materials/surface-finishes/EditSurfaceFinish\";\r\nimport PartPage from \"../projects/part/PartPage\";\r\nimport QuotationTakeOff from \"../quotations/takeoff/QuotationTakeOff\";\r\nimport Quotation from \"../quotations/Quotation\";\r\nimport EnterProjectWorkLog from \"../projects/worklog/EnterProjectWorkLog\";\r\nimport AuthorizeRoute from \"../auth/AuthorizeRoute\";\r\nimport {useNavigate} from \"react-router\";\r\nimport authService from \"../auth/AuthorizeService\";\r\nimport EditProjectPage from \"../projects/EditProjectPage\";\r\nimport EditWorkDiaryEntry from \"../projects/worklog/EditWorkDiaryEntry\";\r\nimport TaskScheduler from \"../scheduler/TaskScheduler\";\r\nimport ProjectTasksList from \"../projects/tasks/ProjectTasksList\";\r\nconst drawerWidth = 300;\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n list: {\r\n width: drawerWidth\r\n }\r\n}));\r\n\r\nfunction App() {\r\n const classes = useStyles();\r\n const [state, setState] = React.useState({\r\n isMenuOpen: false\r\n });\r\n \r\n const [isAuthenticated, setIsAuthenticated] = useState(false);\r\n \r\n \r\n const toggleDrawer = (open) => (event) => {\r\n if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {\r\n return;\r\n }\r\n\r\n setState({ ...state, isMenuOpen: open });\r\n };\r\n \r\n let closeMenuIfOpen = () => {\r\n if(state.isMenuOpen) setState({isMenuOpen: false});\r\n };\r\n \r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Eastern Suburbs Steel Fabrication\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Materials\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Settings\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } />\r\n } />\r\n } />\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n }/>\r\n \r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n }/>\r\n } />\r\n } />\r\n \r\n \r\n \r\n \r\n } />\r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './app/App';\r\nimport {createTheme, ThemeProvider} from \"@mui/material\";\r\nimport { StyledEngineProvider } from '@mui/material/styles';\r\nimport AdapterDateFns from \"@mui/lab/AdapterDateFns\";\r\nimport {LocalizationProvider} from \"@mui/lab\";\r\nimport LogRocket from 'logrocket';\r\nimport setupLogRocketReact from 'logrocket-react';\r\nimport * as Sentry from \"@sentry/react\";\r\nimport { Integrations } from \"@sentry/tracing\";\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nSentry.init({\r\n dsn: \"https://c27cdcb365114fbdad2760e57a21d485@o1120382.ingest.sentry.io/6156220\",\r\n integrations: [new Integrations.BrowserTracing()],\r\n\r\n // Set tracesSampleRate to 1.0 to capture 100%\r\n // of transactions for performance monitoring.\r\n // We recommend adjusting this value in production\r\n tracesSampleRate: 1.0,\r\n});\r\n\r\nLogRocket.init('by5azo/fabcore');\r\nsetupLogRocketReact(LogRocket);\r\n\r\n\r\n\r\nconst theme = createTheme({\r\n typography: {\r\n fontFamily: [\r\n 'Ubuntu',\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n },\r\n palette: {\r\n primary: {\r\n main: '#9142DB',\r\n }\r\n },\r\n components: {\r\n MuiTableCell: {\r\n defaultProps: {\r\n \r\n },\r\n styleOverrides: {\r\n root: {\r\n padding: '8px'\r\n }\r\n }\r\n },\r\n /*MuiFilledInput: {\r\n defaultProps: {\r\n disableUnderline: true\r\n },\r\n styleOverrides: {\r\n root: {\r\n background: grey[100],\r\n borderRadius: '8px',\r\n borderColor: grey[100],\r\n borderWidth: '2px',\r\n borderStyle: 'solid',\r\n \"&:hover\": {\r\n borderColor: grey[200],\r\n background: grey[200]\r\n },\r\n \"&.Mui-focused\": {\r\n borderColor: '#7c3aed',\r\n boxShadow: '0 0 0 0.25rem ' + purple[100]\r\n },\r\n },\r\n \r\n \r\n }\r\n },*/\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n borderRadius: '8px',\r\n boxShadow: 'none',\r\n textTransform: 'none',\r\n fontWeight: 400\r\n }\r\n }\r\n }\r\n // MuiFormLabel: {\r\n // styleOverrides: {\r\n // root: {\r\n // fontSize: '20px'\r\n // }\r\n // }\r\n // },\r\n // MuiInputLabel: {\r\n // styleOverrides: {\r\n // root: {\r\n // fontSize: '20px'\r\n // }\r\n // }\r\n // }\r\n }\r\n});\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"day\":\"TaskScheduler_day__2N7Yi\",\"user\":\"TaskScheduler_user__1wI_X\",\"scheduleGrid\":\"TaskScheduler_scheduleGrid__1uKyL\",\"dayHeader\":\"TaskScheduler_dayHeader__3GuYA\",\"dayHeaderDay\":\"TaskScheduler_dayHeaderDay__XBYZt\",\"dayHeaderDate\":\"TaskScheduler_dayHeaderDate__2-X_r\"};"],"sourceRoot":""}