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