124 lines
4.6 KiB
PHP
124 lines
4.6 KiB
PHP
{{-- resources/views/admin/reserves/delete.blade.php --}}
|
||
@extends('layouts.app')
|
||
@section('title', '定期予約 削除確認')
|
||
|
||
@section('content')
|
||
@php
|
||
// === 削除対象IDを堅牢に収集($rows / $ids / request('ids') のいずれでも可)===
|
||
$collectedIds = [];
|
||
if (!empty($rows)) {
|
||
foreach ($rows as $r) { $collectedIds[] = (int)$r->reserve_id; }
|
||
} elseif (!empty($ids)) {
|
||
$collectedIds = array_map('intval', (array)$ids);
|
||
} else {
|
||
// クエリやPOSTで "ids" が来ている場合(ids[]= / ids=1,2 どちらも吸収)
|
||
$raw = request()->input('ids', []);
|
||
if (is_string($raw)) $raw = explode(',', $raw);
|
||
$collectedIds = array_map('intval', (array)$raw);
|
||
}
|
||
$collectedIds = array_values(array_unique(array_filter($collectedIds, fn($v)=>$v>0)));
|
||
@endphp
|
||
|
||
<style>
|
||
/* 画面全体を小さめの文字で統一 */
|
||
.rs-del-page, .rs-del-page .card, .rs-del-page .btn, .rs-del-page table { font-size: 13px; }
|
||
</style>
|
||
|
||
<div class="rs-del-page">
|
||
{{-- ヘッダー / パンくず --}}
|
||
<div class="content-header">
|
||
<div class="container-fluid">
|
||
<div class="row mb-2">
|
||
<div class="col-sm-6"><h1 class="m-0 text-dark">削除確認</h1></div>
|
||
<div class="col-sm-6">
|
||
<ol class="breadcrumb float-sm-right text-sm">
|
||
<li class="breadcrumb-item"><a href="{{ route('home') }}">ホーム</a></li>
|
||
<li class="breadcrumb-item"><a href="{{ route('reserves') }}">定期予約マスタ</a></li>
|
||
<li class="breadcrumb-item active">削除確認</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
@if(count($collectedIds))
|
||
<div class="alert alert-warning mb-0">
|
||
選択した定期予約を<strong>削除</strong>します。この操作は取り消せません。よろしいですか?
|
||
</div>
|
||
@else
|
||
<div class="alert alert-danger mb-0">
|
||
削除対象が選択されていません。一覧に戻って、チェックボックスで対象を選択してください。
|
||
</div>
|
||
@endif
|
||
</div>
|
||
</div>
|
||
|
||
<section class="content">
|
||
<div class="container-fluid">
|
||
|
||
{{-- 対象一覧(可能なら情報を表示。$rows が無いときはIDのバッジだけ) --}}
|
||
<div class="card">
|
||
<div class="card-header py-2">
|
||
<h3 class="card-title">削除対象</h3>
|
||
</div>
|
||
<div class="card-body p-2">
|
||
@if(!empty($rows) && count($rows))
|
||
<div class="table-responsive">
|
||
<table class="table table-bordered table-hover mb-2">
|
||
<thead>
|
||
<tr>
|
||
<th style="white-space:nowrap;">予約ID</th>
|
||
<th>定期契約ID</th>
|
||
<th>利用者名</th>
|
||
<th>駐輪場</th>
|
||
<th>予約日時</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
@foreach($rows as $r)
|
||
<tr>
|
||
<td class="text-right">{{ $r->reserve_id }}</td>
|
||
<td class="text-right">{{ $r->contract_id ?? '' }}</td>
|
||
<td>{{ $r->user_name ?? '' }}</td>
|
||
<td>{{ $r->park_name ?? '' }}</td>
|
||
{{-- ※ 実テーブル列名に合わせて reserve_date を使用 --}}
|
||
<td>{{ $r->reserve_date ?? '' }}</td>
|
||
</tr>
|
||
@endforeach
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
@elseif(count($collectedIds))
|
||
<p class="mb-2">
|
||
削除対象ID:
|
||
@foreach($collectedIds as $id)
|
||
<span class="badge badge-secondary mr-1">{{ $id }}</span>
|
||
@endforeach
|
||
</p>
|
||
@else
|
||
<p class="text-muted mb-0">削除対象が取得できませんでした。</p>
|
||
@endif
|
||
</div>
|
||
</div>
|
||
|
||
{{-- 確認フォーム --}}
|
||
<form action="{{ route('reserves_delete') }}" method="post" class="mt-2">
|
||
@csrf
|
||
{{-- コントローラ側で「確認済み」を判定できるようにフラグを送る --}}
|
||
<input type="hidden" name="confirmed" value="1">
|
||
|
||
{{-- hidden に対象 ID を埋め込む --}}
|
||
@foreach($collectedIds as $id)
|
||
<input type="hidden" name="ids[]" value="{{ $id }}">
|
||
@endforeach
|
||
|
||
<a href="{{ route('reserves') }}" class="btn btn-default">キャンセル</a>
|
||
<button type="submit" class="btn btn-danger"
|
||
{{ count($collectedIds) ? '' : 'disabled' }}>
|
||
削除する
|
||
</button>
|
||
</form>
|
||
|
||
</div>
|
||
</section>
|
||
</div>
|
||
@endsection
|