<?php

/*
 *查询相关联的书
 *mula->attakhata->tika
 *算法：
 *在原始的html 文件里 如 s0404m1.mul.htm 有 <a name="para2_an8"></a>
 * 在 so404a.att.htm 里也有 </a><a name="para2_an8"></a>
 * 这说明这两个段落是关联段落，para2是段落编号 an8是书名只要书名一样，段落编号一样。
 * 两个就是关联段落
 *
 * 表名：cs6_para
 * 所以数据库结构是
 * book 书号 1-217
 * para 段落号
 * bookid
 * cspara 上述段落号
 * book_name 上述书名
 *
 * 输入 book para
 * 查询书名和段落号
 * 输入这个书名和段落号
 * 查询有多少段落有一样的书名和段落号
 * 有些book 里面有两本书。所以又加了一个bookid
 * 每个bookid代表一本真正的书。所以bookid 要比 book 多
 * bookid 是为了输出书名用的。不是为了查询相关段落
 *
 * 数据要求：
 * 制作时包含全部段落。做好后把没有相关段落的段落删掉？？
 *
 */

namespace App\Http\Controllers;

use App\Http\Resources\RelatedParagraphResource;
use App\Models\RelatedParagraph;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

class RelatedParagraphController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index(Request $request)
    {
        //
        $first = RelatedParagraph::where('book', $request->input('book'))
            ->where('para', $request->input('para'))
            ->where('cs_para', '>', 0)
            ->first();
        if (! $first) {
            // 该段没有 cs6 锚点（约 2% 的段落如此），或 book/para 传错。
            // 「没有关联段落」是正常结果，不是错误——返回空集，让客户端能与故障区分开
            return $this->ok(['rows' => [], 'count' => 0]);
        }
        $result = RelatedParagraph::where('book_name', $first->book_name)
            ->where('cs_para', $first->cs_para)
            ->orderBy('book_id')
            ->orderBy('para')
            ->get();
        $books = [];
        foreach ($result as $value) {
            // 把段落整合成书。有几本书就有几条输出纪录
            if (! isset($books[$value->book_id])) {
                $books[$value->book_id]['book'] = $value->book;
                $books[$value->book_id]['book_id'] = $value->book_id;
                $books[$value->book_id]['cs6_para'] = $value->cs_para;
            }
            $books[$value->book_id]['para'][] = $value->para;
        }

        return $this->ok(['rows' => RelatedParagraphResource::collection($books), 'count' => count($books)]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @return Response
     */
    public function show(RelatedParagraph $relatedParagraph)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @return Response
     */
    public function update(Request $request, RelatedParagraph $relatedParagraph)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @return Response
     */
    public function destroy(RelatedParagraph $relatedParagraph)
    {
        //
    }
}
