/*********************************************************************************************************************
 *  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.                                               *
 *                                                                                                                   *
 *  Permission is hereby granted, free of charge, to any person obtaining a copy of                                  *
 *  this software and associated documentation files (the "Software"), to deal in                                    *
 *  the Software without restriction, including without limitation the rights to                                     *
 *  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of                                 *
 *  the Software, and to permit persons to whom the Software is furnished to do so.                                  *
 *                                                                                                                   *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR                                       *
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS                                 *
 *  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR                                   *
 *  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER                                   *
 *  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN                                          *
 *  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                                       *
 *********************************************************************************************************************/

import { ReactElement } from 'react'
import { Route, Switch } from 'react-router-dom'
import { AssetProvider } from '../../../contexts/AssetContext'
import { TrainingTemplateProvider } from '../../../contexts/TrainingTemplateContext'
import { InfoProvider } from '../../../contexts/InfoContext'
import { appvars } from '../../../config'
import { TrainingTemplateDetails } from '../TrainingTemplateDetails'
import { TrainingTemplateEditor } from '../TrainingTemplateEditor'
import { TrainingTemplateList } from '../TrainingTemplateList'

export const TrainingTemplateRouter = (): ReactElement => {
  return (
    <TrainingTemplateProvider>
      <InfoProvider>
        <Switch>
          <Route
            exact
            path={[
              `/${appvars.URL.TRAINING_TEMPLATE}/:trainingTemplateId/edit`,
              `/${appvars.URL.TRAINING_TEMPLATE}/new`,
            ]}
          >
            <AssetProvider>
              <TrainingTemplateEditor />
            </AssetProvider>
          </Route>
          <Route exact path={[`/${appvars.URL.TRAINING_TEMPLATE}/:trainingTemplateId`]}>
            <TrainingTemplateDetails />
          </Route>
          <Route>
            <TrainingTemplateList />
          </Route>
        </Switch>
      </InfoProvider>
    </TrainingTemplateProvider>
  )
}
