## 概要 [Task3210: 画面修正(Terms画面)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3210) [Task3211:API修正(バージョン取得API)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_sprints/taskboard/OMDSDictation%20%E3%83%81%E3%83%BC%E3%83%A0/OMDSDictation/%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%83%88%2023-1?workitem=3211) [Task3212:API修正(バージョン更新API))](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_sprints/taskboard/OMDSDictation%20%E3%83%81%E3%83%BC%E3%83%A0/OMDSDictation/%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%83%88%2023-1?workitem=3212) - このPull Requestでの対象/対象外 Click here to read the terms of use.の文言は多言語対応の対象のため、現在一律同じ文言がでます。 第一~第四階層は 上からEULA,PrivacyNotice,DPAが表示されています 第五階層は、 上から、PrivacyNotice,DPAが表示されています - 影響範囲(他の機能にも影響があるか) ユーザアーカイブテーブルにPrivacyNoticeのバージョンを追加 ## レビューポイント 同意済みプライバシーポリシーはユーザーアーカイブの対象だと認識しているが正しいか。 termsテーブルのdocument_typeの値をPrivacyNoticeにしているが、PRIVACY_NOTICEにしたほうがよいか。 ユニットテストに不足はないか。 ## UIの変更 - Before/Afterのスクショなど - スクショ置き場 https://ndstokyo.sharepoint.com/sites/Piranha/Shared%20Documents/Forms/AllItems.aspx?csf=1&web=1&e=hzPw9b&cid=7737ed1b%2D0eb4%2D4331%2Da238%2D14dd35b27e18&FolderCTID=0x012000C0DCEE65AC2177479C3C761CD137C9C9&id=%2Fsites%2FPiranha%2FShared%20Documents%2FGeneral%2FOMDS%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%2FTask3210&viewid=786a81cf%2Dd15f%2D4dc2%2D9e55%2Dc7a729fbc72f ## 動作確認状況 - ローカルで確認 ## 補足 - 相談、参考資料などがあれば
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { DataSource } from 'typeorm';
|
|
import { TermsVersion } from '../../features/terms/types/types';
|
|
import { Term } from './entity/term.entity';
|
|
import { TERM_TYPE } from '../../constants';
|
|
import { TermInfoNotFoundError } from '../users/errors/types';
|
|
|
|
@Injectable()
|
|
export class TermsRepositoryService {
|
|
constructor(private dataSource: DataSource) {}
|
|
|
|
/*
|
|
* 利用規約の最新バージョンを取得する
|
|
* @returns Term[]
|
|
*/
|
|
async getLatestTermsInfo(): Promise<TermsVersion> {
|
|
return await this.dataSource.transaction(async (entityManager) => {
|
|
const termRepo = entityManager.getRepository(Term);
|
|
const latestEulaInfo = await termRepo.findOne({
|
|
where: {
|
|
document_type: TERM_TYPE.EULA,
|
|
},
|
|
order: {
|
|
id: 'DESC',
|
|
},
|
|
});
|
|
const latestPrivacyNoticeInfo = await termRepo.findOne({
|
|
where: {
|
|
document_type: TERM_TYPE.PRIVACY_NOTICE,
|
|
},
|
|
order: {
|
|
id: 'DESC',
|
|
},
|
|
});
|
|
const latestDpaInfo = await termRepo.findOne({
|
|
where: {
|
|
document_type: TERM_TYPE.DPA,
|
|
},
|
|
order: {
|
|
id: 'DESC',
|
|
},
|
|
});
|
|
|
|
if (!latestEulaInfo || !latestPrivacyNoticeInfo || !latestDpaInfo) {
|
|
throw new TermInfoNotFoundError(
|
|
`Terms info is not found. latestEulaInfo: ${latestEulaInfo},
|
|
latestPrivacyNoticeInfo: ${latestPrivacyNoticeInfo},
|
|
latestDpaInfo: ${latestDpaInfo}`,
|
|
);
|
|
}
|
|
return {
|
|
eulaVersion: latestEulaInfo.version,
|
|
privacyNoticeVersion: latestEulaInfo.version,
|
|
dpaVersion: latestDpaInfo.version,
|
|
};
|
|
});
|
|
}
|
|
}
|