<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Park;
use App\Models\PriceA;
use App\Models\PriceB;

class PriceListController extends Controller
{
    /**
     * 料金一覧表 一覧ページ
     */
    public function list(Request $request)
    {
        $parkList = Park::orderBy('park_name')->get();
        $parkId = $request->input('park_id', '');

        $masterList = [
            [
                'name' => 'マスターA',
                'status' => '利用中',
                'groups' => [],
            ],
            [
                'name' => 'マスターB',
                'status' => '待作中',
                'groups' => [],
            ],
        ];

        if ($parkId) {
            // parkとprice_aをJOIN
            $aRows = \DB::table('price_a')
                ->join('park', 'park.park_id', '=', 'price_a.park_id')
                ->where('price_a.park_id', $parkId)
                ->select('price_a.*') // 必要ならpark.*も
                ->get();

            $aGrouped = $this->groupPriceRows($aRows);

            $masterList[0]['groups'] = $aGrouped;
            // マスターBも同様に取得・整形する場合はここに追加
        }

        return view('admin.PriceList.list', [
            'parkList' => $parkList,
            'parkId' => $parkId,
            'masterList' => $masterList,
        ]);
    }

    /**
     * 料金データを「駐輪分類ID-ユーザ分類ID-駐輪場ID」でグループ化
     */
    private function groupPriceRows($rows)
    {
        $result = [];
        foreach ($rows as $row) {
            // グループキーは分類ID+ユーザ分類ID+駐輪場ID
            $key = $row->price_ptypeid . '-' . $row->user_categoryid . '-' . $row->park_id;

            if (!isset($result[$key])) {
                $result[$key] = [
                    'id' => $row->price_parkplaceid,
                    'classification' => $row->price_ptypeid,
                    'room_number' => '', // 必要ならpplace_id等をセット
                    'category1' => $row->prine_name ?? '',
                    'category2' => '',
                    'category3' => '',
                    'bike_1m' => '',
                    'bike_2m' => '',
                    'bike_3m' => '',
                    'bike_6m' => '',
                    'bike_12m' => '',
                    // 必要なら原付・自動二輪も同様に追加
                ];
            }

            // 月数ごとに金額をセット
            if ($row->price_month == 1) {
                $result[$key]['bike_1m'] = $row->price;
            } elseif ($row->price_month == 2) {
                $result[$key]['bike_2m'] = $row->price;
            } elseif ($row->price_month == 3) {
                $result[$key]['bike_3m'] = $row->price;
            } elseif ($row->price_month == 6) {
                $result[$key]['bike_6m'] = $row->price;
            } elseif ($row->price_month == 12) {
                $result[$key]['bike_12m'] = $row->price;
            }
        }
        return array_values($result);
    }

    public function update(Request $request)
    {
        foreach ($request->input('rows', []) as $row) {
            $id = $row['id'] ?? null;
            if (!$id) continue;

            // 更新対象の月リスト
            $months = [
                'bike_1m' => 1,
                'bike_2m' => 2,
                'bike_3m' => 3,
                'bike_6m' => 6,
                'bike_12m' => 12,
            ];

            foreach ($months as $field => $month) {
                if (isset($row[$field])) {
                    // price_aから該当レコードを取得
                    $item = \App\Models\PriceA::where('price_parkplaceid', $id)
                        ->where('price_month', $month)
                        ->first();
                    if ($item) {
                        $item->price = $row[$field];
                        $item->save();
                    }
                }
            }
            // 原付・自動二輪も同様に必要なら追加
        }
        return back()->with('success', '金額を更新しました');
    }

    public function insert(Request $request)
    {
        // 例：bike_2m（2ヶ月）だけ新規追加する場合
        if ($request->filled('bike_2m')) {
            $row = new \App\Models\PriceA();
            $row->park_id = $request->input('park_id'); // 必要に応じて
            $row->price = $request->input('bike_2m');
            $row->price_month = 2;
            // 他の必要なカラムもセット
            $row->save();
        }
        // 他の月も同様に必要なら追加
        return back()->with('success', '金額を追加しました');
    }
}
