@@ -1766,18 +1766,54 @@ const ExtensionsTab = () => {
1766
1766
1767
1767
const MappingsTab = ( ) => {
1768
1768
const [ listHaloBackend , listBackendHaloResult = [ ] ] = useLazyGenericGetRequestQuery ( )
1769
+ const [ listNinjaOrgsBackend , listBackendNinjaOrgsResult ] = useLazyGenericGetRequestQuery ( )
1770
+ const [ listNinjaFieldsBackend , listBackendNinjaFieldsResult ] = useLazyGenericGetRequestQuery ( )
1769
1771
const [ setHaloExtensionconfig , extensionHaloConfigResult = [ ] ] = useLazyGenericPostRequestQuery ( )
1772
+ const [ setNinjaOrgsExtensionconfig , extensionNinjaOrgsConfigResult ] =
1773
+ useLazyGenericPostRequestQuery ( )
1774
+ const [ setNinjaOrgsExtensionAutomap , extensionNinjaOrgsAutomapResult ] =
1775
+ useLazyGenericPostRequestQuery ( )
1776
+ const [ setNinjaFieldsExtensionconfig , extensionNinjaFieldsConfigResult ] =
1777
+ useLazyGenericPostRequestQuery ( )
1770
1778
1771
1779
const onHaloSubmit = ( values ) => {
1772
1780
setHaloExtensionconfig ( {
1773
1781
path : 'api/ExecExtensionMapping?AddMapping=Halo' ,
1774
1782
values : { mappings : values } ,
1775
1783
} )
1776
1784
}
1785
+ const onNinjaOrgsSubmit = ( values ) => {
1786
+ setNinjaOrgsExtensionconfig ( {
1787
+ path : 'api/ExecExtensionMapping?AddMapping=NinjaOrgs' ,
1788
+ values : { mappings : values } ,
1789
+ } )
1790
+ }
1791
+
1792
+ const onNinjaOrgsAutomap = async ( values ) => {
1793
+ await setNinjaOrgsExtensionAutomap ( {
1794
+ path : 'api/ExecExtensionMapping?AutoMapping=NinjaOrgs' ,
1795
+ values : { mappings : values } ,
1796
+ } )
1797
+ await listNinjaOrgsBackend ( {
1798
+ path : 'api/ExecExtensionMapping?List=NinjaOrgs' ,
1799
+ } )
1800
+ }
1801
+
1802
+ const onNinjaFieldsSubmit = ( values ) => {
1803
+ setNinjaFieldsExtensionconfig ( {
1804
+ path : 'api/ExecExtensionMapping?AddMapping=NinjaFields' ,
1805
+
1806
+ values : { mappings : values } ,
1807
+ } )
1808
+ }
1777
1809
return (
1778
1810
< div >
1779
1811
{ listBackendHaloResult . isUninitialized &&
1780
1812
listHaloBackend ( { path : 'api/ExecExtensionMapping?List=Halo' } ) }
1813
+ { listBackendNinjaOrgsResult . isUninitialized &&
1814
+ listNinjaOrgsBackend ( { path : 'api/ExecExtensionMapping?List=NinjaOrgs' } ) }
1815
+ { listBackendNinjaFieldsResult . isUninitialized &&
1816
+ listNinjaFieldsBackend ( { path : 'api/ExecExtensionMapping?List=NinjaFields' } ) }
1781
1817
< >
1782
1818
< CCard className = "mb-3" >
1783
1819
< CCardHeader >
@@ -1831,6 +1867,154 @@ const MappingsTab = () => {
1831
1867
) }
1832
1868
</ CCardBody >
1833
1869
</ CCard >
1870
+ < CCard className = "mb-3" >
1871
+ < CCardHeader >
1872
+ < CCardTitle > NinjaOne Field Mapping Table</ CCardTitle >
1873
+ </ CCardHeader >
1874
+ < CCardBody >
1875
+ { listBackendNinjaFieldsResult . isFetching ? (
1876
+ < CSpinner color = "primary" />
1877
+ ) : (
1878
+ < Form
1879
+ onSubmit = { onNinjaFieldsSubmit }
1880
+ initialValues = { listBackendNinjaFieldsResult . data ?. Mappings }
1881
+ render = { ( { handleSubmit, submitting, values } ) => {
1882
+ return (
1883
+ < CForm onSubmit = { handleSubmit } >
1884
+ < CCardText >
1885
+ < h5 > Organization Global Custom Field Mapping</ h5 >
1886
+ < p >
1887
+ Use the table below to map your Organization Field to the correct NinjaOne
1888
+ Field
1889
+ </ p >
1890
+ { listBackendNinjaFieldsResult . isSuccess &&
1891
+ listBackendNinjaFieldsResult . data . CIPPOrgFields . map ( ( CIPPOrgFields ) => (
1892
+ < RFFSelectSearch
1893
+ key = { CIPPOrgFields . InternalName }
1894
+ name = { CIPPOrgFields . InternalName }
1895
+ label = { CIPPOrgFields . Type + ' - ' + CIPPOrgFields . Description }
1896
+ values = { listBackendNinjaFieldsResult . data . NinjaOrgFields . filter (
1897
+ ( item ) => item . type === CIPPOrgFields . Type || item . type === 'unset' ,
1898
+ ) }
1899
+ placeholder = "Select a Field"
1900
+ />
1901
+ ) ) }
1902
+ </ CCardText >
1903
+ < CCardText >
1904
+ < h5 > Device Custom Field Mapping</ h5 >
1905
+ < p >
1906
+ Use the table below to map your Device field to the correct NinjaOne
1907
+ WYSIWYG Field
1908
+ </ p >
1909
+ { listBackendNinjaFieldsResult . isSuccess &&
1910
+ listBackendNinjaFieldsResult . data . CIPPNodeFields . map ( ( CIPPNodeFields ) => (
1911
+ < RFFSelectSearch
1912
+ key = { CIPPNodeFields . InternalName }
1913
+ name = { CIPPNodeFields . InternalName }
1914
+ label = { CIPPNodeFields . Type + ' - ' + CIPPNodeFields . Description }
1915
+ values = { listBackendNinjaFieldsResult . data . NinjaNodeFields . filter (
1916
+ ( item ) =>
1917
+ item . type === CIPPNodeFields . Type || item . type === 'unset' ,
1918
+ ) }
1919
+ placeholder = "Select a Field"
1920
+ />
1921
+ ) ) }
1922
+ </ CCardText >
1923
+ < CCol className = "me-2" >
1924
+ < CButton className = "me-2" type = "submit" >
1925
+ { extensionNinjaFieldsConfigResult . isFetching && (
1926
+ < FontAwesomeIcon icon = { faCircleNotch } spin className = "me-2" size = "1x" />
1927
+ ) }
1928
+ Set Mappings
1929
+ </ CButton >
1930
+ { ( extensionNinjaFieldsConfigResult . isSuccess ||
1931
+ extensionNinjaFieldsConfigResult . isError ) && (
1932
+ < CCallout
1933
+ color = {
1934
+ extensionNinjaFieldsConfigResult . isSuccess ? 'success' : 'danger'
1935
+ }
1936
+ >
1937
+ { extensionNinjaFieldsConfigResult . isSuccess
1938
+ ? extensionNinjaFieldsConfigResult . data . Results
1939
+ : 'Error' }
1940
+ </ CCallout >
1941
+ ) }
1942
+ </ CCol >
1943
+ </ CForm >
1944
+ )
1945
+ } }
1946
+ />
1947
+ ) }
1948
+ </ CCardBody >
1949
+ </ CCard >
1950
+ < CCard className = "mb-3" >
1951
+ < CCardHeader >
1952
+ < CCardTitle > NinjaOne Organization Mapping Table</ CCardTitle >
1953
+ </ CCardHeader >
1954
+ < CCardBody >
1955
+ { listBackendNinjaOrgsResult . isFetching ? (
1956
+ < CSpinner color = "primary" />
1957
+ ) : (
1958
+ < Form
1959
+ onSubmit = { onNinjaOrgsSubmit }
1960
+ initialValues = { listBackendNinjaOrgsResult . data ?. Mappings }
1961
+ render = { ( { handleSubmit, submitting, values } ) => {
1962
+ return (
1963
+ < CForm onSubmit = { handleSubmit } >
1964
+ < CCardText >
1965
+ Use the table below to map your client to the correct NinjaOne Organization
1966
+ { listBackendNinjaOrgsResult . isSuccess &&
1967
+ listBackendNinjaOrgsResult . data . Tenants . map ( ( tenant ) => (
1968
+ < RFFSelectSearch
1969
+ key = { tenant . customerId }
1970
+ name = { tenant . customerId }
1971
+ label = { tenant . displayName }
1972
+ values = { listBackendNinjaOrgsResult . data . NinjaOrgs }
1973
+ placeholder = "Select an Organization"
1974
+ />
1975
+ ) ) }
1976
+ </ CCardText >
1977
+ < CCol className = "me-2" >
1978
+ < CButton className = "me-2" type = "submit" >
1979
+ { extensionNinjaOrgsConfigResult . isFetching && (
1980
+ < FontAwesomeIcon icon = { faCircleNotch } spin className = "me-2" size = "1x" />
1981
+ ) }
1982
+ Set Mappings
1983
+ </ CButton >
1984
+ < CButton onClick = { ( ) => onNinjaOrgsAutomap ( ) } className = "me-2" >
1985
+ { extensionNinjaOrgsAutomapResult . isFetching && (
1986
+ < FontAwesomeIcon icon = { faCircleNotch } spin className = "me-2" size = "1x" />
1987
+ ) }
1988
+ Automap NinjaOne Organizations
1989
+ </ CButton >
1990
+ { ( extensionNinjaOrgsConfigResult . isSuccess ||
1991
+ extensionNinjaOrgsConfigResult . isError ) && (
1992
+ < CCallout
1993
+ color = { extensionNinjaOrgsConfigResult . isSuccess ? 'success' : 'danger' }
1994
+ >
1995
+ { extensionNinjaOrgsConfigResult . isSuccess
1996
+ ? extensionNinjaOrgsConfigResult . data . Results
1997
+ : 'Error' }
1998
+ </ CCallout >
1999
+ ) }
2000
+ { ( extensionNinjaOrgsAutomapResult . isSuccess ||
2001
+ extensionNinjaOrgsAutomapResult . isError ) && (
2002
+ < CCallout
2003
+ color = { extensionNinjaOrgsAutomapResult . isSuccess ? 'success' : 'danger' }
2004
+ >
2005
+ { extensionNinjaOrgsAutomapResult . isSuccess
2006
+ ? extensionNinjaOrgsAutomapResult . data . Results
2007
+ : 'Error' }
2008
+ </ CCallout >
2009
+ ) }
2010
+ </ CCol >
2011
+ </ CForm >
2012
+ )
2013
+ } }
2014
+ />
2015
+ ) }
2016
+ </ CCardBody >
2017
+ </ CCard >
1834
2018
</ >
1835
2019
</ div >
1836
2020
)
0 commit comments