@things-factory/pdf 7.0.33 → 7.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/client/bootstrap.js +6 -0
  2. package/client/pages/pdf-release/pdf-release-importer.ts +90 -0
  3. package/client/pages/pdf-release/pdf-release-list-page.ts +398 -0
  4. package/client/pages/pdf-template/pdf-template-importer.ts +86 -0
  5. package/client/pages/pdf-template/pdf-template-list-page.ts +491 -0
  6. package/client/route.ts +11 -0
  7. package/client/tsconfig.json +13 -0
  8. package/dist-client/bootstrap.d.ts +1 -0
  9. package/dist-client/bootstrap.js +6 -0
  10. package/dist-client/bootstrap.js.map +1 -0
  11. package/dist-client/pages/pdf-release/pdf-release-importer.d.ts +23 -0
  12. package/dist-client/pages/pdf-release/pdf-release-importer.js +93 -0
  13. package/dist-client/pages/pdf-release/pdf-release-importer.js.map +1 -0
  14. package/dist-client/pages/pdf-release/pdf-release-list-page.d.ts +66 -0
  15. package/dist-client/pages/pdf-release/pdf-release-list-page.js +370 -0
  16. package/dist-client/pages/pdf-release/pdf-release-list-page.js.map +1 -0
  17. package/dist-client/pages/pdf-template/pdf-template-importer.d.ts +23 -0
  18. package/dist-client/pages/pdf-template/pdf-template-importer.js +93 -0
  19. package/dist-client/pages/pdf-template/pdf-template-importer.js.map +1 -0
  20. package/dist-client/pages/pdf-template/pdf-template-list-page.d.ts +66 -0
  21. package/dist-client/pages/pdf-template/pdf-template-list-page.js +464 -0
  22. package/dist-client/pages/pdf-template/pdf-template-list-page.js.map +1 -0
  23. package/dist-client/route.d.ts +1 -0
  24. package/dist-client/route.js +11 -0
  25. package/dist-client/route.js.map +1 -0
  26. package/dist-client/tsconfig.tsbuildinfo +1 -0
  27. package/dist-server/controller/pdf-service.d.ts +4 -0
  28. package/dist-server/controller/pdf-service.js +34 -0
  29. package/dist-server/controller/pdf-service.js.map +1 -0
  30. package/dist-server/index.d.ts +1 -0
  31. package/dist-server/index.js +2 -0
  32. package/dist-server/index.js.map +1 -1
  33. package/dist-server/routers/pdf-private-router.d.ts +1 -0
  34. package/dist-server/routers/pdf-private-router.js +72 -0
  35. package/dist-server/routers/pdf-private-router.js.map +1 -0
  36. package/dist-server/routers/pdf-public-router.d.ts +1 -0
  37. package/dist-server/routers/{pdf-router.js → pdf-public-router.js} +6 -6
  38. package/dist-server/routers/pdf-public-router.js.map +1 -0
  39. package/dist-server/routes.js +13 -2
  40. package/dist-server/routes.js.map +1 -1
  41. package/dist-server/service/index.d.ts +7 -0
  42. package/dist-server/service/index.js +31 -0
  43. package/dist-server/service/index.js.map +1 -0
  44. package/dist-server/service/pdf-generate/pdf-generate-resolver.d.ts +6 -0
  45. package/dist-server/service/pdf-generate/pdf-generate-resolver.js +88 -0
  46. package/dist-server/service/pdf-generate/pdf-generate-resolver.js.map +1 -0
  47. package/dist-server/service/pdf-release/index.d.ts +6 -0
  48. package/dist-server/service/pdf-release/index.js +10 -0
  49. package/dist-server/service/pdf-release/index.js.map +1 -0
  50. package/dist-server/service/pdf-release/pdf-release-mutation.d.ts +10 -0
  51. package/dist-server/service/pdf-release/pdf-release-mutation.js +127 -0
  52. package/dist-server/service/pdf-release/pdf-release-mutation.js.map +1 -0
  53. package/dist-server/service/pdf-release/pdf-release-query.d.ts +11 -0
  54. package/dist-server/service/pdf-release/pdf-release-query.js +79 -0
  55. package/dist-server/service/pdf-release/pdf-release-query.js.map +1 -0
  56. package/dist-server/service/pdf-release/pdf-release-type.d.ts +20 -0
  57. package/dist-server/service/pdf-release/pdf-release-type.js +77 -0
  58. package/dist-server/service/pdf-release/pdf-release-type.js.map +1 -0
  59. package/dist-server/service/pdf-release/pdf-release.d.ts +27 -0
  60. package/dist-server/service/pdf-release/pdf-release.js +117 -0
  61. package/dist-server/service/pdf-release/pdf-release.js.map +1 -0
  62. package/dist-server/service/pdf-template/index.d.ts +6 -0
  63. package/dist-server/service/pdf-template/index.js +10 -0
  64. package/dist-server/service/pdf-template/index.js.map +1 -0
  65. package/dist-server/service/pdf-template/pdf-template-mutation.d.ts +10 -0
  66. package/dist-server/service/pdf-template/pdf-template-mutation.js +127 -0
  67. package/dist-server/service/pdf-template/pdf-template-mutation.js.map +1 -0
  68. package/dist-server/service/pdf-template/pdf-template-query.d.ts +11 -0
  69. package/dist-server/service/pdf-template/pdf-template-query.js +79 -0
  70. package/dist-server/service/pdf-template/pdf-template-query.js.map +1 -0
  71. package/dist-server/service/pdf-template/pdf-template-type.d.ts +32 -0
  72. package/dist-server/service/pdf-template/pdf-template-type.js +125 -0
  73. package/dist-server/service/pdf-template/pdf-template-type.js.map +1 -0
  74. package/dist-server/service/pdf-template/pdf-template.d.ts +28 -0
  75. package/dist-server/service/pdf-template/pdf-template.js +125 -0
  76. package/dist-server/service/pdf-template/pdf-template.js.map +1 -0
  77. package/dist-server/tsconfig.tsbuildinfo +1 -1
  78. package/helps/pdf/pdf-release.md +160 -0
  79. package/helps/pdf/pdf-template.md +160 -0
  80. package/package.json +15 -8
  81. package/server/controller/pdf-service.ts +35 -0
  82. package/server/index.ts +2 -0
  83. package/server/routers/pdf-private-router.ts +85 -0
  84. package/server/routers/{pdf-router.ts → pdf-public-router.ts} +4 -4
  85. package/server/routes.ts +14 -2
  86. package/server/service/index.ts +38 -0
  87. package/server/service/pdf-generate/pdf-generate-resolver.ts +81 -0
  88. package/server/service/pdf-release/index.ts +7 -0
  89. package/server/service/pdf-release/pdf-release-mutation.ts +138 -0
  90. package/server/service/pdf-release/pdf-release-query.ts +51 -0
  91. package/server/service/pdf-release/pdf-release-type.ts +55 -0
  92. package/server/service/pdf-release/pdf-release.ts +103 -0
  93. package/server/service/pdf-template/index.ts +7 -0
  94. package/server/service/pdf-template/pdf-template-mutation.ts +138 -0
  95. package/server/service/pdf-template/pdf-template-query.ts +51 -0
  96. package/server/service/pdf-template/pdf-template-type.ts +87 -0
  97. package/server/service/pdf-template/pdf-template.ts +108 -0
  98. package/server/tsconfig.json +10 -0
  99. package/things-factory.config.js +8 -1
  100. package/translations/en.json +11 -0
  101. package/translations/ja.json +9 -0
  102. package/translations/ko.json +11 -0
  103. package/translations/ms.json +9 -0
  104. package/translations/zh.json +9 -0
  105. package/dist-server/routers/pdf-router.d.ts +0 -1
  106. package/dist-server/routers/pdf-router.js.map +0 -1
  107. package/tsconfig.json +0 -9
