Skip to content

Commit 785c6d7

Browse files
feat: updated to the latest version
1 parent 6332f00 commit 785c6d7

37 files changed

+652
-98
lines changed

apps/api-harmonization/.env.local

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ SUPPORTED_LOCALES=en,de,pl
1515

1616
FRONT_BASE_URL=http://localhost:3000
1717

18+
MOCKED_INTEGRATION_DELAYS_ENABLED=false
19+
1820
CMS_STRAPI_BASE_URL=
1921

2022
CACHE_ENABLED=false

apps/api-harmonization/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
"@nestjs/config": "^3.3.0",
2626
"@nestjs/core": "^10.0.0",
2727
"@nestjs/platform-express": "^10.0.0",
28-
"@o2s/framework": "^0.11.0",
29-
"@o2s/integrations.mocked": "^0.10.2",
28+
"@o2s/framework": "^0.12.0",
29+
"@o2s/integrations.mocked": "^0.11.1",
3030
"@o2s/utils.logger": "^0.9.1",
3131
"compression": "^1.7.5",
3232
"cookie": "^1.0.2",

apps/api-harmonization/src/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { PaymentsHistoryComponentModule } from '@o2s/api-harmonization/component
3131
import { PaymentsSummaryComponentModule } from '@o2s/api-harmonization/components/payments-summary/payments-summary.module';
3232
import { TicketDetailsComponentModule } from '@o2s/api-harmonization/components/ticket-details/ticket-details.module';
3333
import { TicketListComponentModule } from '@o2s/api-harmonization/components/ticket-list/ticket-list.module';
34+
import { TicketRecentComponentModule } from '@o2s/api-harmonization/components/ticket-recent/ticket-recent.module';
3435
import { UserAccountComponentModule } from '@o2s/api-harmonization/components/user-account/user-account.module';
3536

