Skip to content

Commit 128de46

Browse files
feat(all): permissions added, navlink problems solved delete button works, traineepage passes trainee in the vars to deleteaction
1 parent e0d0f4a commit 128de46

File tree

7 files changed

+48
-64
lines changed

7 files changed

+48
-64
lines changed

packages/backend/src/permissions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ export const permissions = shield<unknown, Context>(
8686
// Trainer mutations
8787
claimTrainee: and(authenticated, trainer),
8888
unclaimTrainee: and(authenticated, trainer),
89-
trainerMarkUserForDeletion: and(authenticated, admin),
90-
trainerUnMarkUserForDeletion: and(authenticated, admin),
89+
trainerMarkUserForDeletion: and(authenticated, trainer),
90+
trainerUnMarkUserForDeletion: and(authenticated, trainer),
9191

9292
// Trainer and Admin mutations
9393
createTrainee: and(authenticated, or(admin, trainer)),

packages/backend/src/resolvers/trainer.resolver.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import { updateUser, userById } from '../repositories/user.repo'
88
import { alexaSkillLinked } from '../services/alexa.service'
99
import { createT } from '../i18n'
1010
import { addMonths } from 'date-fns'
11-
import { isTrainee } from 'src/permissions'
12-
import { sendDeletionMail } from 'src/services/email.service'
11+
import { isTrainee } from '../permissions'
12+
import { sendDeletionMail } from '../services/email.service'
1313

1414
export const trainerResolver: GqlResolvers<TrainerContext> = {
1515
Trainer: {

packages/components/src/edit-user.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { JSX } from 'react'
1+
import React, { JSX, ReactNode } from 'react'
22
import styled from 'styled-components'
33

44
import { Container } from './container'
@@ -7,7 +7,7 @@ import { UnstyledLink } from './unstyled-link'
77

88
type EditUserLayoutProps = {
99
backButton: JSX.Element
10-
content: JSX.Element
10+
content?: ReactNode
1111
actions: JSX.Element
1212
}
1313

packages/frontend/src/components/renderDeleteAction.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
interface UseDeleteActionsProps {
1111
//id = routesId
1212
id: string | undefined
13-
currentUserId: string
13+
currentUserId: string | undefined
1414
}
1515

1616
interface MutationVariables {
@@ -41,7 +41,6 @@ export const useDeleteActions = ({ currentUserId, id }: UseDeleteActionsProps) =
4141
}
4242

4343
const selectQueryForType = (vars: MutationVariables) => {
44-
//Trainer
4544
if (isTrainer) {
4645
unmarkDeleteTrainer(vars)
4746
} else if (isAdmin) {

packages/frontend/src/components/trainee-row.tsx

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,13 @@ import {
1616
StyledWrapper,
1717
Flex,
1818
Box,
19-
EditUserLayout,
2019
} from '@lara/components'
2120

22-
import {
23-
Company,
24-
Trainee,
25-
Trainer,
26-
useClaimTraineeMutation,
27-
useUnclaimTraineeMutation,
28-
useUserPageQuery,
29-
} from '../graphql'
21+
import { Company, Trainee, Trainer, useClaimTraineeMutation, useUnclaimTraineeMutation } from '../graphql'
3022
import strings from '../locales/localization'
3123
import Avatar from './avatar'
3224
import Badge from './badge'
3325
import Loader from './loader'
34-
import { useDeleteActions } from './renderDeleteAction'
35-
import { DeletionModal } from './DeletionModal'
36-
import NavigationButtonLink from './navigation-button-link'
3726
interface TraineeRowProps {
3827
active?: boolean
3928
trainee: Pick<Trainee, 'startDate' | 'id' | 'firstName' | 'lastName' | 'course'> & {
@@ -64,16 +53,6 @@ const TraineeRow: React.FunctionComponent<TraineeRowProps> = (props) => {
6453
const [unclaimTrainee] = useUnclaimTraineeMutation()
6554
const [loading, setLoading] = React.useState(false)
6655

67-
console.log(loading, 'loading')
68-
const id = '1234'
69-
const vars = { variables: { id: id ?? '' } }
70-
const { data, loading: pagequeryloading } = useUserPageQuery(vars)
71-
console.log(id, 'id', props.trainerId, 'trainerid prop')
72-
const { renderDeleteAction, showDeletionModal, toggleDeletionModal, markForDeleteTrainer } = useDeleteActions({
73-
currentUserId: props.trainerId ?? '',
74-
id: id,
75-
})
76-
7756
const claim = async () => {
7857
setLoading(true)
7958

@@ -98,8 +77,8 @@ const TraineeRow: React.FunctionComponent<TraineeRowProps> = (props) => {
9877
setLoading(false)
9978
}
10079

101-
console.log(data?.getUser?.deleteAt, 'deleteAt')
10280
const { active, trainee, trainerId } = props
81+
10382
const headerDestination = active ? '/trainees/' : `/trainees/${trainee.id}`
10483
return (
10584
<StyledWrapper>
@@ -109,29 +88,6 @@ const TraineeRow: React.FunctionComponent<TraineeRowProps> = (props) => {
10988
<StyledName>
11089
{trainee.firstName} {trainee.lastName} TEST
11190
</StyledName>
112-
{!pagequeryloading && data?.companies && data?.getUser?.__typename === 'Trainee' && (
113-
<EditUserLayout
114-
backButton={
115-
<NavigationButtonLink
116-
label={strings.back}
117-
to="/trainees"
118-
icon="ChevronLeft"
119-
isLeft
120-
iconColor="iconLightGrey"
121-
/>
122-
}
123-
content={<div>Inhalt kommt hier</div>}
124-
actions={renderDeleteAction(data?.getUser?.deleteAt)}
125-
/>
126-
)}
127-
{!loading && (
128-
<DeletionModal
129-
show={showDeletionModal}
130-
onClose={toggleDeletionModal}
131-
onConfirm={() => markForDeleteTrainer(vars)}
132-
userName={`${trainee?.firstName} ${trainee?.lastName}`}
133-
/>
134-
)}
13591
<StyledCourse>{trainee.course}</StyledCourse>
13692
</StyledHeader>
13793
<StyledControls>

packages/frontend/src/pages/admin-edit-user-page.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,17 @@ export const AdminEditUserPage: React.FunctionComponent = () => {
2626
const vars = { variables: { id: id ?? '' } }
2727
const { data, loading } = useUserPageQuery(vars)
2828

29-
console.log(id, 'useparams', 'curuser', data?.currentUser?.id)
30-
3129
const { renderDeleteAction, showDeletionModal, toggleDeletionModal, markForDeleteAdmin } = useDeleteActions({
3230
currentUserId: data?.currentUser?.id ?? '',
3331
id: id ?? '',
3432
})
35-
//1234= Trainee aus url, useparams curuser 789= admin
3633

3734
const currentUser = data?.currentUser
3835
if (!currentUser) return null
3936

40-
console.log(data?.getUser?.deleteAt, 'deleteAt adminpage')
41-
4237
return (
4338
<Template type="Main">
4439
{loading && <Loader />}
45-
4640
{/* Edit Trainee page */}
4741
{!loading && data?.companies && data?.getUser?.__typename === 'Trainee' && (
4842
<EditUserLayout

packages/frontend/src/pages/trainee-page.tsx

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
import React from 'react'
22
import { useParams } from 'react-router'
33

4-
import { AdminCreateUserLayout, H1, Paragraph } from '@lara/components'
4+
import { AdminCreateUserLayout, EditUserLayout, H1, Paragraph } from '@lara/components'
55

66
import Loader from '../components/loader'
77
import TraineeRow from '../components/trainee-row'
8-
import { useCreateTraineeMutation, useTraineePageDataQuery } from '../graphql'
8+
import { useCreateTraineeMutation, useTraineePageDataQuery, useUserPageQuery } from '../graphql'
99
import strings from '../locales/localization'
1010
import { Template } from '../templates/template'
1111
import { Fab } from '../components/fab'
1212
import Modal from '../components/modal'
1313
import { EditTraineeFormData, TraineeForm } from '../components/trainee-form'
1414
import { useToastContext } from '../hooks/use-toast-context'
1515
import { GraphQLError } from 'graphql'
16+
import { DeletionModal } from '../components/DeletionModal'
17+
import NavigationButtonLink from '../components/navigation-button-link'
18+
import { useDeleteActions } from '../components/renderDeleteAction'
1619

1720
const 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

Comments
 (0)