/**
 * [ブロック] 申し込みの内容が重複していないかどうかを検査し、問題がある場合は例外を発生させる
 *
 * @param MovieViewerReviewPackPurchaseRequest $request 申し込み
 * 
 * @return void
 */
function plugin_movieviewer_review_purchase_assert_request_isnot_duplicate($user, $request)
{
    $requests_not_yet_confirmed = plugin_movieviewer_get_review_pack_purchase_request_repository()->findNotYetConfirmed($user->id);
    foreach ($request->getItems() as $item) {
        if (MovieViewerReviewPackPurchaseRequest::requestsHasItem($requests_not_yet_confirmed, $item->course_id, $item->session_id)) {
            throw new Exception($item->describe());
        }
    }
}