74 lines
1.6 KiB
PHP
74 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Carbon\Carbon;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
/**
|
|
* Movie Theater Showings
|
|
*/
|
|
|
|
class Showing extends Model
|
|
{
|
|
|
|
protected $table = 'showings';
|
|
protected $primaryKey = 'showing_id';
|
|
protected $fillable = [
|
|
'movie_id',
|
|
'showing_start',
|
|
'room_id', // which room is showing the movie?
|
|
'user_id', // who added the showing?
|
|
];
|
|
|
|
protected $hidden = [
|
|
'created_at',
|
|
'updated_at',
|
|
];
|
|
|
|
public static function findOrfail($id)
|
|
{
|
|
return Showing::where('showing_id', $id)->firstOrFail();
|
|
}
|
|
|
|
public function room()
|
|
{
|
|
return $this->belongsTo(Room::class, 'room_id', 'room_id');
|
|
}
|
|
|
|
public function movie()
|
|
{
|
|
return $this->belongsTo(Movie::class, 'movie_id', 'movie_id');
|
|
}
|
|
|
|
public function nowPlaying()
|
|
{
|
|
return $this->where('showing_start', '>=', now())->get();
|
|
}
|
|
|
|
public function end_time() {
|
|
$date = new Carbon($this->showing_start);
|
|
$date->addMinutes($this->movie->movie_length);
|
|
return $date;
|
|
}
|
|
|
|
public function tickets()
|
|
{
|
|
return $this->hasMany(Ticket::class, 'showing_id', 'showing_id');
|
|
}
|
|
|
|
public function tickets_available() {
|
|
$tickets = $this->room->seats()->count();
|
|
$tickets_sold = $this->tickets()->count();
|
|
return $tickets - $tickets_sold;
|
|
}
|
|
|
|
public function find($id)
|
|
{
|
|
return Showing::where('showing_id', $id)->first();
|
|
}
|
|
|
|
public function seatMatrix() {
|
|
return $this->room->seatMatrix($this->showing_id);
|
|
}
|
|
}
|