11import React from 'react'
22import { useParams } from 'react-router'
33
4- import { AdminCreateUserLayout , H1 , Paragraph } from '@lara/components'
4+ import { AdminCreateUserLayout , EditUserLayout , H1 , Paragraph } from '@lara/components'
55
66import Loader from '../components/loader'
77import TraineeRow from '../components/trainee-row'
8- import { useCreateTraineeMutation , useTraineePageDataQuery } from '../graphql'
8+ import { useCreateTraineeMutation , useTraineePageDataQuery , useUserPageQuery } from '../graphql'
99import strings from '../locales/localization'
1010import { Template } from '../templates/template'
1111import { Fab } from '../components/fab'
1212import Modal from '../components/modal'
1313import { EditTraineeFormData , TraineeForm } from '../components/trainee-form'
1414import { useToastContext } from '../hooks/use-toast-context'
1515import { GraphQLError } from 'graphql'
16+ import { DeletionModal } from '../components/DeletionModal'
17+ import NavigationButtonLink from '../components/navigation-button-link'
18+ import { useDeleteActions } from '../components/renderDeleteAction'
1619
1720const TraineePage : React . FunctionComponent = ( ) => {
1821 const { trainee } = useParams ( )
1922 const { loading, data } = useTraineePageDataQuery ( )
23+ const vars = { variables : { id : trainee ?? '' } }
24+ const { data : dataPageQuery , loading : pagequeryloading } = useUserPageQuery ( vars )
2025 const [ mutate ] = useCreateTraineeMutation ( )
2126 const { addToast } = useToastContext ( )
2227 const [ showModal , setShowModal ] = React . useState ( false )
@@ -25,6 +30,11 @@ const TraineePage: React.FunctionComponent = () => {
2530 return id === trainee
2631 }
2732
33+ const { renderDeleteAction, showDeletionModal, toggleDeletionModal, markForDeleteTrainer } = useDeleteActions ( {
34+ currentUserId : dataPageQuery ?. currentUser ?. id ,
35+ id : trainee ,
36+ } )
37+
2838 const createTrainee = async ( data : EditTraineeFormData ) => {
2939 await mutate ( {
3040 variables : { input : data } ,
@@ -55,16 +65,41 @@ const TraineePage: React.FunctionComponent = () => {
5565 } )
5666 } )
5767 }
58-
68+ const activeTrainee = data ?. trainees . find ( ( t ) => isActive ( t . id ) )
5969 return (
6070 < Template type = "Main" >
61- < H1 > TEST</ H1 >
6271 { loading && < Loader /> }
6372
6473 { ! loading &&
6574 data ?. trainees . map ( ( trainee , index ) => (
6675 < TraineeRow trainee = { trainee } trainerId = { data . currentUser ?. id } key = { index } active = { isActive ( trainee . id ) } />
6776 ) ) }
77+ { activeTrainee && (
78+ < div >
79+ { ! pagequeryloading && dataPageQuery ?. companies && dataPageQuery ?. getUser ?. __typename === 'Trainee' && (
80+ < EditUserLayout
81+ backButton = {
82+ < NavigationButtonLink
83+ label = { strings . back }
84+ to = "/trainees"
85+ icon = "ChevronLeft"
86+ isLeft
87+ iconColor = "iconLightGrey"
88+ />
89+ }
90+ actions = { renderDeleteAction ( dataPageQuery ?. getUser ?. deleteAt ) }
91+ />
92+ ) }
93+ { ! loading && (
94+ < DeletionModal
95+ show = { showDeletionModal }
96+ onClose = { toggleDeletionModal }
97+ onConfirm = { ( ) => markForDeleteTrainer ( vars ) }
98+ userName = { `${ activeTrainee ?. firstName } ${ activeTrainee ?. lastName } ` }
99+ />
100+ ) }
101+ </ div >
102+ ) }
68103
69104 < Fab icon = "Plus" large onClick = { ( ) => setShowModal ( true ) } />
70105
0 commit comments