@passly-nl/data 1.2.2 → 1.3.0
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.
- package/dist/index.d.mts +664 -69
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1982 -343
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -8
- package/src/adapter/StatisticsBuyersAdapter.ts +50 -1
- package/src/adapter/StatisticsChartAdapter.ts +56 -0
- package/src/adapter/StatisticsEventsAdapter.ts +41 -2
- package/src/adapter/StatisticsGrowthAdapter.ts +9 -1
- package/src/adapter/StatisticsMarketingAdapter.ts +78 -0
- package/src/adapter/StatisticsOperationsAdapter.ts +45 -12
- package/src/adapter/StatisticsOverviewAdapter.ts +33 -2
- package/src/adapter/StatisticsRefundsAdapter.ts +43 -0
- package/src/adapter/StatisticsSalesAdapter.ts +36 -1
- package/src/adapter/index.ts +3 -1
- package/src/dto/eventStatistics/index.ts +0 -1
- package/src/dto/statistics/StatisticsBuyersAcquisitionSourceDto.ts +28 -0
- package/src/dto/statistics/StatisticsBuyersAgeGenderMatrixDto.ts +38 -0
- package/src/dto/statistics/StatisticsBuyersCohortRetentionDto.ts +48 -0
- package/src/dto/statistics/StatisticsBuyersDeviceConversionDto.ts +48 -0
- package/src/dto/statistics/StatisticsBuyersGeographicDistributionDto.ts +49 -0
- package/src/dto/statistics/StatisticsBuyersSpendBucketsDto.ts +36 -0
- package/src/dto/statistics/StatisticsChartDto.ts +43 -0
- package/src/dto/statistics/StatisticsEventsSalesCurveDto.ts +19 -0
- package/src/dto/statistics/StatisticsEventsSalesCurveEventDto.ts +59 -0
- package/src/dto/statistics/StatisticsEventsSellOutTimingDto.ts +39 -0
- package/src/dto/statistics/StatisticsEventsSellOutTimingEventDto.ts +38 -0
- package/src/dto/statistics/StatisticsEventsTimeToEventDto.ts +36 -0
- package/src/dto/statistics/StatisticsGrowthCmgrDto.ts +38 -0
- package/src/dto/statistics/StatisticsMarketingCampaignDto.ts +69 -0
- package/src/dto/statistics/StatisticsMarketingOverviewDto.ts +79 -0
- package/src/dto/statistics/StatisticsMarketingReferrerDto.ts +39 -0
- package/src/dto/statistics/StatisticsMarketingShortlinkRoiDto.ts +109 -0
- package/src/dto/statistics/StatisticsMarketingSourceBreakdownDto.ts +49 -0
- package/src/dto/statistics/StatisticsMarketingSourceFunnelDto.ts +48 -0
- package/src/dto/statistics/StatisticsMarketingSourceMediumMatrixDto.ts +39 -0
- package/src/dto/statistics/StatisticsOperationsNoShowRateDto.ts +59 -0
- package/src/dto/statistics/StatisticsOperationsNoShowRateEventDto.ts +58 -0
- package/src/dto/statistics/StatisticsOperationsScanTimeDistributionDto.ts +36 -0
- package/src/dto/statistics/{StatisticsOperationsTaskAssigneeDto.ts → StatisticsOperationsStewardDto.ts} +28 -8
- package/src/dto/statistics/StatisticsOperationsStockUtilizationDto.ts +100 -0
- package/src/dto/statistics/StatisticsOverviewCancellationFunnelDto.ts +58 -0
- package/src/dto/statistics/StatisticsOverviewReservationConversionRateDto.ts +78 -0
- package/src/dto/statistics/StatisticsOverviewTopShopDto.ts +49 -0
- package/src/dto/statistics/StatisticsPieChartDto.ts +29 -0
- package/src/dto/statistics/StatisticsRefundsAmountDistributionDto.ts +38 -0
- package/src/dto/statistics/StatisticsRefundsOverviewDto.ts +59 -0
- package/src/dto/statistics/StatisticsRefundsTopEventDto.ts +70 -0
- package/src/dto/statistics/StatisticsRefundsVelocityDto.ts +45 -0
- package/src/dto/statistics/StatisticsSalesDiscountEfficacyDto.ts +99 -0
- package/src/dto/statistics/StatisticsSalesFailedTransactionReasonDto.ts +29 -0
- package/src/dto/statistics/StatisticsSalesOrderValueDistributionDto.ts +38 -0
- package/src/dto/statistics/StatisticsSalesRepeatPurchaseVelocityDto.ts +35 -0
- package/src/dto/statistics/index.ts +37 -2
- package/src/service/MerchantEventStatisticsBuyersService.ts +4 -5
- package/src/service/MerchantEventStatisticsOperationsService.ts +4 -5
- package/src/service/MerchantEventStatisticsSalesService.ts +10 -11
- package/src/service/MerchantStatisticsBuyersService.ts +64 -5
- package/src/service/MerchantStatisticsEventsService.ts +48 -9
- package/src/service/MerchantStatisticsGrowthService.ts +25 -5
- package/src/service/MerchantStatisticsMarketingService.ts +96 -0
- package/src/service/MerchantStatisticsOperationsService.ts +39 -10
- package/src/service/MerchantStatisticsOverviewService.ts +34 -5
- package/src/service/MerchantStatisticsRefundsService.ts +76 -0
- package/src/service/MerchantStatisticsSalesService.ts +78 -9
- package/src/service/MerchantStatisticsService.ts +0 -11
- package/src/service/index.ts +2 -0
- package/src/types/index.ts +1 -0
- package/src/types/statistics.ts +32 -0
- package/src/adapter/EventStatisticsSalesAdapter.ts +0 -21
- package/src/dto/eventStatistics/EventStatisticsSalesFlowChartDto.ts +0 -66
- package/src/dto/statistics/StatisticsOperationsTasksOverviewDto.ts +0 -69
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
import type { CostDto } from '#data/dto';
|
|
3
|
+
|
|
4
|
+
@dto
|
|
5
|
+
export class StatisticsMarketingShortlinkRoiDto {
|
|
6
|
+
get identifier(): string {
|
|
7
|
+
return this.#identifier;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
set identifier(value: string) {
|
|
11
|
+
this.#identifier = value;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get hits(): number {
|
|
15
|
+
return this.#hits;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
set hits(value: number) {
|
|
19
|
+
this.#hits = value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get orders(): number {
|
|
23
|
+
return this.#orders;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
set orders(value: number) {
|
|
27
|
+
this.#orders = value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get revenue(): CostDto {
|
|
31
|
+
return this.#revenue;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
set revenue(value: CostDto) {
|
|
35
|
+
this.#revenue = value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get conversionRate(): number {
|
|
39
|
+
return this.#conversionRate;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
set conversionRate(value: number) {
|
|
43
|
+
this.#conversionRate = value;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
get shopId(): string | null {
|
|
47
|
+
return this.#shopId;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
set shopId(value: string | null) {
|
|
51
|
+
this.#shopId = value;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get shopName(): string | null {
|
|
55
|
+
return this.#shopName;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
set shopName(value: string | null) {
|
|
59
|
+
this.#shopName = value;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get eventId(): string | null {
|
|
63
|
+
return this.#eventId;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
set eventId(value: string | null) {
|
|
67
|
+
this.#eventId = value;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
get eventName(): string | null {
|
|
71
|
+
return this.#eventName;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
set eventName(value: string | null) {
|
|
75
|
+
this.#eventName = value;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
get targetUrl(): string | null {
|
|
79
|
+
return this.#targetUrl;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
set targetUrl(value: string | null) {
|
|
83
|
+
this.#targetUrl = value;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
#identifier: string;
|
|
87
|
+
#hits: number;
|
|
88
|
+
#orders: number;
|
|
89
|
+
#revenue: CostDto;
|
|
90
|
+
#conversionRate: number;
|
|
91
|
+
#shopId: string | null;
|
|
92
|
+
#shopName: string | null;
|
|
93
|
+
#eventId: string | null;
|
|
94
|
+
#eventName: string | null;
|
|
95
|
+
#targetUrl: string | null;
|
|
96
|
+
|
|
97
|
+
constructor(identifier: string, hits: number, orders: number, revenue: CostDto, conversionRate: number, shopId: string | null, shopName: string | null, eventId: string | null, eventName: string | null, targetUrl: string | null) {
|
|
98
|
+
this.#identifier = identifier;
|
|
99
|
+
this.#hits = hits;
|
|
100
|
+
this.#orders = orders;
|
|
101
|
+
this.#revenue = revenue;
|
|
102
|
+
this.#conversionRate = conversionRate;
|
|
103
|
+
this.#shopId = shopId;
|
|
104
|
+
this.#shopName = shopName;
|
|
105
|
+
this.#eventId = eventId;
|
|
106
|
+
this.#eventName = eventName;
|
|
107
|
+
this.#targetUrl = targetUrl;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
import type { CostDto } from '#data/dto';
|
|
3
|
+
|
|
4
|
+
@dto
|
|
5
|
+
export class StatisticsMarketingSourceBreakdownDto {
|
|
6
|
+
get source(): string {
|
|
7
|
+
return this.#source;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
set source(value: string) {
|
|
11
|
+
this.#source = value;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get orders(): number {
|
|
15
|
+
return this.#orders;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
set orders(value: number) {
|
|
19
|
+
this.#orders = value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get tickets(): number {
|
|
23
|
+
return this.#tickets;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
set tickets(value: number) {
|
|
27
|
+
this.#tickets = value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get revenue(): CostDto {
|
|
31
|
+
return this.#revenue;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
set revenue(value: CostDto) {
|
|
35
|
+
this.#revenue = value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#source: string;
|
|
39
|
+
#orders: number;
|
|
40
|
+
#tickets: number;
|
|
41
|
+
#revenue: CostDto;
|
|
42
|
+
|
|
43
|
+
constructor(source: string, orders: number, tickets: number, revenue: CostDto) {
|
|
44
|
+
this.#source = source;
|
|
45
|
+
this.#orders = orders;
|
|
46
|
+
this.#tickets = tickets;
|
|
47
|
+
this.#revenue = revenue;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
|
|
3
|
+
@dto
|
|
4
|
+
export class StatisticsMarketingSourceFunnelDto {
|
|
5
|
+
get source(): string {
|
|
6
|
+
return this.#source;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
set source(value: string) {
|
|
10
|
+
this.#source = value;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get reservations(): number {
|
|
14
|
+
return this.#reservations;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
set reservations(value: number) {
|
|
18
|
+
this.#reservations = value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get orders(): number {
|
|
22
|
+
return this.#orders;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set orders(value: number) {
|
|
26
|
+
this.#orders = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get conversionRate(): number {
|
|
30
|
+
return this.#conversionRate;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set conversionRate(value: number) {
|
|
34
|
+
this.#conversionRate = value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#source: string;
|
|
38
|
+
#reservations: number;
|
|
39
|
+
#orders: number;
|
|
40
|
+
#conversionRate: number;
|
|
41
|
+
|
|
42
|
+
constructor(source: string, reservations: number, orders: number, conversionRate: number) {
|
|
43
|
+
this.#source = source;
|
|
44
|
+
this.#reservations = reservations;
|
|
45
|
+
this.#orders = orders;
|
|
46
|
+
this.#conversionRate = conversionRate;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
import type { CostDto } from '#data/dto';
|
|
3
|
+
|
|
4
|
+
@dto
|
|
5
|
+
export class StatisticsMarketingSourceMediumMatrixDto {
|
|
6
|
+
get sources(): readonly string[] {
|
|
7
|
+
return this.#sources;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
set sources(value: readonly string[]) {
|
|
11
|
+
this.#sources = value;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get mediums(): readonly string[] {
|
|
15
|
+
return this.#mediums;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
set mediums(value: readonly string[]) {
|
|
19
|
+
this.#mediums = value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get cells(): readonly (readonly CostDto[])[] {
|
|
23
|
+
return this.#cells;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
set cells(value: readonly (readonly CostDto[])[]) {
|
|
27
|
+
this.#cells = value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#sources: readonly string[];
|
|
31
|
+
#mediums: readonly string[];
|
|
32
|
+
#cells: readonly (readonly CostDto[])[];
|
|
33
|
+
|
|
34
|
+
constructor(sources: readonly string[], mediums: readonly string[], cells: readonly (readonly CostDto[])[]) {
|
|
35
|
+
this.#sources = sources;
|
|
36
|
+
this.#mediums = mediums;
|
|
37
|
+
this.#cells = cells;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
import type { StatisticsOperationsNoShowRateEventDto } from '#data/dto';
|
|
3
|
+
|
|
4
|
+
@dto
|
|
5
|
+
export class StatisticsOperationsNoShowRateDto {
|
|
6
|
+
get validTickets(): number {
|
|
7
|
+
return this.#validTickets;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
set validTickets(value: number) {
|
|
11
|
+
this.#validTickets = value;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get checkedIn(): number {
|
|
15
|
+
return this.#checkedIn;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
set checkedIn(value: number) {
|
|
19
|
+
this.#checkedIn = value;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get noShows(): number {
|
|
23
|
+
return this.#noShows;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
set noShows(value: number) {
|
|
27
|
+
this.#noShows = value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get noShowRate(): number {
|
|
31
|
+
return this.#noShowRate;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
set noShowRate(value: number) {
|
|
35
|
+
this.#noShowRate = value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get events(): readonly StatisticsOperationsNoShowRateEventDto[] {
|
|
39
|
+
return this.#events;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
set events(value: readonly StatisticsOperationsNoShowRateEventDto[]) {
|
|
43
|
+
this.#events = value;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
#validTickets: number;
|
|
47
|
+
#checkedIn: number;
|
|
48
|
+
#noShows: number;
|
|
49
|
+
#noShowRate: number;
|
|
50
|
+
#events: readonly StatisticsOperationsNoShowRateEventDto[];
|
|
51
|
+
|
|
52
|
+
constructor(validTickets: number, checkedIn: number, noShows: number, noShowRate: number, events: readonly StatisticsOperationsNoShowRateEventDto[]) {
|
|
53
|
+
this.#validTickets = validTickets;
|
|
54
|
+
this.#checkedIn = checkedIn;
|
|
55
|
+
this.#noShows = noShows;
|
|
56
|
+
this.#noShowRate = noShowRate;
|
|
57
|
+
this.#events = events;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
|
|
3
|
+
@dto
|
|
4
|
+
export class StatisticsOperationsNoShowRateEventDto {
|
|
5
|
+
get id(): string {
|
|
6
|
+
return this.#id;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
set id(value: string) {
|
|
10
|
+
this.#id = value;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get name(): string {
|
|
14
|
+
return this.#name;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
set name(value: string) {
|
|
18
|
+
this.#name = value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get noShowRate(): number {
|
|
22
|
+
return this.#noShowRate;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set noShowRate(value: number) {
|
|
26
|
+
this.#noShowRate = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get noShows(): number {
|
|
30
|
+
return this.#noShows;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set noShows(value: number) {
|
|
34
|
+
this.#noShows = value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get ticketsSold(): number {
|
|
38
|
+
return this.#ticketsSold;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
set ticketsSold(value: number) {
|
|
42
|
+
this.#ticketsSold = value;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#id: string;
|
|
46
|
+
#name: string;
|
|
47
|
+
#noShowRate: number;
|
|
48
|
+
#noShows: number;
|
|
49
|
+
#ticketsSold: number;
|
|
50
|
+
|
|
51
|
+
constructor(id: string, name: string, noShowRate: number, noShows: number, ticketsSold: number) {
|
|
52
|
+
this.#id = id;
|
|
53
|
+
this.#name = name;
|
|
54
|
+
this.#noShowRate = noShowRate;
|
|
55
|
+
this.#noShows = noShows;
|
|
56
|
+
this.#ticketsSold = ticketsSold;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
|
|
3
|
+
export type StatisticsOperationsScanTimeBucket =
|
|
4
|
+
| 'over_2h_early'
|
|
5
|
+
| '1h_to_2h_early'
|
|
6
|
+
| 'within_1h_early'
|
|
7
|
+
| 'within_1h_late'
|
|
8
|
+
| '1h_to_2h_late'
|
|
9
|
+
| 'over_2h_late';
|
|
10
|
+
|
|
11
|
+
@dto
|
|
12
|
+
export class StatisticsOperationsScanTimeDistributionDto {
|
|
13
|
+
get buckets(): Record<StatisticsOperationsScanTimeBucket, number> {
|
|
14
|
+
return this.#buckets;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
set buckets(value: Record<StatisticsOperationsScanTimeBucket, number>) {
|
|
18
|
+
this.#buckets = value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get medianMinutesRelative(): number {
|
|
22
|
+
return this.#medianMinutesRelative;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set medianMinutesRelative(value: number) {
|
|
26
|
+
this.#medianMinutesRelative = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
#buckets: Record<StatisticsOperationsScanTimeBucket, number>;
|
|
30
|
+
#medianMinutesRelative: number;
|
|
31
|
+
|
|
32
|
+
constructor(buckets: Record<StatisticsOperationsScanTimeBucket, number>, medianMinutesRelative: number) {
|
|
33
|
+
this.#buckets = buckets;
|
|
34
|
+
this.#medianMinutesRelative = medianMinutesRelative;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { dto } from '@basmilius/http-client';
|
|
2
2
|
|
|
3
3
|
@dto
|
|
4
|
-
export class
|
|
4
|
+
export class StatisticsOperationsStewardDto {
|
|
5
5
|
get id(): string {
|
|
6
6
|
return this.#id;
|
|
7
7
|
}
|
|
@@ -26,23 +26,43 @@ export class StatisticsOperationsTaskAssigneeDto {
|
|
|
26
26
|
this.#initials = value;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
get
|
|
30
|
-
return this.#
|
|
29
|
+
get scans(): number {
|
|
30
|
+
return this.#scans;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
set
|
|
34
|
-
this.#
|
|
33
|
+
set scans(value: number) {
|
|
34
|
+
this.#scans = value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get checkins(): number {
|
|
38
|
+
return this.#checkins;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
set checkins(value: number) {
|
|
42
|
+
this.#checkins = value;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get checkouts(): number {
|
|
46
|
+
return this.#checkouts;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
set checkouts(value: number) {
|
|
50
|
+
this.#checkouts = value;
|
|
35
51
|
}
|
|
36
52
|
|
|
37
53
|
#id: string;
|
|
38
54
|
#fullName: string;
|
|
39
55
|
#initials: string;
|
|
40
|
-
#
|
|
56
|
+
#scans: number;
|
|
57
|
+
#checkins: number;
|
|
58
|
+
#checkouts: number;
|
|
41
59
|
|
|
42
|
-
constructor(id: string, fullName: string, initials: string,
|
|
60
|
+
constructor(id: string, fullName: string, initials: string, scans: number, checkins: number, checkouts: number) {
|
|
43
61
|
this.#id = id;
|
|
44
62
|
this.#fullName = fullName;
|
|
45
63
|
this.#initials = initials;
|
|
46
|
-
this.#
|
|
64
|
+
this.#scans = scans;
|
|
65
|
+
this.#checkins = checkins;
|
|
66
|
+
this.#checkouts = checkouts;
|
|
47
67
|
}
|
|
48
68
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
import type { DateTime } from 'luxon';
|
|
3
|
+
import type { CostDto } from '#data/dto';
|
|
4
|
+
|
|
5
|
+
@dto
|
|
6
|
+
export class StatisticsOperationsStockUtilizationDto {
|
|
7
|
+
get productId(): string {
|
|
8
|
+
return this.#productId;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
set productId(value: string) {
|
|
12
|
+
this.#productId = value;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get productName(): string {
|
|
16
|
+
return this.#productName;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
set productName(value: string) {
|
|
20
|
+
this.#productName = value;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get productPrice(): CostDto {
|
|
24
|
+
return this.#productPrice;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
set productPrice(value: CostDto) {
|
|
28
|
+
this.#productPrice = value;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
get eventId(): string {
|
|
32
|
+
return this.#eventId;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
set eventId(value: string) {
|
|
36
|
+
this.#eventId = value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
get eventName(): string {
|
|
40
|
+
return this.#eventName;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
set eventName(value: string) {
|
|
44
|
+
this.#eventName = value;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
get eventStartsOn(): DateTime {
|
|
48
|
+
return this.#eventStartsOn;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
set eventStartsOn(value: DateTime) {
|
|
52
|
+
this.#eventStartsOn = value;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
get stock(): number {
|
|
56
|
+
return this.#stock;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
set stock(value: number) {
|
|
60
|
+
this.#stock = value;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get sold(): number {
|
|
64
|
+
return this.#sold;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
set sold(value: number) {
|
|
68
|
+
this.#sold = value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
get utilizationRate(): number {
|
|
72
|
+
return this.#utilizationRate;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
set utilizationRate(value: number) {
|
|
76
|
+
this.#utilizationRate = value;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#productId: string;
|
|
80
|
+
#productName: string;
|
|
81
|
+
#productPrice: CostDto;
|
|
82
|
+
#eventId: string;
|
|
83
|
+
#eventName: string;
|
|
84
|
+
#eventStartsOn: DateTime;
|
|
85
|
+
#stock: number;
|
|
86
|
+
#sold: number;
|
|
87
|
+
#utilizationRate: number;
|
|
88
|
+
|
|
89
|
+
constructor(productId: string, productName: string, productPrice: CostDto, eventId: string, eventName: string, eventStartsOn: DateTime, stock: number, sold: number, utilizationRate: number) {
|
|
90
|
+
this.#productId = productId;
|
|
91
|
+
this.#productName = productName;
|
|
92
|
+
this.#productPrice = productPrice;
|
|
93
|
+
this.#eventId = eventId;
|
|
94
|
+
this.#eventName = eventName;
|
|
95
|
+
this.#eventStartsOn = eventStartsOn;
|
|
96
|
+
this.#stock = stock;
|
|
97
|
+
this.#sold = sold;
|
|
98
|
+
this.#utilizationRate = utilizationRate;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
|
|
3
|
+
@dto
|
|
4
|
+
export class StatisticsOverviewCancellationFunnelDto {
|
|
5
|
+
get paidOrders(): number {
|
|
6
|
+
return this.#paidOrders;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
set paidOrders(value: number) {
|
|
10
|
+
this.#paidOrders = value;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get ordersWithRefund(): number {
|
|
14
|
+
return this.#ordersWithRefund;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
set ordersWithRefund(value: number) {
|
|
18
|
+
this.#ordersWithRefund = value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get ordersFullyRefunded(): number {
|
|
22
|
+
return this.#ordersFullyRefunded;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set ordersFullyRefunded(value: number) {
|
|
26
|
+
this.#ordersFullyRefunded = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get partialRefundRate(): number {
|
|
30
|
+
return this.#partialRefundRate;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set partialRefundRate(value: number) {
|
|
34
|
+
this.#partialRefundRate = value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get fullRefundRate(): number {
|
|
38
|
+
return this.#fullRefundRate;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
set fullRefundRate(value: number) {
|
|
42
|
+
this.#fullRefundRate = value;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#paidOrders: number;
|
|
46
|
+
#ordersWithRefund: number;
|
|
47
|
+
#ordersFullyRefunded: number;
|
|
48
|
+
#partialRefundRate: number;
|
|
49
|
+
#fullRefundRate: number;
|
|
50
|
+
|
|
51
|
+
constructor(paidOrders: number, ordersWithRefund: number, ordersFullyRefunded: number, partialRefundRate: number, fullRefundRate: number) {
|
|
52
|
+
this.#paidOrders = paidOrders;
|
|
53
|
+
this.#ordersWithRefund = ordersWithRefund;
|
|
54
|
+
this.#ordersFullyRefunded = ordersFullyRefunded;
|
|
55
|
+
this.#partialRefundRate = partialRefundRate;
|
|
56
|
+
this.#fullRefundRate = fullRefundRate;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { dto } from '@basmilius/http-client';
|
|
2
|
+
|
|
3
|
+
@dto
|
|
4
|
+
export class StatisticsOverviewReservationConversionRateDto {
|
|
5
|
+
get current(): number {
|
|
6
|
+
return this.#current;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
set current(value: number) {
|
|
10
|
+
this.#current = value;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get previous(): number {
|
|
14
|
+
return this.#previous;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
set previous(value: number) {
|
|
18
|
+
this.#previous = value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get growthRate(): number {
|
|
22
|
+
return this.#growthRate;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set growthRate(value: number) {
|
|
26
|
+
this.#growthRate = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get reservationsCurrent(): number {
|
|
30
|
+
return this.#reservationsCurrent;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set reservationsCurrent(value: number) {
|
|
34
|
+
this.#reservationsCurrent = value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get reservationsPrevious(): number {
|
|
38
|
+
return this.#reservationsPrevious;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
set reservationsPrevious(value: number) {
|
|
42
|
+
this.#reservationsPrevious = value;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get ordersCurrent(): number {
|
|
46
|
+
return this.#ordersCurrent;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
set ordersCurrent(value: number) {
|
|
50
|
+
this.#ordersCurrent = value;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get ordersPrevious(): number {
|
|
54
|
+
return this.#ordersPrevious;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
set ordersPrevious(value: number) {
|
|
58
|
+
this.#ordersPrevious = value;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#current: number;
|
|
62
|
+
#previous: number;
|
|
63
|
+
#growthRate: number;
|
|
64
|
+
#reservationsCurrent: number;
|
|
65
|
+
#reservationsPrevious: number;
|
|
66
|
+
#ordersCurrent: number;
|
|
67
|
+
#ordersPrevious: number;
|
|
68
|
+
|
|
69
|
+
constructor(current: number, previous: number, growthRate: number, reservationsCurrent: number, reservationsPrevious: number, ordersCurrent: number, ordersPrevious: number) {
|
|
70
|
+
this.#current = current;
|
|
71
|
+
this.#previous = previous;
|
|
72
|
+
this.#growthRate = growthRate;
|
|
73
|
+
this.#reservationsCurrent = reservationsCurrent;
|
|
74
|
+
this.#reservationsPrevious = reservationsPrevious;
|
|
75
|
+
this.#ordersCurrent = ordersCurrent;
|
|
76
|
+
this.#ordersPrevious = ordersPrevious;
|
|
77
|
+
}
|
|
78
|
+
}
|