أُنشئ من Tokal/Test
Remove booking pricing and fix venue image delivery
هذا الالتزام موجود في:
@@ -6,8 +6,6 @@ use App\Http\Controllers\Controller;
|
||||
use App\Models\Reservation;
|
||||
use App\Models\Notification;
|
||||
use App\Models\ReservationStatusHistory;
|
||||
use App\Models\ReservationFee;
|
||||
use App\Models\PricingRule;
|
||||
use App\Models\ReservationTableAssignment;
|
||||
use App\Models\VenueTable;
|
||||
use App\Models\ReservationReminder;
|
||||
@@ -304,12 +302,11 @@ class ReservationController extends Controller
|
||||
}
|
||||
|
||||
$reservation = null;
|
||||
$fee = null;
|
||||
$table = null;
|
||||
$reminder = null;
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($validated, $user, &$reservation, &$fee, &$table, &$reminder) {
|
||||
DB::transaction(function () use ($validated, $user, &$reservation, &$table, &$reminder) {
|
||||
$reservation = Reservation::create([
|
||||
'code' => $this->generateCode(),
|
||||
'customer_id' => $user->id,
|
||||
@@ -332,7 +329,6 @@ class ReservationController extends Controller
|
||||
'venue_table_id' => $table->id,
|
||||
]);
|
||||
|
||||
$fee = $this->createReservationFee($reservation);
|
||||
$reminder = $this->createReservationReminder($reservation);
|
||||
$this->logStatusChange($reservation, null, 'pending', $user->id);
|
||||
});
|
||||
@@ -350,12 +346,6 @@ class ReservationController extends Controller
|
||||
'reservation_time' => $reservation->reservation_time,
|
||||
'party_size' => $reservation->party_size,
|
||||
],
|
||||
'fee' => [
|
||||
'price_per_person' => $fee->price_per_person,
|
||||
'party_size' => $fee->party_size,
|
||||
'total_amount' => $fee->total_amount,
|
||||
'currency' => $fee->currency,
|
||||
],
|
||||
'table' => [
|
||||
'id' => $table->id,
|
||||
'name' => $table->name,
|
||||
@@ -377,60 +367,6 @@ class ReservationController extends Controller
|
||||
return $code;
|
||||
}
|
||||
|
||||
private function createReservationFee(Reservation $reservation): ReservationFee
|
||||
{
|
||||
$venue = $reservation->venue ?: Venue::find($reservation->venue_id);
|
||||
|
||||
$rule = $this->getPricingRule($venue);
|
||||
$pricePerPerson = $rule ? (float) $rule->price_per_person : 0.0;
|
||||
$total = $pricePerPerson * (int) $reservation->party_size;
|
||||
$currency = env('APP_CURRENCY', 'USD');
|
||||
|
||||
return ReservationFee::create([
|
||||
'reservation_id' => $reservation->id,
|
||||
'pricing_rule_id' => $rule?->id,
|
||||
'price_per_person' => $pricePerPerson,
|
||||
'party_size' => $reservation->party_size,
|
||||
'total_amount' => $total,
|
||||
'currency' => $currency,
|
||||
]);
|
||||
}
|
||||
|
||||
private function getPricingRule(?Venue $venue): ?PricingRule
|
||||
{
|
||||
if (! $venue) {
|
||||
return PricingRule::where('scope', 'global_type')
|
||||
->where('is_active', true)
|
||||
->latest('id')
|
||||
->first();
|
||||
}
|
||||
|
||||
$venueRule = PricingRule::where('scope', 'venue')
|
||||
->where('venue_id', $venue->id)
|
||||
->where('is_active', true)
|
||||
->latest('id')
|
||||
->first();
|
||||
|
||||
if ($venueRule) {
|
||||
return $venueRule;
|
||||
}
|
||||
|
||||
$typeRule = PricingRule::where('scope', 'global_type')
|
||||
->where('venue_type', (string) $venue->type)
|
||||
->where('is_active', true)
|
||||
->latest('id')
|
||||
->first();
|
||||
|
||||
if ($typeRule) {
|
||||
return $typeRule;
|
||||
}
|
||||
|
||||
return PricingRule::where('scope', 'global_type')
|
||||
->where('is_active', true)
|
||||
->latest('id')
|
||||
->first();
|
||||
}
|
||||
|
||||
private function findAvailableTable(Reservation $reservation, bool $includePending, bool $lockRows = false): ?VenueTable
|
||||
{
|
||||
$durationMinutes = (int) env('RESERVATION_DURATION_MINUTES', 90);
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم