UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

225 lines (224 loc) 9.48 kB
"use strict"; 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;