3637
import { AppConfig } from './app.config';
@@ -76,6 +77,7 @@ import { RoutesModule } from './modules/routes/routes.module';
7677
PaymentsSummaryComponentModule.register(AppConfig),
7778
PaymentsHistoryComponentModule.register(AppConfig),
7879
UserAccountComponentModule.register(AppConfig),
80+
TicketRecentComponentModule.register(AppConfig),
7981
// COMPONENT REGISTER
8082
],
8183
providers: [

apps/api-harmonization/src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ export * as InvoiceList from './invoice-list';
99
export * as PaymentsSummary from './payments-summary';
1010
export * as PaymentsHistory from './payments-history';
1111
export * as UserAccount from './user-account';
12+
export * as TicketRecent from './ticket-recent';
1213
// COMPONENT EXPORT
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export const URL = '/components/ticket-recent';
2+
3+
export * as Model from './ticket-recent.model';
4+
export * as Request from './ticket-recent.request';
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Controller, Get, Headers, Query, UseInterceptors } from '@nestjs/common';
2+
import { LoggerService } from '@o2s/utils.logger';
3+
4+
import { Auth } from '@o2s/framework/modules';
5+
6+
import { AppHeaders } from '@o2s/api-harmonization/utils/headers';
7+
8+
import { URL } from './';
9+
import { GetTicketRecentComponentQuery } from './ticket-recent.request';
10+
import { TicketRecentService } from './ticket-recent.service';
11+
12+
@Controller(URL)
13+
@UseInterceptors(LoggerService)
14+
export class TicketRecentController {
15+
constructor(protected readonly service: TicketRecentService) {}
16+
17+
@Get()
18+
@Auth.Decorators.Roles({ roles: [Auth.Constants.Roles.USER, Auth.Constants.Roles.ADMIN] })
19+
getTicketRecentComponent(@Headers() headers: AppHeaders, @Query() query: GetTicketRecentComponentQuery) {
20+
return this.service.getTicketRecentComponent(query, headers);
21+
}
22+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import format from 'string-template';
2+
3+
import { formatDateRelative } from '@o2s/api-harmonization/utils/date';
4+
5+
import { CMS, Tickets } from '../../models';
6+
7+
import { Ticket, TicketRecentComponent } from './ticket-recent.model';
8+
9+
export const mapTicketRecent = (
10+
cms: CMS.Model.TicketRecentComponent.TicketRecentComponent,
11+
tickets: Tickets.Model.Tickets,
12+
locale: string,
13+
): TicketRecentComponent => {
14+
return {
15+
__typename: 'TicketRecentComponent',
16+
id: cms.id,
17+
title: cms.title,
18+
noResults: cms.noResults,
19+
details: cms.labels.details,
20+
tickets: {
21+
data: tickets.data.map((ticket) => mapTicket(ticket, cms, locale)),
22+
},
23+
};
24+
};
25+
26+
export const mapTicket = (
27+
ticket: Tickets.Model.Ticket,
28+
cms: CMS.Model.TicketRecentComponent.TicketRecentComponent,
29+
locale: string,
30+
): Ticket => {
31+
return {
32+
id: {
33+
value: ticket.id,
34+
},
35+
topic: {
36+
value: ticket.topic,
37+
},
38+
type: {
39+
value: ticket.type,
40+
},
41+
status: {
42+
value: ticket.status,
43+
},
44+
createdAt: formatDateRelative(ticket.createdAt, locale, cms.labels.today, cms.labels.yesterday),
45+
updatedAt: formatDateRelative(ticket.updatedAt, locale, cms.labels.today, cms.labels.yesterday),
46+
detailsUrl: format(cms.detailsUrl, {
47+
id: ticket.id,
48+
}),
49+
comments: {
50+
title: cms.commentsTitle,
51+
items:
52+
ticket.comments?.map((comment) => ({
53+
...comment,
54+
date: formatDateRelative(comment.date, locale, cms.labels.today, cms.labels.yesterday),
55+
author: {
56+
...comment.author,
57+
initials: comment.author.name
58+
.split(' ')
59+
.map((name) => name[0])
60+
.join('')
61+
.toUpperCase(),
62+
},
63+
})) || [],
64+
},
65+
};
66+
};
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { Tickets } from '../../models';
2+
// TODO: this has to be a relative import so it could be resolved properly in `frontend` app; try to find a better way
3+
import { Component } from '../../utils';
4+
5+
export class TicketRecentComponent extends Component.Component {
6+
__typename!: 'TicketRecentComponent';
7+
title?: string;
8+
noResults?: string;
9+
details?: string;
10+
tickets!: {
11+
data: Ticket[];
12+
};
13+
}
14+
15+
export class Ticket {
16+
id!: {
17+
value: Tickets.Model.Ticket['id'];
18+
};
19+
topic!: {
20+
value: Tickets.Model.Ticket['topic'];
21+
};
22+
type!: {
23+
value: Tickets.Model.Ticket['type'];
24+
};
25+
status!: {
26+
value: Tickets.Model.Ticket['status'];
27+
};
28+
createdAt!: Tickets.Model.Ticket['createdAt'];
29+
updatedAt!: Tickets.Model.Ticket['updatedAt'];
30+
comments!: TicketComments;
31+
detailsUrl!: string;
32+
}
33+
34+
export class TicketComments {
35+
title?: string;
36+
items!: TicketComment[];
37+
}
38+
39+
export class TicketComment {
40+
author!: Tickets.Model.Author & { initials: string };
41+
date!: string;
42+
content!: string;
43+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { DynamicModule, Module } from '@nestjs/common';
2+
3+
import { ApiConfig } from '@o2s/framework/modules';
4+
5+
import { CMS, Tickets } from '../../models';
6+
7+
import { TicketRecentController } from './ticket-recent.controller';
8+
import { TicketRecentService } from './ticket-recent.service';
9+
10+
@Module({})
11+
export class TicketRecentComponentModule {
12+
static register(_config: ApiConfig): DynamicModule {
13+
return {
14+
module: TicketRecentComponentModule,
15+
providers: [TicketRecentService, CMS.Service, Tickets.Service],
16+
controllers: [TicketRecentController],
17+
exports: [TicketRecentService],
18+
};
19+
}
20+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { CMS } from '@o2s/framework/modules';
2+
3+
export class GetTicketRecentComponentQuery implements Omit<CMS.Request.GetCmsEntryParams, 'locale'> {
4+
id!: string;
5+
}

0 commit comments

Comments
 (0)