@@ -0,0 +1,138 @@
1
+ import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
+
4
+ import { PDFRelease } from './pdf-release'
5
+ import { NewPDFRelease, PDFReleasePatch } from './pdf-release-type'
6
+
7
+ @Resolver(PDFRelease)
8
+ export class PDFReleaseMutation {
9
+ @Directive('@transaction')
10
+ @Mutation(returns => PDFRelease, { description: 'To create new PDFRelease' })
11
+ async createPDFRelease(
12
+ @Arg('pdfRelease') pdfRelease: NewPDFRelease,
13
+ @Ctx() context: ResolverContext
14
+ ): Promise<PDFRelease> {
15
+ const { domain, user, tx } = context.state
16
+
17
+ const result = await tx.getRepository(PDFRelease).save({
18
+ ...pdfRelease,
19
+ domain,
20
+ creator: user,
21
+ updater: user
22
+ })
23
+
24
+ return result
25
+ }
26
+
27
+ @Directive('@transaction')
28
+ @Mutation(returns => PDFRelease, { description: 'To modify PDFRelease information' })
29
+ async updatePDFRelease(
30
+ @Arg('id') id: string,
31
+ @Arg('patch') patch: PDFReleasePatch,
32
+ @Ctx() context: ResolverContext
33
+ ): Promise<PDFRelease> {
34
+ const { domain, user, tx } = context.state
35
+
36
+ const repository = tx.getRepository(PDFRelease)
37
+ const pdfRelease = await repository.findOne({
38
+ where: { domain: { id: domain.id }, id }
39
+ })
40
+
41
+ const result = await repository.save({
42
+ ...pdfRelease,
43
+ ...patch,
44
+ updater: user
45
+ })
46
+
47
+ return result
48
+ }
49
+
50
+ @Directive('@transaction')
51
+ @Mutation(returns => [PDFRelease], { description: "To modify multiple PDFReleases' information" })
52
+ async updateMultiplePDFRelease(
53
+ @Arg('patches', type => [PDFReleasePatch]) patches: PDFReleasePatch[],
54
+ @Ctx() context: ResolverContext
55
+ ): Promise<PDFRelease[]> {
56
+ const { domain, user, tx } = context.state
57
+
58
+ let results = []
59
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
60
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
61
+ const pdfReleaseRepo = tx.getRepository(PDFRelease)
62
+
63
+ if (_createRecords.length > 0) {
64
+ for (let i = 0; i < _createRecords.length; i++) {
65
+ const newRecord = _createRecords[i]
66
+
67
+ const result = await pdfReleaseRepo.save({
68
+ ...newRecord,
69
+ domain,
70
+ creator: user,
71
+ updater: user
72
+ })
73
+
74
+ results.push({ ...result, cuFlag: '+' })
75
+ }
76
+ }
77
+
78
+ if (_updateRecords.length > 0) {
79
+ for (let i = 0; i < _updateRecords.length; i++) {
80
+ const updateRecord = _updateRecords[i]
81
+ const pdfRelease = await pdfReleaseRepo.findOneBy({ id: updateRecord.id })
82
+
83
+ const result = await pdfReleaseRepo.save({
84
+ ...pdfRelease,
85
+ ...updateRecord,
86
+ updater: user
87
+ })
88
+
89
+ results.push({ ...result, cuFlag: 'M' })
90
+ }
91
+ }
92
+
93
+ return results
94
+ }
95
+
96
+ @Directive('@transaction')
97
+ @Mutation(returns => Boolean, { description: 'To delete PDFRelease' })
98
+ async deletePDFRelease(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
99
+ const { domain, tx } = context.state
100
+
101
+ await tx.getRepository(PDFRelease).delete({ domain: { id: domain.id }, id })
102
+
103
+ return true
104
+ }
105
+
106
+ @Directive('@transaction')
107
+ @Mutation(returns => Boolean, { description: 'To delete multiple PDFReleases' })
108
+ async deletePDFReleases(
109
+ @Arg('ids', type => [String]) ids: string[],
110
+ @Ctx() context: ResolverContext
111
+ ): Promise<boolean> {
112
+ const { domain, tx } = context.state
113
+
114
+ await tx.getRepository(PDFRelease).delete({
115
+ domain: { id: domain.id },
116
+ id: In(ids)
117
+ })
118
+
119
+ return true
120
+ }
121
+
122
+ @Directive('@transaction')
123
+ @Mutation(returns => Boolean, { description: 'To import multiple PDFReleases' })
124
+ async importPDFReleases(
125
+ @Arg('pdfReleases', type => [PDFReleasePatch]) pdfReleases: PDFReleasePatch[],
126
+ @Ctx() context: ResolverContext
127
+ ): Promise<boolean> {
128
+ const { domain, tx } = context.state
129
+
130
+ await Promise.all(
131
+ pdfReleases.map(async (pdfRelease: PDFReleasePatch) => {
132
+ const createdPDFRelease: PDFRelease = await tx.getRepository(PDFRelease).save({ domain, ...pdfRelease })
133
+ })
134
+ )
135
+
136
+ return true
137
+ }
138
+ }
@@ -0,0 +1,51 @@
1
+ import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
+ import { User } from '@things-factory/auth-base'
4
+ import { PDFRelease } from './pdf-release'
5
+ import { PDFReleaseList } from './pdf-release-type'
6
+
7
+ @Resolver(PDFRelease)
8
+ export class PDFReleaseQuery {
9
+ @Query(returns => PDFRelease!, { nullable: true, description: 'To fetch a PDFRelease' })
10
+ async pdfRelease(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<PDFRelease> {
11
+ const { domain } = context.state
12
+
13
+ return await getRepository(PDFRelease).findOne({
14
+ where: { domain: { id: domain.id }, id }
15
+ })
16
+ }
17
+
18
+ @Query(returns => PDFReleaseList, { description: 'To fetch multiple PDFReleases' })
19
+ async pdfReleases(
20
+ @Args(type => ListParam) params: ListParam,
21
+ @Ctx() context: ResolverContext
22
+ ): Promise<PDFReleaseList> {
23
+ const { domain } = context.state
24
+
25
+ const queryBuilder = getQueryBuilderFromListParams({
26
+ domain,
27
+ params,
28
+ repository: await getRepository(PDFRelease),
29
+ searchables: ['name', 'description']
30
+ })
31
+
32
+ const [items, total] = await queryBuilder.getManyAndCount()
33
+
34
+ return { items, total }
35
+ }
36
+
37
+ @FieldResolver(type => Domain)
38
+ async domain(@Root() pdfRelease: PDFRelease): Promise<Domain> {
39
+ return pdfRelease.domainId && (await getRepository(Domain).findOneBy({ id: pdfRelease.domainId }))
40
+ }
41
+
42
+ @FieldResolver(type => User)
43
+ async updater(@Root() pdfRelease: PDFRelease): Promise<User> {
44
+ return pdfRelease.updaterId && (await getRepository(User).findOneBy({ id: pdfRelease.updaterId }))
45
+ }
46
+
47
+ @FieldResolver(type => User)
48
+ async creator(@Root() pdfRelease: PDFRelease): Promise<User> {
49
+ return pdfRelease.creatorId && (await getRepository(User).findOneBy({ id: pdfRelease.creatorId }))
50
+ }
51
+ }
@@ -0,0 +1,55 @@
1
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
2
+ import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
3
+ import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
4
+
5
+ import { ObjectRef, ScalarObject } from '@things-factory/shell'
6
+
7
+ import { PDFRelease, PDFReleaseStatus } from './pdf-release'
8
+
9
+ @InputType()
10
+ export class NewPDFRelease {
11
+ @Field()
12
+ name: string
13
+
14
+ @Field({ nullable: true })
15
+ description?: string
16
+
17
+ @Field(type => PDFReleaseStatus, { nullable: true })
18
+ state?: PDFReleaseStatus
19
+
20
+ @Field({ nullable: true })
21
+ active?: boolean
22
+
23
+ @Field({ nullable: true })
24
+ params?: string
25
+ }
26
+
27
+ @InputType()
28
+ export class PDFReleasePatch {
29
+ @Field(type => ID, { nullable: true })
30
+ id?: string
31
+
32
+ @Field({ nullable: true })
33
+ name?: string
34
+
35
+ @Field({ nullable: true })
36
+ description?: string
37
+
38
+ @Field(type => PDFReleaseStatus, { nullable: true })
39
+ state?: PDFReleaseStatus
40
+
41
+ @Field({ nullable: true })
42
+ active?: boolean
43
+
44
+ @Field({ nullable: true })
45
+ cuFlag?: string
46
+ }
47
+
48
+ @ObjectType()
49
+ export class PDFReleaseList {
50
+ @Field(type => [PDFRelease])
51
+ items: PDFRelease[]
52
+
53
+ @Field(type => Int)
54
+ total: number
55
+ }
@@ -0,0 +1,103 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ PrimaryGeneratedColumn
11
+ } from 'typeorm'
12
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
13
+
14
+ import { Domain } from '@things-factory/shell'
15
+ import { User } from '@things-factory/auth-base'
16
+ import { PDFTemplate } from '../pdf-template/pdf-template'
17
+
18
+ export enum PDFReleaseStatus {
19
+ published = 'published',
20
+ failed = 'failed'
21
+ }
22
+
23
+ registerEnumType(PDFReleaseStatus, {
24
+ name: 'PDFReleaseStatus',
25
+ description: 'state enumeration of a PDFRelease'
26
+ })
27
+
28
+ @Entity()
29
+ @Index('ix_pdf_release_0', (pdfRelease: PDFRelease) => [pdfRelease.domain, pdfRelease.name], {
30
+ where: '"deleted_at" IS NULL',
31
+ unique: true
32
+ })
33
+ @ObjectType({ description: 'Entity for PDFRelease' })
34
+ export class PDFRelease {
35
+ @PrimaryGeneratedColumn('uuid')
36
+ @Field(type => ID)
37
+ readonly id: string
38
+
39
+ @ManyToOne(type => Domain)
40
+ @Field({ nullable: true })
41
+ domain?: Domain
42
+
43
+ @RelationId((pdfRelease: PDFRelease) => pdfRelease.domain)
44
+ domainId?: string
45
+
46
+ @Column()
47
+ @Field({ nullable: true })
48
+ name?: string
49
+
50
+ @Column({ nullable: true })
51
+ @Field({ nullable: true })
52
+ description?: string
53
+
54
+ @Column({ nullable: true })
55
+ @Field({ nullable: true })
56
+ active?: boolean
57
+
58
+ @ManyToOne(type => PDFTemplate, { nullable: false })
59
+ @Field(type => PDFTemplate)
60
+ template?: PDFTemplate
61
+
62
+ @RelationId((release: PDFRelease) => release.template)
63
+ @Field()
64
+ templateId?: string
65
+
66
+ @Column()
67
+ @Field({ nullable: true })
68
+ filePath?: string
69
+
70
+ @Column()
71
+ @Field({ nullable: true })
72
+ fileUrl?: string
73
+
74
+ @Column({ nullable: true })
75
+ @Field({ nullable: true })
76
+ state?: PDFReleaseStatus
77
+
78
+ @CreateDateColumn()
79
+ @Field({ nullable: true })
80
+ createdAt?: Date
81
+
82
+ @UpdateDateColumn()
83
+ @Field({ nullable: true })
84
+ updatedAt?: Date
85
+
86
+ @DeleteDateColumn()
87
+ @Field({ nullable: true })
88
+ deletedAt?: Date
89
+
90
+ @ManyToOne(type => User, { nullable: true })
91
+ @Field(type => User, { nullable: true })
92
+ creator?: User
93
+
94
+ @RelationId((pdfRelease: PDFRelease) => pdfRelease.creator)
95
+ creatorId?: string
96
+
97
+ @ManyToOne(type => User, { nullable: true })
98
+ @Field(type => User, { nullable: true })
99
+ updater?: User
100
+
101
+ @RelationId((pdfRelease: PDFRelease) => pdfRelease.updater)
102
+ updaterId?: string
103
+ }
@@ -0,0 +1,7 @@
1
+ import { PDFTemplate } from './pdf-template'
2
+ import { PDFTemplateQuery } from './pdf-template-query'
3
+ import { PDFTemplateMutation } from './pdf-template-mutation'
4
+
5
+ export const entities = [PDFTemplate]
6
+ export const resolvers = [PDFTemplateQuery, PDFTemplateMutation]
7
+ export const subscribers = []
@@ -0,0 +1,138 @@
1
+ import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
+
4
+ import { PDFTemplate } from './pdf-template'
5
+ import { NewPDFTemplate, PDFTemplatePatch } from './pdf-template-type'
6
+
7
+ @Resolver(PDFTemplate)
8
+ export class PDFTemplateMutation {
9
+ @Directive('@transaction')
10
+ @Mutation(returns => PDFTemplate, { description: 'To create new PDFTemplate' })
11
+ async createPDFTemplate(
12
+ @Arg('pdfTemplate') pdfTemplate: NewPDFTemplate,
13
+ @Ctx() context: ResolverContext
14
+ ): Promise<PDFTemplate> {
15
+ const { domain, user, tx } = context.state
16
+
17
+ const result = await tx.getRepository(PDFTemplate).save({
18
+ ...pdfTemplate,
19
+ domain,
20
+ creator: user,
21
+ updater: user
22
+ })
23
+
24
+ return result
25
+ }
26
+
27
+ @Directive('@transaction')
28
+ @Mutation(returns => PDFTemplate, { description: 'To modify PDFTemplate information' })
29
+ async updatePDFTemplate(
30
+ @Arg('id') id: string,
31
+ @Arg('patch') patch: PDFTemplatePatch,
32
+ @Ctx() context: ResolverContext
33
+ ): Promise<PDFTemplate> {
34
+ const { domain, user, tx } = context.state
35
+
36
+ const repository = tx.getRepository(PDFTemplate)
37
+ const pdfTemplate = await repository.findOne({
38
+ where: { domain: { id: domain.id }, id }
39
+ })
40
+
41
+ const result = await repository.save({
42
+ ...pdfTemplate,
43
+ ...patch,
44
+ updater: user
45
+ })
46
+
47
+ return result
48
+ }
49
+
50
+ @Directive('@transaction')
51
+ @Mutation(returns => [PDFTemplate], { description: "To modify multiple PDFTemplates' information" })
52
+ async updateMultiplePDFTemplate(
53
+ @Arg('patches', type => [PDFTemplatePatch]) patches: PDFTemplatePatch[],
54
+ @Ctx() context: ResolverContext
55
+ ): Promise<PDFTemplate[]> {
56
+ const { domain, user, tx } = context.state
57
+
58
+ let results = []
59
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
60
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
61
+ const pdfTemplateRepo = tx.getRepository(PDFTemplate)
62
+
63
+ if (_createRecords.length > 0) {
64
+ for (let i = 0; i < _createRecords.length; i++) {
65
+ const newRecord = _createRecords[i]
66
+
67
+ const result = await pdfTemplateRepo.save({
68
+ ...newRecord,
69
+ domain,
70
+ creator: user,
71
+ updater: user
72
+ })
73
+
74
+ results.push({ ...result, cuFlag: '+' })
75
+ }
76
+ }
77
+
78
+ if (_updateRecords.length > 0) {
79
+ for (let i = 0; i < _updateRecords.length; i++) {
80
+ const updateRecord = _updateRecords[i]
81
+ const pdfTemplate = await pdfTemplateRepo.findOneBy({ id: updateRecord.id })
82
+
83
+ const result = await pdfTemplateRepo.save({
84
+ ...pdfTemplate,
85
+ ...updateRecord,
86
+ updater: user
87
+ })
88
+
89
+ results.push({ ...result, cuFlag: 'M' })
90
+ }
91
+ }
92
+
93
+ return results
94
+ }
95
+
96
+ @Directive('@transaction')
97
+ @Mutation(returns => Boolean, { description: 'To delete PDFTemplate' })
98
+ async deletePDFTemplate(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
99
+ const { domain, tx } = context.state
100
+
101
+ await tx.getRepository(PDFTemplate).delete({ domain: { id: domain.id }, id })
102
+
103
+ return true
104
+ }
105
+
106
+ @Directive('@transaction')
107
+ @Mutation(returns => Boolean, { description: 'To delete multiple PDFTemplates' })
108
+ async deletePDFTemplates(
109
+ @Arg('ids', type => [String]) ids: string[],
110
+ @Ctx() context: ResolverContext
111
+ ): Promise<boolean> {
112
+ const { domain, tx } = context.state
113
+
114
+ await tx.getRepository(PDFTemplate).delete({
115
+ domain: { id: domain.id },
116
+ id: In(ids)
117
+ })
118
+
119
+ return true
120
+ }
121
+
122
+ @Directive('@transaction')
123
+ @Mutation(returns => Boolean, { description: 'To import multiple PDFTemplates' })
124
+ async importPDFTemplates(
125
+ @Arg('pdfTemplates', type => [PDFTemplatePatch]) pdfTemplates: PDFTemplatePatch[],
126
+ @Ctx() context: ResolverContext
127
+ ): Promise<boolean> {
128
+ const { domain, tx } = context.state
129
+
130
+ await Promise.all(
131
+ pdfTemplates.map(async (pdfTemplate: PDFTemplatePatch) => {
132
+ const createdPDFTemplate: PDFTemplate = await tx.getRepository(PDFTemplate).save({ domain, ...pdfTemplate })
133
+ })
134
+ )
135
+
136
+ return true
137
+ }
138
+ }
@@ -0,0 +1,51 @@
1
+ import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
+ import { User } from '@things-factory/auth-base'
4
+ import { PDFTemplate } from './pdf-template'
5
+ import { PDFTemplateList } from './pdf-template-type'
6
+
7
+ @Resolver(PDFTemplate)
8
+ export class PDFTemplateQuery {
9
+ @Query(returns => PDFTemplate!, { nullable: true, description: 'To fetch a PDFTemplate' })
10
+ async PDFTemplate(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<PDFTemplate> {
11
+ const { domain } = context.state
12
+
13
+ return await getRepository(PDFTemplate).findOne({
14
+ where: { domain: { id: domain.id }, id }
15
+ })
16
+ }
17
+
18
+ @Query(returns => PDFTemplateList, { description: 'To fetch multiple PDFTemplates' })
19
+ async PDFTemplates(
20
+ @Args(type => ListParam) params: ListParam,
21
+ @Ctx() context: ResolverContext
22
+ ): Promise<PDFTemplateList> {
23
+ const { domain } = context.state
24
+
25
+ const queryBuilder = getQueryBuilderFromListParams({
26
+ domain,
27
+ params,
28
+ repository: await getRepository(PDFTemplate),
29
+ searchables: ['name', 'description']
30
+ })
31
+
32
+ const [items, total] = await queryBuilder.getManyAndCount()
33
+
34
+ return { items, total }
35
+ }
36
+
37
+ @FieldResolver(type => Domain)
38
+ async domain(@Root() pdfTemplate: PDFTemplate): Promise<Domain> {
39
+ return pdfTemplate.domainId && (await getRepository(Domain).findOneBy({ id: pdfTemplate.domainId }))
40
+ }
41
+
42
+ @FieldResolver(type => User)
43
+ async updater(@Root() pdfTemplate: PDFTemplate): Promise<User> {
44
+ return pdfTemplate.updaterId && (await getRepository(User).findOneBy({ id: pdfTemplate.updaterId }))
45
+ }
46
+
47
+ @FieldResolver(type => User)
48
+ async creator(@Root() pdfTemplate: PDFTemplate): Promise<User> {
49
+ return pdfTemplate.creatorId && (await getRepository(User).findOneBy({ id: pdfTemplate.creatorId }))
50
+ }
51
+ }
@@ -0,0 +1,87 @@
1
+ import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'
2
+
3
+ import { PDFTemplate, PDFTemplateStatus } from './pdf-template'
4
+
5
+ @InputType()
6
+ export class NewPDFTemplate {
7
+ @Field()
8
+ name: string
9
+
10
+ @Field({ nullable: true })
11
+ description?: string
12
+
13
+ @Field(type => PDFTemplateStatus, { nullable: true })
14
+ state?: PDFTemplateStatus
15
+
16
+ @Field({ nullable: true })
17
+ active?: boolean
18
+
19
+ @Field({ nullable: true })
20
+ content_template?: string
21
+
22
+ @Field({ nullable: true })
23
+ header_template?: string
24
+
25
+ @Field({ nullable: true })
26
+ footer_template?: string
27
+
28
+ @Field({ nullable: true })
29
+ cover_template?: string
30
+
31
+ @Field({ nullable: true })
32
+ last_template?: string
33
+
34
+ @Field({ nullable: true, defaultValue: 'A4' })
35
+ page_size: string
36
+
37
+ @Field({ nullable: true })
38
+ watermark: string
39
+ }
40
+
41
+ @InputType()
42
+ export class PDFTemplatePatch {
43
+ @Field(type => ID, { nullable: true })
44
+ id?: string
45
+
46
+ @Field({ nullable: true })
47
+ name?: string
48
+
49
+ @Field({ nullable: true })
50
+ description?: string
51
+
52
+ @Field(type => PDFTemplateStatus, { nullable: true })
53
+ state?: PDFTemplateStatus
54
+
55
+ @Field({ nullable: true })
56
+ active?: boolean
57
+
58
+ @Field({ nullable: true })
59
+ content_template?: string
60
+
61
+ @Field({ nullable: true })
62
+ header_template?: string
63
+
64
+ @Field({ nullable: true })
65
+ footer_template?: string
66
+
67
+ @Field({ nullable: true })
68
+ cover_template?: string
69
+
70
+ @Field({ nullable: true })
71
+ last_template?: string
72
+
73
+ @Field({ nullable: true, defaultValue: 'A4' })
74
+ page_size?: string
75
+
76
+ @Field({ nullable: true })
77
+ cuFlag?: string
78
+ }
79
+
80
+ @ObjectType()
81
+ export class PDFTemplateList {
82
+ @Field(type => [PDFTemplate])
83
+ items: PDFTemplate[]
84
+
85
+ @Field(type => Int)
86
+ total: number
87
+ }