OMDSCloud/dictation_server/src/repositories/terms/terms.repository.service.ts
maruyama.t 94f34a0fde Merged PR 606: 画面修正(Terms画面)
## 概要
[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
## 動作確認状況
- ローカルで確認

## 補足
- 相談、参考資料などがあれば
2023-12-05 09:10:49 +00:00

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,
};
});
}
}