أُنشئ من Tokal/Test
Support owner_user_id schema for venues and vendor queries
فشلت بعض الفحوصات
Deploy Backend / deploy (push) Has been cancelled
فشلت بعض الفحوصات
Deploy Backend / deploy (push) Has been cancelled
هذا الالتزام موجود في:
@@ -30,7 +30,7 @@ class ReservationController extends Controller
|
||||
|
||||
$query = Reservation::query()
|
||||
->whereHas('venue', function ($q) use ($request) {
|
||||
$q->where('vendor_id', $request->user()->id);
|
||||
$q->where(Venue::ownerColumn(), $request->user()->id);
|
||||
})
|
||||
->with([
|
||||
'venue:id,name,type,address_text',
|
||||
@@ -86,7 +86,7 @@ class ReservationController extends Controller
|
||||
$reservation = Reservation::query()
|
||||
->where('id', $id)
|
||||
->whereHas('venue', function ($q) use ($request) {
|
||||
$q->where('vendor_id', $request->user()->id);
|
||||
$q->where(Venue::ownerColumn(), $request->user()->id);
|
||||
})
|
||||
->lockForUpdate()
|
||||
->first();
|
||||
@@ -225,7 +225,7 @@ class ReservationController extends Controller
|
||||
{
|
||||
return Reservation::query()
|
||||
->whereHas('venue', function ($q) use ($request) {
|
||||
$q->where('vendor_id', $request->user()->id);
|
||||
$q->where(Venue::ownerColumn(), $request->user()->id);
|
||||
})
|
||||
->find($id);
|
||||
}
|
||||
|
||||
@@ -90,6 +90,7 @@ class VenueController extends Controller
|
||||
public function store(Request $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
$ownerColumn = Venue::ownerColumn();
|
||||
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
@@ -111,7 +112,7 @@ class VenueController extends Controller
|
||||
]);
|
||||
|
||||
$venue = Venue::create([
|
||||
'vendor_id' => $user->id,
|
||||
$ownerColumn => $user->id,
|
||||
'name' => $validated['name'],
|
||||
'type' => $validated['type'],
|
||||
'description' => $validated['description'] ?? null,
|
||||
@@ -134,6 +135,7 @@ class VenueController extends Controller
|
||||
// LIST VENUES (admin)
|
||||
public function adminIndex(Request $request)
|
||||
{
|
||||
$ownerColumn = Venue::ownerColumn();
|
||||
$validated = $request->validate([
|
||||
'search' => 'nullable|string|max:255',
|
||||
'per_page' => 'nullable|integer|min:1|max:100',
|
||||
@@ -142,7 +144,7 @@ class VenueController extends Controller
|
||||
$query = Venue::query()
|
||||
->select([
|
||||
'id',
|
||||
'vendor_id',
|
||||
DB::raw($ownerColumn . ' as vendor_id'),
|
||||
'name',
|
||||
'type',
|
||||
'description',
|
||||
@@ -240,11 +242,12 @@ class VenueController extends Controller
|
||||
|
||||
$venue = null;
|
||||
DB::transaction(function () use ($validated, $vendorId, &$venue, $request) {
|
||||
$ownerColumn = Venue::ownerColumn();
|
||||
$imageUrls = $validated['image_urls'] ?? [];
|
||||
$imageUrls = $this->appendUploadedImages($request, $imageUrls);
|
||||
|
||||
$venue = Venue::create([
|
||||
'vendor_id' => $vendorId,
|
||||
$ownerColumn => $vendorId,
|
||||
'name' => $validated['name'],
|
||||
'type' => $validated['type'],
|
||||
'description' => $validated['description'] ?? null,
|
||||
|
||||
@@ -66,7 +66,7 @@ class User extends Authenticatable
|
||||
|
||||
public function venues()
|
||||
{
|
||||
return $this->hasMany(Venue::class, 'vendor_id');
|
||||
return $this->hasMany(Venue::class, Venue::ownerColumn());
|
||||
}
|
||||
|
||||
public function reservations()
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use App\Models\Reservation;
|
||||
use App\Models\SeatingArea;
|
||||
use App\Models\VenueTable;
|
||||
@@ -11,9 +12,11 @@ use App\Models\VenueTable;
|
||||
class Venue extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
protected static ?string $resolvedOwnerColumn = null;
|
||||
|
||||
protected $fillable = [
|
||||
'vendor_id',
|
||||
'owner_user_id',
|
||||
'name',
|
||||
'type',
|
||||
'description',
|
||||
@@ -34,9 +37,33 @@ class Venue extends Model
|
||||
'offers' => 'array',
|
||||
];
|
||||
|
||||
public static function ownerColumn(): string
|
||||
{
|
||||
if (self::$resolvedOwnerColumn !== null) {
|
||||
return self::$resolvedOwnerColumn;
|
||||
}
|
||||
|
||||
self::$resolvedOwnerColumn = Schema::hasColumn('venues', 'vendor_id')
|
||||
? 'vendor_id'
|
||||
: 'owner_user_id';
|
||||
|
||||
return self::$resolvedOwnerColumn;
|
||||
}
|
||||
|
||||
public function setVendorIdAttribute($value): void
|
||||
{
|
||||
$this->attributes[self::ownerColumn()] = $value;
|
||||
}
|
||||
|
||||
public function getVendorIdAttribute()
|
||||
{
|
||||
$column = self::ownerColumn();
|
||||
return $this->attributes[$column] ?? null;
|
||||
}
|
||||
|
||||
public function vendor()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'vendor_id');
|
||||
return $this->belongsTo(User::class, self::ownerColumn());
|
||||
}
|
||||
|
||||
public function reservations()
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم