krgm.so-manager-dev.com/app/Http/Controllers/Admin/PriceListController.php
ou.zaikou e1629913bd 初回コミット
Signed-off-by:  ou.zaikou<caihaoweng@gmail.com>
2025-08-21 23:09:40 +09:00

145 lines
4.7 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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_2m2ヶ月だけ新規追加する場合
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', '金額を追加しました');
}
}