@chevre/domain 23.1.0-alpha.4 → 23.1.0-alpha.6
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/example/src/chevre/assetTransaction/processReserve.ts +1 -0
- package/example/src/chevre/authorizeEventServiceOffer.ts +1 -0
- package/example/src/chevre/eventOffer/adminEventOffers.ts +67 -0
- package/example/src/chevre/member/migrateMemberIdentifier.ts +94 -0
- package/lib/chevre/repo/eventOffer.d.ts +1 -1
- package/lib/chevre/repo/eventOffer.js +14 -8
- package/lib/chevre/repo/member.d.ts +11 -1
- package/lib/chevre/repo/member.js +2 -1
- package/lib/chevre/service/assetTransaction/reserve/start.d.ts +2 -0
- package/lib/chevre/service/assetTransaction/reserve/start.js +1 -0
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.d.ts +22 -0
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.js +62 -0
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.d.ts +2 -0
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +2 -18
- package/lib/chevre/service/offer/event/authorize/factory.d.ts +1 -0
- package/lib/chevre/service/offer/event/authorize/factory.js +6 -2
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +3 -0
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.js +9 -4
- package/lib/chevre/service/offer/event/authorize.d.ts +2 -0
- package/lib/chevre/service/offer/event/authorize.js +7 -2
- package/package.json +2 -2
|
@@ -102,6 +102,7 @@ async function main() {
|
|
|
102
102
|
eventOffer: await chevre.repository.EventOffer.createInstance(mongoose.connection),
|
|
103
103
|
eventSeries: await chevre.repository.EventSeries.createInstance(mongoose.connection),
|
|
104
104
|
issuer: await chevre.repository.Issuer.createInstance(mongoose.connection),
|
|
105
|
+
member: await chevre.repository.Member.createInstance(mongoose.connection),
|
|
105
106
|
memberProgram: await chevre.repository.MemberProgram.createInstance(mongoose.connection),
|
|
106
107
|
offer: await chevre.repository.Offer.createInstance(mongoose.connection),
|
|
107
108
|
offerCatalog: await chevre.repository.OfferCatalog.createInstance(mongoose.connection),
|
|
@@ -57,6 +57,7 @@ async function main() {
|
|
|
57
57
|
eventOffer: await chevre.repository.EventOffer.createInstance(mongoose.connection),
|
|
58
58
|
eventSeries: await chevre.repository.EventSeries.createInstance(mongoose.connection),
|
|
59
59
|
issuer: await chevre.repository.Issuer.createInstance(mongoose.connection),
|
|
60
|
+
member: await chevre.repository.Member.createInstance(mongoose.connection),
|
|
60
61
|
memberProgram: await chevre.repository.MemberProgram.createInstance(mongoose.connection),
|
|
61
62
|
stockHolder: await chevre.repository.StockHolder.createInstance({ connection: mongoose.connection }),
|
|
62
63
|
offer: await chevre.repository.Offer.createInstance(mongoose.connection),
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../../lib/index';
|
|
6
|
+
|
|
7
|
+
const project = { id: String(process.env.PROJECT_ID) };
|
|
8
|
+
|
|
9
|
+
async function main() {
|
|
10
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
11
|
+
|
|
12
|
+
const eventOfferRepo = await chevre.repository.EventOffer.createInstance(mongoose.connection);
|
|
13
|
+
|
|
14
|
+
const validFrom = moment()
|
|
15
|
+
.toDate();
|
|
16
|
+
const validThrough = moment(validFrom)
|
|
17
|
+
.add(1, 'hour')
|
|
18
|
+
.toDate();
|
|
19
|
+
const eventOffer: chevre.factory.eventOffer.IEventOffer = {
|
|
20
|
+
typeOf: chevre.factory.offerType.Offer,
|
|
21
|
+
identifier: '20251113eventOffer',
|
|
22
|
+
itemOffered: {
|
|
23
|
+
id: '69151228ad580da66c8b5068',
|
|
24
|
+
typeOf: chevre.factory.eventType.ScreeningEvent
|
|
25
|
+
},
|
|
26
|
+
availableAtOrFrom: {
|
|
27
|
+
identifier: 'SmartTheaterTXN'
|
|
28
|
+
},
|
|
29
|
+
validFrom,
|
|
30
|
+
validThrough,
|
|
31
|
+
seller: {
|
|
32
|
+
id: '59d20831e53ebc2b4e774466',
|
|
33
|
+
typeOf: chevre.factory.organizationType.Corporation
|
|
34
|
+
},
|
|
35
|
+
project: { id: project.id, typeOf: chevre.factory.organizationType.Project }
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
let result = await eventOfferRepo.upsertEventOffersByIdentifier(
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
$set: eventOffer,
|
|
42
|
+
$unset: {}
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
{
|
|
46
|
+
update: false
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
console.log(result);
|
|
50
|
+
|
|
51
|
+
result = await eventOfferRepo.upsertEventOffersByIdentifier(
|
|
52
|
+
[
|
|
53
|
+
{
|
|
54
|
+
$set: eventOffer,
|
|
55
|
+
$unset: {}
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
{
|
|
59
|
+
update: true
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
console.log(result);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
main()
|
|
66
|
+
.then()
|
|
67
|
+
.catch(console.error);
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
// import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../../lib/index';
|
|
6
|
+
|
|
7
|
+
// const project = { id: String(process.env.PROJECT_ID) };
|
|
8
|
+
// const EXCLUDED_PROJECT_ID = process.env.EXCLUDED_PROJECT_ID;
|
|
9
|
+
const identifierMap = [
|
|
10
|
+
{
|
|
11
|
+
id: '7divuoimobsfgq95tp1csorjqq',
|
|
12
|
+
identifier: 'SmartTheaterTXNMember'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: '51qbjcfr72h62m06vtv5kkhgje',
|
|
16
|
+
identifier: 'SmartTheaterTXN'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'ckevmf3fueqcunnideu6artt',
|
|
20
|
+
identifier: 'SmartTheaterPOS'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: '3eo6okferrsdpfd9j2ce1iv9k7',
|
|
24
|
+
identifier: 'SmartTheaterTVM'
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
// tslint:disable-next-line:max-func-body-length
|
|
29
|
+
async function main() {
|
|
30
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
31
|
+
|
|
32
|
+
const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
|
|
33
|
+
|
|
34
|
+
const cursor = memberRepo.getCursor(
|
|
35
|
+
{
|
|
36
|
+
// typeOf: { $eq: chevre.factory.placeType.ScreeningRoom }
|
|
37
|
+
'project.id': { $eq: '*' }
|
|
38
|
+
// 'project.id': { $ne: EXCLUDED_PROJECT_ID },
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
project: 1,
|
|
42
|
+
member: 1
|
|
43
|
+
// paymentMethods: 1,
|
|
44
|
+
// project: 1,
|
|
45
|
+
// orderDate: 1
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
console.log('docs found');
|
|
49
|
+
|
|
50
|
+
let updated: number = 0;
|
|
51
|
+
let i = 0;
|
|
52
|
+
await cursor.eachAsync(async (doc) => {
|
|
53
|
+
i += 1;
|
|
54
|
+
const iamMember: chevre.factory.iam.IMember = doc.toObject();
|
|
55
|
+
|
|
56
|
+
const identifierExists = typeof (<any>iamMember.member).identifier === 'string';
|
|
57
|
+
|
|
58
|
+
if (identifierExists) {
|
|
59
|
+
console.log(
|
|
60
|
+
'identifier exists',
|
|
61
|
+
iamMember.project.id,
|
|
62
|
+
iamMember.member.name,
|
|
63
|
+
(<any>iamMember.member).identifier
|
|
64
|
+
);
|
|
65
|
+
} else {
|
|
66
|
+
const updatingIdentifier = identifierMap.find(({ id }) => id === iamMember.member.id)?.identifier;
|
|
67
|
+
if (typeof updatingIdentifier !== 'string') {
|
|
68
|
+
throw new Error(`map not found. ${iamMember.member.name}`);
|
|
69
|
+
}
|
|
70
|
+
console.log(
|
|
71
|
+
'migrating identifier...',
|
|
72
|
+
iamMember.project.id,
|
|
73
|
+
iamMember.member.name,
|
|
74
|
+
updatingIdentifier
|
|
75
|
+
);
|
|
76
|
+
// await memberRepo.updateByMemberId({
|
|
77
|
+
// project: { id: iamMember.project.id },
|
|
78
|
+
// member: {
|
|
79
|
+
// id: iamMember.member.id,
|
|
80
|
+
// memberOf: iamMember.member.memberOf,
|
|
81
|
+
// identifier: updatingIdentifier
|
|
82
|
+
// },
|
|
83
|
+
// $unset: {}
|
|
84
|
+
// });
|
|
85
|
+
updated += 1;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
console.log(i, 'docs checked');
|
|
89
|
+
console.log('updated:', updated);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
main()
|
|
93
|
+
.then()
|
|
94
|
+
.catch(console.error);
|
|
@@ -21,7 +21,7 @@ export declare class EventOfferRepo {
|
|
|
21
21
|
* オファーコードとイベントIDをキーにして冪等置換
|
|
22
22
|
*/
|
|
23
23
|
upsertEventOffersByIdentifier(params: {
|
|
24
|
-
$set: Pick<IDocType, 'identifier' | 'itemOffered' | 'offeredBy' | 'seller' | 'project' | 'typeOf' | 'validFrom' | 'validThrough'> & {
|
|
24
|
+
$set: Pick<IDocType, 'identifier' | 'itemOffered' | 'offeredBy' | 'seller' | 'project' | 'typeOf' | 'validFrom' | 'validThrough' | 'availableAtOrFrom'> & {
|
|
25
25
|
id?: never;
|
|
26
26
|
};
|
|
27
27
|
$unset: IUnset;
|
|
@@ -32,7 +32,7 @@ class EventOfferRepo {
|
|
|
32
32
|
this.eventOfferModel = connection.model(eventOffer_1.modelName, (0, eventOffer_1.createSchema)());
|
|
33
33
|
}
|
|
34
34
|
static CREATE_MONGO_CONDITIONS(params) {
|
|
35
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
35
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
36
36
|
const andConditions = [];
|
|
37
37
|
const idEq = (_a = params.id) === null || _a === void 0 ? void 0 : _a.$eq;
|
|
38
38
|
if (typeof idEq === 'string') {
|
|
@@ -58,19 +58,23 @@ class EventOfferRepo {
|
|
|
58
58
|
if (Array.isArray(itemOfferedIdIn)) {
|
|
59
59
|
andConditions.push({ 'itemOffered.id': { $in: itemOfferedIdIn } });
|
|
60
60
|
}
|
|
61
|
-
const
|
|
61
|
+
const availableAtOrFromIdentifierEq = (_l = (_k = params.availableAtOrFrom) === null || _k === void 0 ? void 0 : _k.identifier) === null || _l === void 0 ? void 0 : _l.$eq;
|
|
62
|
+
if (typeof availableAtOrFromIdentifierEq === 'string') {
|
|
63
|
+
andConditions.push({ 'availableAtOrFrom.identifier': { $eq: availableAtOrFromIdentifierEq } });
|
|
64
|
+
}
|
|
65
|
+
const offeredByIdEq = (_o = (_m = params.offeredBy) === null || _m === void 0 ? void 0 : _m.id) === null || _o === void 0 ? void 0 : _o.$eq;
|
|
62
66
|
if (typeof offeredByIdEq === 'string') {
|
|
63
67
|
andConditions.push({ 'offeredBy.id': { $exists: true, $eq: offeredByIdEq } });
|
|
64
68
|
}
|
|
65
|
-
const sellerByIdEq = (
|
|
69
|
+
const sellerByIdEq = (_q = (_p = params.seller) === null || _p === void 0 ? void 0 : _p.id) === null || _q === void 0 ? void 0 : _q.$eq;
|
|
66
70
|
if (typeof sellerByIdEq === 'string') {
|
|
67
71
|
andConditions.push({ 'seller.id': { $eq: sellerByIdEq } });
|
|
68
72
|
}
|
|
69
|
-
const validFromLte = (
|
|
73
|
+
const validFromLte = (_r = params.validFrom) === null || _r === void 0 ? void 0 : _r.$lte;
|
|
70
74
|
if (validFromLte instanceof Date) {
|
|
71
75
|
andConditions.push({ validFrom: { $lte: validFromLte } });
|
|
72
76
|
}
|
|
73
|
-
const validThroughGte = (
|
|
77
|
+
const validThroughGte = (_s = params.validThrough) === null || _s === void 0 ? void 0 : _s.$gte;
|
|
74
78
|
if (validThroughGte instanceof Date) {
|
|
75
79
|
andConditions.push({ validThrough: { $gte: validThroughGte } });
|
|
76
80
|
}
|
|
@@ -112,7 +116,7 @@ class EventOfferRepo {
|
|
|
112
116
|
const queryFilters = [];
|
|
113
117
|
if (Array.isArray(params)) {
|
|
114
118
|
params.forEach(({ $set, $unset }) => {
|
|
115
|
-
const { identifier, itemOffered, offeredBy, seller, project, validFrom, validThrough } = $set;
|
|
119
|
+
const { identifier, itemOffered, offeredBy, seller, project, validFrom, validThrough, availableAtOrFrom } = $set;
|
|
116
120
|
if (typeof identifier !== 'string' || identifier === '') {
|
|
117
121
|
throw new factory.errors.ArgumentNull('identifier');
|
|
118
122
|
}
|
|
@@ -132,7 +136,8 @@ class EventOfferRepo {
|
|
|
132
136
|
});
|
|
133
137
|
if (update === true) {
|
|
134
138
|
const setFields = Object.assign({ validFrom,
|
|
135
|
-
validThrough
|
|
139
|
+
validThrough,
|
|
140
|
+
availableAtOrFrom }, (typeof (offeredBy === null || offeredBy === void 0 ? void 0 : offeredBy.identifier) === 'string') ? { offeredBy } : undefined);
|
|
136
141
|
const updateFilter = Object.assign({ $set: setFields }, ($unset !== undefined) ? { $unset } : undefined);
|
|
137
142
|
const updateOne = {
|
|
138
143
|
filter,
|
|
@@ -143,7 +148,8 @@ class EventOfferRepo {
|
|
|
143
148
|
}
|
|
144
149
|
else {
|
|
145
150
|
const setOnInsert = Object.assign({ itemOffered, identifier, project, seller, typeOf: factory.offerType.Offer, validFrom,
|
|
146
|
-
validThrough
|
|
151
|
+
validThrough,
|
|
152
|
+
availableAtOrFrom }, (typeof (offeredBy === null || offeredBy === void 0 ? void 0 : offeredBy.identifier) === 'string') ? { offeredBy } : undefined);
|
|
147
153
|
const updateFilter = {
|
|
148
154
|
$setOnInsert: setOnInsert
|
|
149
155
|
};
|
|
@@ -2,7 +2,13 @@ import type { Connection, FilterQuery } from 'mongoose';
|
|
|
2
2
|
import * as factory from '../factory';
|
|
3
3
|
import { IGlobalMember } from './mongoose/schemas/member/global';
|
|
4
4
|
type IKeyOfProjection = keyof factory.iam.IMember;
|
|
5
|
-
export type ICustomerMember = Pick<factory.iam.IMemberOfRole, 'hasRole' | 'id' | 'name' | 'memberOf'
|
|
5
|
+
export type ICustomerMember = Pick<factory.iam.IMemberOfRole, 'hasRole' | 'id' | 'name' | 'memberOf'> & {
|
|
6
|
+
/**
|
|
7
|
+
* アプリケーションコード
|
|
8
|
+
* 2025-11-13~
|
|
9
|
+
*/
|
|
10
|
+
identifier?: string;
|
|
11
|
+
};
|
|
6
12
|
/**
|
|
7
13
|
* IAMメンバーリポジトリ
|
|
8
14
|
*/
|
|
@@ -87,6 +93,10 @@ export declare class MemberRepo {
|
|
|
87
93
|
hasRole?: factory.iam.IMemberRole[];
|
|
88
94
|
image?: string;
|
|
89
95
|
name?: string;
|
|
96
|
+
/**
|
|
97
|
+
* アプリケーションコード
|
|
98
|
+
*/
|
|
99
|
+
identifier?: string;
|
|
90
100
|
};
|
|
91
101
|
$unset: {
|
|
92
102
|
'member.member'?: 1;
|
|
@@ -138,6 +138,7 @@ class MemberRepo {
|
|
|
138
138
|
// typeOf: 'WebApplication',
|
|
139
139
|
hasRole: '$member.hasRole',
|
|
140
140
|
id: '$member.id',
|
|
141
|
+
identifier: '$member.identifier',
|
|
141
142
|
member: '$member.member',
|
|
142
143
|
memberOf: '$member.memberOf',
|
|
143
144
|
name: '$member.name'
|
|
@@ -259,7 +260,7 @@ class MemberRepo {
|
|
|
259
260
|
'member.memberOf.id': { $eq: params.member.memberOf.id },
|
|
260
261
|
'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf }
|
|
261
262
|
}, {
|
|
262
|
-
$set: Object.assign(Object.assign(Object.assign({}, (Array.isArray(params.member.hasRole)) ? { 'member.hasRole': params.member.hasRole } : undefined), (typeof params.member.image === 'string') ? { 'member.image': params.member.image } : undefined), (typeof params.member.name === 'string') ? { 'member.name': params.member.name } : undefined
|
|
263
|
+
$set: Object.assign(Object.assign(Object.assign(Object.assign({}, (Array.isArray(params.member.hasRole)) ? { 'member.hasRole': params.member.hasRole } : undefined), (typeof params.member.image === 'string') ? { 'member.image': params.member.image } : undefined), (typeof params.member.name === 'string') ? { 'member.name': params.member.name } : undefined), (typeof params.member.identifier === 'string') ? { 'member.identifier': params.member.identifier } : undefined
|
|
263
264
|
// discontinue(2025-01-14~)
|
|
264
265
|
// ...(Array.isArray(params.member.member)) ? { 'member.member': params.member.member } : undefined
|
|
265
266
|
),
|
|
@@ -6,6 +6,7 @@ import type { EventRepo } from '../../../repo/event';
|
|
|
6
6
|
import type { EventOfferRepo } from '../../../repo/eventOffer';
|
|
7
7
|
import type { EventSeriesRepo } from '../../../repo/eventSeries';
|
|
8
8
|
import type { IssuerRepo } from '../../../repo/issuer';
|
|
9
|
+
import type { MemberRepo } from '../../../repo/member';
|
|
9
10
|
import type { MemberProgramRepo } from '../../../repo/memberProgram';
|
|
10
11
|
import type { OfferRepo } from '../../../repo/offer/unitPriceInCatalog';
|
|
11
12
|
import type { OfferCatalogRepo } from '../../../repo/offerCatalog';
|
|
@@ -27,6 +28,7 @@ interface IStartOperationRepos {
|
|
|
27
28
|
eventOffer: EventOfferRepo;
|
|
28
29
|
eventSeries: EventSeriesRepo;
|
|
29
30
|
issuer: IssuerRepo;
|
|
31
|
+
member: MemberRepo;
|
|
30
32
|
memberProgram: MemberProgramRepo;
|
|
31
33
|
offer: OfferRepo;
|
|
32
34
|
offerCatalog: OfferCatalogRepo;
|
package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as factory from '../../../../factory';
|
|
2
|
+
import { IMinimizedIndividualEvent } from '../../../../factory/event';
|
|
3
|
+
import type { EventOfferRepo } from '../../../../repo/eventOffer';
|
|
4
|
+
import type { MemberRepo } from '../../../../repo/member';
|
|
5
|
+
/**
|
|
6
|
+
* リクエストから拡張イベントオファーを決定する
|
|
7
|
+
*/
|
|
8
|
+
declare function fixExtendedEventOffer(params: {
|
|
9
|
+
event: Pick<IMinimizedIndividualEvent, 'offers' | 'id' | 'project' | 'identifier'>;
|
|
10
|
+
now: Date;
|
|
11
|
+
availableAt: {
|
|
12
|
+
/**
|
|
13
|
+
* 販売アプリケーションID
|
|
14
|
+
*/
|
|
15
|
+
id: string;
|
|
16
|
+
};
|
|
17
|
+
object: factory.assetTransaction.reserve.IObjectWithoutDetail;
|
|
18
|
+
}): (repos: {
|
|
19
|
+
eventOffer: EventOfferRepo;
|
|
20
|
+
member: MemberRepo;
|
|
21
|
+
}) => Promise<Pick<factory.eventOffer.IEventOffer, "identifier" | "itemOffered" | "typeOf" | "offeredBy" | "validFrom" | "validThrough">>;
|
|
22
|
+
export { fixExtendedEventOffer };
|
package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.fixExtendedEventOffer = fixExtendedEventOffer;
|
|
13
|
+
const moment = require("moment");
|
|
14
|
+
const factory = require("../../../../factory");
|
|
15
|
+
/**
|
|
16
|
+
* リクエストから拡張イベントオファーを決定する
|
|
17
|
+
*/
|
|
18
|
+
function fixExtendedEventOffer(params) {
|
|
19
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
const { event, availableAt } = params;
|
|
22
|
+
const acceptedDate = moment(params.now);
|
|
23
|
+
// リクエストによるオファーコード指定が必須
|
|
24
|
+
const eventOfferIdentifierMustBe = (_b = (_a = params.object.reservationFor) === null || _a === void 0 ? void 0 : _a.offers) === null || _b === void 0 ? void 0 : _b.identifier;
|
|
25
|
+
if (typeof eventOfferIdentifierMustBe !== 'string' || eventOfferIdentifierMustBe === '') {
|
|
26
|
+
throw new factory.errors.ArgumentNull('reservationFor.offers.identifier');
|
|
27
|
+
}
|
|
28
|
+
// アプリケーションIDからアプリケーションコードを参照
|
|
29
|
+
const existingCustomerMember = (yield repos.member.searchCustomerMembers({
|
|
30
|
+
project: { id: event.project.id },
|
|
31
|
+
limit: 1,
|
|
32
|
+
page: 1,
|
|
33
|
+
member: {
|
|
34
|
+
id: { $eq: availableAt.id }
|
|
35
|
+
}
|
|
36
|
+
})).shift();
|
|
37
|
+
if (existingCustomerMember === undefined) {
|
|
38
|
+
throw new factory.errors.NotFound(`Member: ${availableAt.id}`);
|
|
39
|
+
}
|
|
40
|
+
// tslint:disable-next-line:no-console
|
|
41
|
+
console.log('existingCustomerMember found:', JSON.stringify(existingCustomerMember));
|
|
42
|
+
const applicationIdentifier = existingCustomerMember.member.identifier;
|
|
43
|
+
if (typeof applicationIdentifier !== 'string') {
|
|
44
|
+
throw new factory.errors.NotFound(`member.identifier of ${availableAt.id}`);
|
|
45
|
+
}
|
|
46
|
+
// アプリケーションコードで利用可能な拡張オファーを検索
|
|
47
|
+
const existingEventOffer = (yield repos.eventOffer.findEventOffers({
|
|
48
|
+
limit: 1,
|
|
49
|
+
page: 1,
|
|
50
|
+
project: { id: { $eq: event.project.id } }, // プロジェクト
|
|
51
|
+
validFrom: { $lte: acceptedDate.toDate() },
|
|
52
|
+
validThrough: { $gte: acceptedDate.toDate() },
|
|
53
|
+
itemOffered: { id: { $eq: event.id } }, // 対象イベント
|
|
54
|
+
identifier: { $eq: eventOfferIdentifierMustBe }, // オファーコード
|
|
55
|
+
availableAtOrFrom: { identifier: { $eq: applicationIdentifier } } // アプリケーションコード
|
|
56
|
+
}, ['identifier', 'itemOffered', 'offeredBy', 'typeOf', 'validFrom', 'validThrough'])).shift();
|
|
57
|
+
if (existingEventOffer === undefined) {
|
|
58
|
+
throw new factory.errors.NotFound(`eventOffer: ${eventOfferIdentifierMustBe}`);
|
|
59
|
+
}
|
|
60
|
+
return existingEventOffer;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -2,6 +2,7 @@ import * as factory from '../../../factory';
|
|
|
2
2
|
import { IMinimizedIndividualEvent } from '../../../factory/event';
|
|
3
3
|
import type { EventOfferRepo } from '../../../repo/eventOffer';
|
|
4
4
|
import type { IssuerRepo } from '../../../repo/issuer';
|
|
5
|
+
import type { MemberRepo } from '../../../repo/member';
|
|
5
6
|
import type { MemberProgramRepo } from '../../../repo/memberProgram';
|
|
6
7
|
import type { ProductOfferRepo } from '../../../repo/productOffer';
|
|
7
8
|
declare function validateStartRequest(params: {
|
|
@@ -22,6 +23,7 @@ declare function validateStartRequest(params: {
|
|
|
22
23
|
}): (repos: {
|
|
23
24
|
eventOffer: EventOfferRepo;
|
|
24
25
|
issuer: IssuerRepo;
|
|
26
|
+
member: MemberRepo;
|
|
25
27
|
memberProgram: MemberProgramRepo;
|
|
26
28
|
productOffer: ProductOfferRepo;
|
|
27
29
|
}) => Promise<void>;
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.validateStartRequest = validateStartRequest;
|
|
13
13
|
const moment = require("moment");
|
|
14
14
|
const factory = require("../../../factory");
|
|
15
|
+
const fixExtendedEventOffer_1 = require("./validateStartRequest/fixExtendedEventOffer");
|
|
15
16
|
const validateIssuedOfferIfExists_1 = require("./validateStartRequest/validateIssuedOfferIfExists");
|
|
16
17
|
const validateMemberTierIfExists_1 = require("./validateStartRequest/validateMemberTierIfExists");
|
|
17
18
|
function validateStartRequest(params) {
|
|
@@ -40,7 +41,6 @@ function validateStartRequest(params) {
|
|
|
40
41
|
*/
|
|
41
42
|
function validateApplicationOffer(params) {
|
|
42
43
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
var _a, _b;
|
|
44
44
|
const { event, availableAt } = params;
|
|
45
45
|
const acceptedDate = moment(params.now);
|
|
46
46
|
const eventOffers = event.offers;
|
|
@@ -70,23 +70,7 @@ function validateApplicationOffer(params) {
|
|
|
70
70
|
}
|
|
71
71
|
// support extensibleEventOffer(2025-11-11~)
|
|
72
72
|
if (eventOffers.typeOf === factory.offerType.AggregateOffer) {
|
|
73
|
-
|
|
74
|
-
const eventOfferIdentifierMustBe = (_b = (_a = params.object.reservationFor) === null || _a === void 0 ? void 0 : _a.offers) === null || _b === void 0 ? void 0 : _b.identifier;
|
|
75
|
-
if (typeof eventOfferIdentifierMustBe !== 'string' || eventOfferIdentifierMustBe === '') {
|
|
76
|
-
throw new factory.errors.ArgumentNull('reservationFor.offers.identifier');
|
|
77
|
-
}
|
|
78
|
-
const existingEventOffer = (yield repos.eventOffer.findEventOffers({
|
|
79
|
-
limit: 1,
|
|
80
|
-
page: 1,
|
|
81
|
-
project: { id: { $eq: event.project.id } }, // プロジェクト
|
|
82
|
-
validFrom: { $lte: acceptedDate.toDate() },
|
|
83
|
-
validThrough: { $gte: acceptedDate.toDate() },
|
|
84
|
-
itemOffered: { id: { $eq: event.id } }, // 対象イベント
|
|
85
|
-
identifier: { $eq: eventOfferIdentifierMustBe } // オファーコード
|
|
86
|
-
}, ['identifier', 'itemOffered', 'offeredBy', 'typeOf', 'validFrom', 'validThrough'])).shift();
|
|
87
|
-
if (existingEventOffer === undefined) {
|
|
88
|
-
throw new factory.errors.NotFound(`eventOffer: ${eventOfferIdentifierMustBe}`);
|
|
89
|
-
}
|
|
73
|
+
const existingEventOffer = yield (0, fixExtendedEventOffer_1.fixExtendedEventOffer)(params)(repos);
|
|
90
74
|
// 拡張可能なオファー設定の場合のみ、オファートークンを検証する(2025-11-11~)
|
|
91
75
|
yield (0, validateIssuedOfferIfExists_1.validateIssuedOfferIfExists)({
|
|
92
76
|
event,
|
|
@@ -9,6 +9,7 @@ declare function createReserveTransactionStartParams(params: {
|
|
|
9
9
|
id: string;
|
|
10
10
|
offers?: {
|
|
11
11
|
validForMemberTier?: factory.assetTransaction.reserve.ITokenizedMemberProgramTier;
|
|
12
|
+
identifier?: string;
|
|
12
13
|
};
|
|
13
14
|
};
|
|
14
15
|
broker?: factory.reservation.IBroker<factory.reservationType>;
|
|
@@ -8,7 +8,7 @@ exports.responseBody2acceptedOffers4result = responseBody2acceptedOffers4result;
|
|
|
8
8
|
const moment = require("moment");
|
|
9
9
|
const factory = require("../../../../factory");
|
|
10
10
|
function createReserveTransactionStartParams(params) {
|
|
11
|
-
var _a, _b;
|
|
11
|
+
var _a, _b, _c;
|
|
12
12
|
const { transaction, transactionNumber } = params;
|
|
13
13
|
const { seller } = transaction;
|
|
14
14
|
const acceptedTicketOffersWithoutDetail = (Array.isArray(params.acceptedOffers))
|
|
@@ -49,7 +49,11 @@ function createReserveTransactionStartParams(params) {
|
|
|
49
49
|
// ]
|
|
50
50
|
};
|
|
51
51
|
const validForMemberTier = (_b = params.event.offers) === null || _b === void 0 ? void 0 : _b.validForMemberTier;
|
|
52
|
-
const
|
|
52
|
+
const eventOfferIdentifier = (_c = params.event.offers) === null || _c === void 0 ? void 0 : _c.identifier;
|
|
53
|
+
const object = Object.assign({ acceptedOffer: acceptedTicketOffersWithoutDetail, reservationFor: {
|
|
54
|
+
id: params.event.id,
|
|
55
|
+
offers: Object.assign(Object.assign({}, (typeof (validForMemberTier === null || validForMemberTier === void 0 ? void 0 : validForMemberTier.token) === 'string') ? { validForMemberTier } : undefined), (typeof eventOfferIdentifier === 'string') ? { identifier: eventOfferIdentifier } : undefined)
|
|
56
|
+
} }, (params.broker !== undefined) ? { broker: params.broker } : undefined);
|
|
53
57
|
return {
|
|
54
58
|
project: { typeOf: factory.organizationType.Project, id: params.project.id },
|
|
55
59
|
typeOf: factory.assetTransactionType.Reserve,
|
|
@@ -8,6 +8,7 @@ import type { EventRepo, IMinimizedIndividualEvent } from '../../../../repo/even
|
|
|
8
8
|
import type { EventOfferRepo } from '../../../../repo/eventOffer';
|
|
9
9
|
import { EventSeriesRepo } from '../../../../repo/eventSeries';
|
|
10
10
|
import type { IssuerRepo } from '../../../../repo/issuer';
|
|
11
|
+
import type { MemberRepo } from '../../../../repo/member';
|
|
11
12
|
import type { MemberProgramRepo } from '../../../../repo/memberProgram';
|
|
12
13
|
import type { OfferRepo } from '../../../../repo/offer/unitPriceInCatalog';
|
|
13
14
|
import type { OfferCatalogRepo } from '../../../../repo/offerCatalog';
|
|
@@ -29,6 +30,7 @@ declare function processStartReserve4chevre(params: {
|
|
|
29
30
|
event: Pick<IMinimizedIndividualEvent, 'id'> & {
|
|
30
31
|
offers?: {
|
|
31
32
|
validForMemberTier?: factory.assetTransaction.reserve.ITokenizedMemberProgramTier;
|
|
33
|
+
identifier?: string;
|
|
32
34
|
};
|
|
33
35
|
};
|
|
34
36
|
broker?: factory.reservation.IBroker<factory.reservationType>;
|
|
@@ -56,6 +58,7 @@ declare function processStartReserve4chevre(params: {
|
|
|
56
58
|
eventOffer: EventOfferRepo;
|
|
57
59
|
eventSeries: EventSeriesRepo;
|
|
58
60
|
issuer: IssuerRepo;
|
|
61
|
+
member: MemberRepo;
|
|
59
62
|
memberProgram: MemberProgramRepo;
|
|
60
63
|
offer: OfferRepo;
|
|
61
64
|
offerCatalog: OfferCatalogRepo;
|
|
@@ -20,15 +20,20 @@ function processStartReserve4chevre(params, options) {
|
|
|
20
20
|
// jwt: JWTCredentials;
|
|
21
21
|
// }
|
|
22
22
|
) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
var _a, _b;
|
|
23
|
+
var _a, _b, _c;
|
|
24
24
|
const { event, transaction, transactionNumber } = params;
|
|
25
25
|
let acceptedOffers4result = [];
|
|
26
26
|
// 予約取引開始
|
|
27
27
|
const startParams = (0, factory_1.createReserveTransactionStartParams)(Object.assign({ project: transaction.project,
|
|
28
28
|
// object: <IObjectWithDetail>action.object,
|
|
29
|
-
acceptedOffers: params.acceptedOffers, event:
|
|
30
|
-
|
|
31
|
-
:
|
|
29
|
+
acceptedOffers: params.acceptedOffers, event: {
|
|
30
|
+
id: event.id,
|
|
31
|
+
offers: Object.assign(Object.assign({}, (typeof ((_b = (_a = event.offers) === null || _a === void 0 ? void 0 : _a.validForMemberTier) === null || _b === void 0 ? void 0 : _b.token) === 'string')
|
|
32
|
+
? { validForMemberTier: event.offers.validForMemberTier }
|
|
33
|
+
: undefined), (typeof ((_c = event.offers) === null || _c === void 0 ? void 0 : _c.identifier) === 'string')
|
|
34
|
+
? { identifier: event.offers.identifier }
|
|
35
|
+
: undefined)
|
|
36
|
+
}, transaction,
|
|
32
37
|
transactionNumber }, (params.broker !== undefined) ? { broker: params.broker } : undefined));
|
|
33
38
|
const startParamObject = yield validateObjectWithoutDetail(startParams, { id: params.transaction.id })(repos);
|
|
34
39
|
const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject,
|
|
@@ -8,6 +8,7 @@ import type { EventRepo } from '../../../repo/event';
|
|
|
8
8
|
import type { EventOfferRepo } from '../../../repo/eventOffer';
|
|
9
9
|
import { EventSeriesRepo } from '../../../repo/eventSeries';
|
|
10
10
|
import type { IssuerRepo } from '../../../repo/issuer';
|
|
11
|
+
import type { MemberRepo } from '../../../repo/member';
|
|
11
12
|
import type { MemberProgramRepo } from '../../../repo/memberProgram';
|
|
12
13
|
import type { OfferRepo } from '../../../repo/offer/unitPriceInCatalog';
|
|
13
14
|
import type { OfferCatalogRepo } from '../../../repo/offerCatalog';
|
|
@@ -36,6 +37,7 @@ interface IAuthorizeRepos {
|
|
|
36
37
|
eventOffer: EventOfferRepo;
|
|
37
38
|
eventSeries: EventSeriesRepo;
|
|
38
39
|
issuer: IssuerRepo;
|
|
40
|
+
member: MemberRepo;
|
|
39
41
|
memberProgram: MemberProgramRepo;
|
|
40
42
|
stockHolder: StockHolderRepo;
|
|
41
43
|
offer: OfferRepo;
|
|
@@ -82,7 +82,7 @@ function authorize(params, options) {
|
|
|
82
82
|
}
|
|
83
83
|
function validateCreateRequest(params) {
|
|
84
84
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
85
|
-
var _a, _b, _c;
|
|
85
|
+
var _a, _b, _c, _d;
|
|
86
86
|
const transaction = yield repos.transaction.projectFieldsInProgressById({
|
|
87
87
|
typeOf: factory.transactionType.PlaceOrder,
|
|
88
88
|
id: params.transaction.id
|
|
@@ -100,7 +100,12 @@ function validateCreateRequest(params) {
|
|
|
100
100
|
}
|
|
101
101
|
// support validForMemberTier(2025-05-14~)
|
|
102
102
|
const validForMemberTier = (_c = params.object.reservationFor.offers) === null || _c === void 0 ? void 0 : _c.validForMemberTier;
|
|
103
|
-
const
|
|
103
|
+
const eventOfferIdentifier = (_d = params.object.reservationFor.offers) === null || _d === void 0 ? void 0 : _d.identifier;
|
|
104
|
+
const event = {
|
|
105
|
+
id: params.object.reservationFor.id,
|
|
106
|
+
typeOf: factory.eventType.ScreeningEvent, // ひとまずfix(2024-07-17~)
|
|
107
|
+
offers: Object.assign(Object.assign({}, (typeof (validForMemberTier === null || validForMemberTier === void 0 ? void 0 : validForMemberTier.token) === 'string') ? { validForMemberTier } : undefined), (typeof eventOfferIdentifier === 'string') ? { identifier: eventOfferIdentifier } : undefined)
|
|
108
|
+
};
|
|
104
109
|
return { transaction, event };
|
|
105
110
|
});
|
|
106
111
|
}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-cognito-identity-provider": "3.600.0",
|
|
13
13
|
"@aws-sdk/credential-providers": "3.600.0",
|
|
14
|
-
"@chevre/factory": "5.2.0-alpha.
|
|
14
|
+
"@chevre/factory": "5.2.0-alpha.10",
|
|
15
15
|
"@cinerino/sdk": "12.7.0-alpha.4",
|
|
16
16
|
"@motionpicture/coa-service": "9.6.0",
|
|
17
17
|
"@motionpicture/gmo-service": "5.4.0-alpha.1",
|
|
@@ -115,5 +115,5 @@
|
|
|
115
115
|
"postversion": "git push origin --tags",
|
|
116
116
|
"prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
|
|
117
117
|
},
|
|
118
|
-
"version": "23.1.0-alpha.
|
|
118
|
+
"version": "23.1.0-alpha.6"
|
|
119
119
|
}
|