前回までの状況はこちら
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/hotel-mng
今回は、予約の編集処理と削除処理を修正します。
まず、UIですが、氏名、住所、電話番号はユーザー登録情報を使用するため、編集画面では、編集不可にします。
<tbody>
<tr>
<th>名前</th>
<td>{{ contents.name }}</td>
</tr>
<tr>
<th>住所</th>
<td>{{ contents.address }}</td>
</tr>
<tr>
<th>電話番号</th>
<td>{{ contents.phone }}</td>
</tr>
編集処理では、氏名、住所、電話番号のカラムはテーブルから削除しましたので、パラメータに含めないように修正します。
ログイン中のユーザー情報はAuth::user()を使用します。
予約情報の変更のみなので、ユーザーと予約情報の紐付けは変える必要ありません。
public function update(Request $request)
{
\Log::debug(print_r($request->contents, true));
if($this->registerManagement->checkScheduleForUpdate($request->contents["start_day"],
$request->contents["days"],
$request->contents["id"],
$request->contents["roomid"]) == false)
{
\Log::debug("スケジュールが重複しています");
return response()->json([
'errors' => "スケジュールが重複しています"
], 400);
}
$param = $this->registerManagement->getParam();
$this->registerManagement->updateById($request->contents["id"],
[
$param[0] => $request->contents["num"],
$param[1] => $request->contents["days"],
$param[2] => $request->contents["start_day"],
$param[3] => false,
$param[4] => date('Y-m-d H:i', strtotime($request->contents["start_day"].' + '.$request->contents["days"].' day') + $request->contents["checkout"])
], $request->contents["roomid"]);
return response()->json(['registerLists' => $this->registerManagement->getListByMonth(
$request->year,
$request->month,
$request->room,
Auth::id()
)]);
}
削除処理は、予約情報の削除と同時に予約情報との紐付けを解除する必要があります。
public function delete(Request $request)
{
$this->registerManagement->deleteById($request->id, Auth::user());
return response()->json(['registerLists' => $this->registerManagement->getListByMonth(
$request->year,
$request->month,
$request->room,
Auth::user()
)]);
}
public function deleteById($id, $user)
{
$model = $this->getItemById($id);
$this->detachToUser($model, $user);
$this->detachToRoom($model, $model->rooms()->first()->id);
$this->detachToSchedule($model);
$model->delete();
}
これでユーザーログインでの修正は完了しました。
次は、管理者ログインでの処理を修正します。