migrations and models

This commit is contained in:
2026-01-07 22:52:33 +00:00
parent 8d681da7a1
commit 62100c42b0
29 changed files with 2250 additions and 638 deletions

24
app/Models/Admin.php Normal file
View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
class Admin extends Authenticatable
{
use HasApiTokens;
protected $guard = 'admin'; // Указываем guard для админов
protected $fillable = [
'name',
'email',
'password',
];
protected $hidden = [
'password',
'remember_token',
];
}

33
app/Models/Booking.php Normal file
View File

@@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Booking extends Model
{
use HasFactory;
protected $fillable = [
'room_type_id',
'check_in',
'check_out',
'guest_name',
'guest_email',
'guest_phone',
'status',
'confirmed_at',
];
protected $casts = [
'check_in' => 'date',
'check_out' => 'date',
'confirmed_at' => 'datetime',
];
public function roomType()
{
return $this->belongsTo(RoomType::class);
}
}

26
app/Models/Hotel.php Normal file
View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Hotel extends Model
{
use HasFactory;
protected $fillable = [
'name',
'address',
];
public function roomTypes()
{
return $this->hasMany(RoomType::class);
}
//public function bookings()
//{
// return $this->hasMany(Booking::class);
//}
}

25
app/Models/Invoice.php Normal file
View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Invoice extends Model
{
use HasFactory;
protected $fillable = [
'booking_id',
'total_amount',
'status',
'issued_at',
'due_date',
'pdf_path',
];
public function booking()
{
return $this->belongsTo(\App\Models\Booking::class);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RoomAvailability extends Model
{
use HasFactory;
protected $fillable = [
'room_type_id',
'date',
'is_available',
'price_override',
];
protected $casts = [
'date' => 'date',
'is_available' => 'boolean',
'price_override' => 'decimal:2',
];
public function roomType()
{
return $this->belongsTo(RoomType::class);
}
}

33
app/Models/RoomType.php Normal file
View File

@@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RoomType extends Model
{
use HasFactory;
protected $fillable = [
'hotel_id',
'name',
'capacity',
'base_price',
];
public function hotel()
{
return $this->belongsTo(Hotel::class);
}
public function bookings()
{
return $this->hasMany(Booking::class);
}
public function availabilities()
{
return $this->hasMany(RoomAvailability::class);
}
}

View File

@@ -2,7 +2,7 @@
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
@@ -10,13 +10,12 @@ use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var list<string>
* @var array<int, string>
*/
protected $fillable = [
'name',
@@ -27,7 +26,7 @@ class User extends Authenticatable
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
* @var array<int, string>
*/
protected $hidden = [
'password',
@@ -35,15 +34,19 @@ class User extends Authenticatable
];
/**
* Get the attributes that should be cast.
* The attributes that should be cast.
*
* @return array<string, string>
* @var array<string, string>
*/
protected function casts(): array
protected $casts = [
'email_verified_at' => 'datetime',
];
/**
* Проверяет, является ли пользователь админом.
*/
public function isAdmin(): bool
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
return $this->is_admin;
}
}