cineflex/app/Models/Showing.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);
}
}