Skip to content

Commit e2a1fce

Browse files
Add a support inquiry form (#802)
* Add a support inquiry form * Format UI code * Fix some accessibility and lint warnings * Fix update ticket modal for ticket details page * Update new ticket notification email to not send to disabled admins
1 parent bda4dd0 commit e2a1fce

File tree

254 files changed

+34678
-34247
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

254 files changed

+34678
-34247
lines changed

docs/swagger/docs.go

Lines changed: 431 additions & 0 deletions
Large diffs are not rendered by default.

docs/swagger/swagger.json

Lines changed: 431 additions & 0 deletions
Large diffs are not rendered by default.

docs/swagger/swagger.yaml

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,15 @@ definitions:
324324
role:
325325
type: string
326326
type: object
327+
http.pagination:
328+
properties:
329+
count:
330+
type: integer
331+
limit:
332+
type: integer
333+
offset:
334+
type: integer
335+
type: object
327336
http.planRequestBody:
328337
properties:
329338
acceptanceCriteria:
@@ -710,6 +719,25 @@ definitions:
710719
required:
711720
- type
712721
type: object
722+
http.supportTicketUpdateRequestBody:
723+
properties:
724+
assignedTo:
725+
type: string
726+
email:
727+
type: string
728+
fullName:
729+
type: string
730+
inquiry:
731+
type: string
732+
markResolved:
733+
type: boolean
734+
notes:
735+
type: string
736+
required:
737+
- email
738+
- fullName
739+
- inquiry
740+
type: object
713741
http.teamCreateRequestBody:
714742
properties:
715743
name:
@@ -920,6 +948,8 @@ definitions:
920948
type: integer
921949
estimationScaleCount:
922950
type: integer
951+
openSupportTicketCount:
952+
type: integer
923953
orgSubscriptionActiveCount:
924954
type: integer
925955
organizationCount:
@@ -1728,6 +1758,31 @@ definitions:
17281758
user_id:
17291759
type: string
17301760
type: object
1761+
thunderdome.SupportTicket:
1762+
properties:
1763+
assignedTo:
1764+
type: string
1765+
createdAt:
1766+
type: string
1767+
email:
1768+
type: string
1769+
fullName:
1770+
type: string
1771+
id:
1772+
type: string
1773+
inquiry:
1774+
type: string
1775+
notes:
1776+
type: string
1777+
resolvedAt:
1778+
type: string
1779+
resolvedBy:
1780+
type: string
1781+
updatedAt:
1782+
type: string
1783+
userId:
1784+
type: string
1785+
type: object
17311786
thunderdome.Team:
17321787
properties:
17331788
createdDate:
@@ -2256,6 +2311,44 @@ paths:
22562311
schema:
22572312
$ref: '#/definitions/http.standardJsonResponse'
22582313
summary: Get Active Countries
2314+
/admin/admin-users:
2315+
get:
2316+
description: List admin users with pagination
2317+
parameters:
2318+
- description: Max number of results to return
2319+
in: query
2320+
name: limit
2321+
type: integer
2322+
- description: Starting point to return rows from, should be multiplied by limit
2323+
or 0
2324+
in: query
2325+
name: offset
2326+
type: integer
2327+
produces:
2328+
- application/json
2329+
responses:
2330+
"200":
2331+
description: OK
2332+
schema:
2333+
allOf:
2334+
- $ref: '#/definitions/http.standardJsonResponse'
2335+
- properties:
2336+
' meta':
2337+
$ref: '#/definitions/http.pagination'
2338+
data:
2339+
items:
2340+
$ref: '#/definitions/thunderdome.User'
2341+
type: array
2342+
type: object
2343+
"500":
2344+
description: Internal Server Error
2345+
schema:
2346+
$ref: '#/definitions/http.standardJsonResponse'
2347+
security:
2348+
- ApiKeyAuth: []
2349+
summary: List Admin Users
2350+
tags:
2351+
- admin
22592352
/admin/apikeys:
22602353
get:
22612354
description: Get a list of users API Keys
@@ -3000,6 +3093,143 @@ paths:
30003093
summary: Get Application Stats
30013094
tags:
30023095
- admin
3096+
/admin/support-tickets:
3097+
get:
3098+
description: List support tickets with pagination
3099+
parameters:
3100+
- description: Max number of results to return
3101+
in: query
3102+
name: limit
3103+
type: integer
3104+
- description: Starting point to return rows from, should be multiplied by limit
3105+
or 0
3106+
in: query
3107+
name: offset
3108+
type: integer
3109+
produces:
3110+
- application/json
3111+
responses:
3112+
"200":
3113+
description: OK
3114+
schema:
3115+
allOf:
3116+
- $ref: '#/definitions/http.standardJsonResponse'
3117+
- properties:
3118+
' meta':
3119+
$ref: '#/definitions/http.pagination'
3120+
data:
3121+
items:
3122+
$ref: '#/definitions/thunderdome.SupportTicket'
3123+
type: array
3124+
type: object
3125+
"500":
3126+
description: Internal Server Error
3127+
schema:
3128+
$ref: '#/definitions/http.standardJsonResponse'
3129+
security:
3130+
- ApiKeyAuth: []
3131+
summary: List Support Tickets
3132+
tags:
3133+
- admin
3134+
/admin/support-tickets/{ticketId}:
3135+
delete:
3136+
description: Delete a support ticket by its ID
3137+
parameters:
3138+
- description: The support ticket ID
3139+
in: path
3140+
name: ticketId
3141+
required: true
3142+
type: string
3143+
produces:
3144+
- application/json
3145+
responses:
3146+
"200":
3147+
description: OK
3148+
schema:
3149+
$ref: '#/definitions/http.standardJsonResponse'
3150+
"500":
3151+
description: Internal Server Error
3152+
schema:
3153+
$ref: '#/definitions/http.standardJsonResponse'
3154+
security:
3155+
- ApiKeyAuth: []
3156+
summary: Delete Support Ticket
3157+
tags:
3158+
- admin
3159+
get:
3160+
description: Get a support ticket by its ID
3161+
parameters:
3162+
- description: The support ticket ID
3163+
in: path
3164+
name: ticketId
3165+
required: true
3166+
type: string
3167+
produces:
3168+
- application/json
3169+
responses:
3170+
"200":
3171+
description: OK
3172+
schema:
3173+
allOf:
3174+
- $ref: '#/definitions/http.standardJsonResponse'
3175+
- properties:
3176+
data:
3177+
$ref: '#/definitions/thunderdome.SupportTicket'
3178+
type: object
3179+
"404":
3180+
description: Not Found
3181+
schema:
3182+
$ref: '#/definitions/http.standardJsonResponse'
3183+
"500":
3184+
description: Internal Server Error
3185+
schema:
3186+
$ref: '#/definitions/http.standardJsonResponse'
3187+
security:
3188+
- ApiKeyAuth: []
3189+
summary: Get Support Ticket by ID
3190+
tags:
3191+
- admin
3192+
put:
3193+
consumes:
3194+
- application/json
3195+
description: Update a support ticket
3196+
parameters:
3197+
- description: The support ticket ID
3198+
in: path
3199+
name: ticketId
3200+
required: true
3201+
type: string
3202+
- description: The support ticket object
3203+
in: body
3204+
name: ticket
3205+
required: true
3206+
schema:
3207+
$ref: '#/definitions/http.supportTicketUpdateRequestBody'
3208+
produces:
3209+
- application/json
3210+
responses:
3211+
"200":
3212+
description: OK
3213+
schema:
3214+
allOf:
3215+
- $ref: '#/definitions/http.standardJsonResponse'
3216+
- properties:
3217+
data:
3218+
$ref: '#/definitions/thunderdome.SupportTicket'
3219+
type: object
3220+
"400":
3221+
description: Bad Request
3222+
schema:
3223+
$ref: '#/definitions/http.standardJsonResponse'
3224+
"500":
3225+
description: Internal Server Error
3226+
schema:
3227+
$ref: '#/definitions/http.standardJsonResponse'
3228+
security:
3229+
- ApiKeyAuth: []
3230+
summary: Update Support Ticket
3231+
tags:
3232+
- admin
30033233
/admin/teams:
30043234
get:
30053235
description: Get a list of teams
@@ -10672,6 +10902,40 @@ paths:
1067210902
summary: Update Entity User Subscriptions
1067310903
tags:
1067410904
- subscription
10905+
/users/{userId}/support-ticket:
10906+
post:
10907+
description: Creates a support ticket for the session user
10908+
parameters:
10909+
- description: the user ID
10910+
in: path
10911+
name: userId
10912+
required: true
10913+
type: string
10914+
produces:
10915+
- application/json
10916+
responses:
10917+
"200":
10918+
description: OK
10919+
schema:
10920+
allOf:
10921+
- $ref: '#/definitions/http.standardJsonResponse'
10922+
- properties:
10923+
data:
10924+
$ref: '#/definitions/thunderdome.SupportTicket'
10925+
type: object
10926+
"403":
10927+
description: Forbidden
10928+
schema:
10929+
$ref: '#/definitions/http.standardJsonResponse'
10930+
"500":
10931+
description: Internal Server Error
10932+
schema:
10933+
$ref: '#/definitions/http.standardJsonResponse'
10934+
security:
10935+
- ApiKeyAuth: []
10936+
summary: Create Support Ticket
10937+
tags:
10938+
- user
1067510939
/users/{userId}/teams:
1067610940
get:
1067710941
description: Get a list of teams the user is a part of

e2e/tests/admin/admin.spec.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,15 @@ test.describe("Admin page", { tag: ["@administration"] }, () => {
4848
// admin nav items are present
4949
const nav = ap.page.locator('[data-testid="admin-nav-item"]');
5050
await expect(nav.nth(0)).toHaveText("Admin");
51-
await expect(nav.nth(1)).toHaveText("Alerts");
52-
await expect(nav.nth(2)).toHaveText("Games");
53-
await expect(nav.nth(3)).toHaveText("Retros");
54-
await expect(nav.nth(4)).toHaveText("Storyboards");
55-
await expect(nav.nth(5)).toHaveText("Organizations");
56-
await expect(nav.nth(6)).toHaveText("Teams");
57-
await expect(nav.nth(7)).toHaveText("Users");
58-
await expect(nav.nth(8)).toHaveText("API Keys");
51+
await expect(nav.nth(1)).toHaveText("Support Tickets");
52+
await expect(nav.nth(2)).toHaveText("Alerts");
53+
await expect(nav.nth(3)).toHaveText("Games");
54+
await expect(nav.nth(4)).toHaveText("Retros");
55+
await expect(nav.nth(5)).toHaveText("Storyboards");
56+
await expect(nav.nth(6)).toHaveText("Organizations");
57+
await expect(nav.nth(7)).toHaveText("Teams");
58+
await expect(nav.nth(8)).toHaveText("Users");
59+
await expect(nav.nth(9)).toHaveText("API Keys");
5960
});
6061
});
6162
});

0 commit comments

Comments
 (0)