Passed
Push — master ( 357883...9912b7 )
by Adam
06:28
created

Room::guests()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Illuminate\Database\Query\Builder;
7
8
/**
9
 * App\Models\Room.
10
 *
11
 * @property int $id
12
 * @property string $number
13
 * @property int $floor
14
 * @property int $capacity
15
 * @property float $price
16
 * @property string|null $comment
17
 * @property \Carbon\Carbon $created_at
18
 * @property \Carbon\Carbon $updated_at
19
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Guest[] $guests
20
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Reservation[] $reservations
21
 *
22
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room freeRoomsForReservation($dateStart, $dateEnd, $people)
23
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereCapacity($value)
24
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereComment($value)
25
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereCreatedAt($value)
26
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereFloor($value)
27
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereId($value)
28
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereNumber($value)
29
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room wherePrice($value)
30
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Room whereUpdatedAt($value)
31
 * @mixin \Eloquent
32
 */
33
class Room extends Model
34
{
35
    protected $fillable = [
36
        'number', 'floor', 'capacity', 'price', 'comment',
37
    ];
38
39
    /**
40
     * @param \Illuminate\Database\Eloquent\Builder $query
41
     *
42
     * @return \Illuminate\Database\Eloquent\Builder
43
     */
44
    public function scopeFreeRoomsForReservation($query, $dateStart, $dateEnd, $people)
45
    {
46
        return $query->whereNotIn('id', function (Builder $query) use ($dateStart, $dateEnd) {
47
            $query->select('room_id')->from('reservations')
48
                ->where('date_start', '<', $dateEnd)
49
                ->where('date_end', '>', $dateStart);
50
        })
51
            ->where('capacity', '>=', $people)
52
            ->orderBy('capacity');
53
    }
54
55
    public function reservations()
56
    {
57
        return $this->hasMany('App\Models\Reservation');
58
    }
59
60
    public function guests()
61
    {
62
        return $this->belongsToMany('App\Models\Guest', 'reservations');
63
    }
64
}
65