/**
 * [アクション] 入金を確定させ、結果画面を生成する
 *
 * @return array ページ名, 画面(html)
 */
function plugin_movieviewer_purchase_confirm_payment_action_execute()
{
    $page = plugin_movieviewer_get_current_page();
    try {
        plugin_movieviewer_validate_csrf_token();
    } catch (MovieViewerValidationException $ex) {
        return plugin_movieviewer_action_error_response($page, "不正なリクエストです。");
    }
    $ids = filter_input(INPUT_POST, 'purchase_requests', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
    foreach ($ids as $req_id) {
        try {
            plugin_movieviewer_validate_deal_pack_request_id($req_id);
        } catch (MovieViewerValidationException $ex) {
            return plugin_movieviewer_action_error_response($page, "指定した内容に誤りがあります。");
        }
    }
    $requests = array();
    foreach ($ids as $req_id) {
        try {
            $request = plugin_movieviewer_get_deal_pack_purchase_request_repository()->findById($req_id);
        } catch (MovieViewerRepositoryObjectNotFoundException $ex) {
            return plugin_movieviewer_action_error_response($page, "指定した内容に誤りがあります。");
        }
        $requests[] = $request;
    }
    $date_begin = filter_input(INPUT_POST, 'viewing_perod_date_begin', FILTER_DEFAULT);
    try {
        plugin_movieviewer_validate_ymd($date_begin);
    } catch (MovieViewerValidationException $ex) {
        return plugin_movieviewer_action_error_response($page, "指定した内容に誤りがあります。");
    }
    $date_begin = new DateTime($date_begin);
    foreach ($requests as $request) {
        $request->confirmPayment($date_begin);
    }
    $hsc = "plugin_movieviewer_hsc";
    foreach ($requests as $request) {
        $confirmation = $request->getPaymentConfirmation();
        $content_row = <<<TEXT
        <tr>
          <td>{$hsc($request->getUser()->lastName)} {$hsc($request->getUser()->firstName)}</td>
          <td>{$hsc($request->getUser()->id)}</td>
          <td>{$hsc($request->getPack()->describe())}</td>
          <td>{$hsc($request->getDateRequested()->format("Y/m/d H:m:s"))}</td>
          <td>{$hsc($confirmation->getViewingPeriod()->date_begin->format("Y/m/d"))}</td>
          <td>{$hsc($confirmation->getViewingPeriod()->date_end->format("Y/m/d"))}</td>
        </tr>
TEXT;
        $content_rows .= $content_row;
    }
    $content = <<<TEXT
    <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
    <link href="https://code.jquery.com/ui/1.11.4/themes/redmond/jquery-ui.css" rel="stylesheet">
    <link href="plugin/movieviewer/assets/css/movieviewer.css" rel="stylesheet">
    <h2>入金確認完了</h2>
    <p>
      以下の申し込みの入金を確定しました。
    </p>
    <p>
    <table class="table purchase-requests">
      <thead>
      <tr>
        <th>名前</th>
        <th>メールアドレス</th>
        <th>受講対象</th>
        <th>申込日</th>
        <th>視聴期限(開始)</th>
        <th>視聴期限(終了)</th>
      </tr>
      </thead>
      <tbody>
        {$content_rows}
      <tbody>
    </table>
    </p>
TEXT;
    return array('msg' => $page, 'body' => $content);
}
 function accept()
 {
     $purchase_request = new MovieViewerDealPackPurchaseRequest($this->_user->id, $this->_pack->getId());
     plugin_movieviewer_get_deal_pack_purchase_request_repository()->store($purchase_request);
     $this->_purchase_request = $purhase_request;
 }
    private function generateMessageRequestingDealPack($user, $context)
    {
        $objects = plugin_movieviewer_get_deal_pack_purchase_request_repository()->findRequestingByUser($user->id);
        if (count($objects) === 0) {
            return '';
        }
        $content = "";
        foreach ($objects as $object) {
            $content .= <<<TEXT
            <li>{$object->getPack()->describe()}</li>
TEXT;
        }
        return $content;
    }