File: /home/xedaptot/rms.naniguide.com/app/Http/Controllers/HotelConfigController.php
<?php
namespace App\Http\Controllers;
use App\Models\Hotel;
use App\Models\RoomType;
use Illuminate\Http\Request;
class HotelConfigController extends Controller
{
public function index(Request $request)
{
$hotel = $this->hotel($request);
$roomTypes = RoomType::where('hotel_id', $hotel->id)->latest()->get();
return view('rms.hotel-config', compact('hotel', 'roomTypes'));
}
public function updateHotel(Request $request)
{
$hotel = $this->hotel($request);
$hotel->update($request->validate([
'name' => ['required'],
'code' => ['required'],
'city' => ['nullable'],
'currency' => ['required', 'size:3'],
'total_rooms' => ['required', 'integer', 'min:1'],
'gross_profit_margin' => ['required', 'numeric', 'min:0', 'max:100'],
]));
return back()->with('status', 'Đã cập nhật khách sạn.');
}
public function storeRoomType(Request $request)
{
$hotel = $this->hotel($request);
RoomType::create($request->validate([
'name' => ['required'],
'code' => ['required'],
'room_count' => ['required', 'integer', 'min:1'],
'base_rate' => ['required', 'numeric', 'min:0'],
'min_rate' => ['required', 'numeric', 'min:0'],
'max_rate' => ['required', 'numeric', 'min:0'],
]) + ['hotel_id' => $hotel->id]);
$hotel->update(['total_rooms' => RoomType::where('hotel_id', $hotel->id)->sum('room_count')]);
return back()->with('status', 'Đã thêm loại phòng.');
}
public function deleteRoomType(Request $request, RoomType $roomType)
{
abort_unless($roomType->hotel_id === $this->hotel($request)->id, 403);
$roomType->delete();
return back()->with('status', 'Đã xóa loại phòng.');
}
private function hotel(Request $request): Hotel
{
return $request->user()->hotel_id ? Hotel::findOrFail($request->user()->hotel_id) : Hotel::firstOrFail();
}
}