@chevre/domain
Version:
Chevre Domain Library for Node.js
225 lines (224 loc) • 9.48 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreditCardRepo = void 0;
const GMO = require("@motionpicture/gmo-service");
const factory = require("../../factory");
/**
* クレジットカードリポジトリ
*/
class CreditCardRepo {
constructor(options) {
this.options = options;
}
/**
* クレジットカード追加
*/
save(params) {
return __awaiter(this, void 0, void 0, function* () {
let addedCreditCard;
const memberId = params.personId;
const memberName = params.personId;
try {
// まずGMO会員登録
try {
yield this.options.cardService.searchMember({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId
});
}
catch (searchMemberError) {
// 会員が存在しない場合このエラーになる
if (Array.isArray(searchMemberError.errors) &&
searchMemberError.errors.length === 1 &&
searchMemberError.errors[0].info === 'E01390002') {
yield this.options.cardService.saveMember({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId,
memberName: memberName
});
}
else {
throw searchMemberError;
}
}
const saveCardResult = yield this.options.cardService.saveCard({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId,
seqMode: GMO.utils.util.SeqMode.Physics,
cardNo: params.creditCard.cardNo,
cardPass: params.creditCard.cardPass,
expire: params.creditCard.expire,
holderName: params.creditCard.holderName,
token: params.creditCard.token,
// tslint:disable-next-line:no-single-line-block-comment
defaultFlag: (params.defaultFlag === true) ? /* istanbul ignore next */ '1' : '0'
});
const searchCardResults = yield this.options.cardService.searchCard({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId,
seqMode: GMO.utils.util.SeqMode.Physics,
cardSeq: saveCardResult.cardSeq
});
addedCreditCard = searchCardResults[0];
}
catch (error) {
if (error.name === 'GMOServiceBadRequestError') {
throw new factory.errors.Argument('creditCard', error.errors[0].content);
}
else {
throw error;
}
}
return addedCreditCard;
});
}
/**
* クレジットカード削除
*/
deleteBySequenceNumber(params) {
return __awaiter(this, void 0, void 0, function* () {
const memberId = params.personId;
try {
// GMOからカード削除
yield this.options.cardService.deleteCard({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId,
seqMode: GMO.utils.util.SeqMode.Physics,
cardSeq: params.cardSeq
});
}
catch (error) {
if (error.name === 'GMOServiceBadRequestError') {
throw new factory.errors.Argument('cardSeq', error.errors[0].content);
}
else {
throw error;
}
}
});
}
/**
* 会員のクレジットカードを全て削除
*/
deleteAll(params) {
return __awaiter(this, void 0, void 0, function* () {
const memberId = params.personId;
let searchResult;
try {
try {
searchResult = yield this.options.cardService.searchMember({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId
});
}
catch (searchMemberError) {
// 会員が存在しない場合このエラーになる
if (Array.isArray(searchMemberError.errors) &&
searchMemberError.errors.length === 1 &&
searchMemberError.errors[0].info === 'E01390002') {
// すでに存在しなければok
}
else {
throw searchMemberError;
}
}
if (searchResult !== undefined) {
// GMOから会員削除
yield this.options.cardService.deleteMember({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId
});
}
}
catch (error) {
if (error.name === 'GMOServiceBadRequestError') {
throw new factory.errors.Argument('cardSeq', error.errors[0].content);
}
else {
throw error;
}
}
});
}
/**
* クレジットカード検索
*/
search(params) {
return __awaiter(this, void 0, void 0, function* () {
let creditCards = [];
try {
const memberId = params.personId;
// const memberName = params.personId;
let searchMemberResult;
try {
// まずGMO会員存在確認
searchMemberResult = yield this.options.cardService.searchMember({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId
});
}
catch (searchMemberError) {
// 会員が存在しない場合このエラーになる
if (Array.isArray(searchMemberError.errors) &&
searchMemberError.errors.length === 1 &&
searchMemberError.errors[0].info === 'E01390002') {
// 存在しなければカードなし
}
else {
throw searchMemberError;
}
}
// 会員が存在していればカード検索
if (searchMemberResult !== undefined) {
creditCards = yield this.options.cardService.searchCard({
siteId: this.options.siteId,
sitePass: this.options.sitePass,
memberId: memberId,
seqMode: GMO.utils.util.SeqMode.Physics
// 未削除のものに絞り込む
})
.then((results) => results.filter((result) => result.deleteFlag === '0'));
}
}
catch (error) {
if (error.name === 'GMOServiceBadRequestError') {
// カードが存在しない場合このエラーになる
// ErrCode=E01&ErrInfo=E01240002
// tslint:disable-next-line:no-single-line-block-comment
/* istanbul ignore if: please write tests */
if (Array.isArray(error.errors) &&
error.errors.length === 1 &&
error.errors[0].info === 'E01240002') {
// no op
// 存在しないだけなので何もしない
}
else {
throw new factory.errors.Argument('personId', error.errors[0].content);
}
}
else {
throw error;
}
}
return creditCards;
});
}
}
exports.CreditCardRepo = CreditCardRepo;
;