Passed
Push — master ( 8ddcd9...36ef43 )
by Adam
04:44
created

Room::setPriceAttribute()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
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 8
    public function setPriceAttribute($value)
40
    {
41 8
        $this->attributes['price'] = round($value, 2);
42 8
    }
43
44
    /**
45
     * @param \Illuminate\Database\Eloquent\Builder $query
46
     *
47
     * @return \Illuminate\Database\Eloquent\Builder
48
     */
49
    public function scopeFreeRoomsForReservation($query, $dateStart, $dateEnd, $people)
50
    {
51
        return $query->whereNotIn('id', function (Builder $query) use ($dateStart, $dateEnd) {
52
            $query->select('room_id')->from('reservations')
53
                ->where('date_start', '<', $dateEnd)
54
                ->where('date_end', '>', $dateStart);
55
        })
56
            ->where('capacity', '>=', $people)
57
            ->orderBy('capacity');
58
    }
59
60 2
    public function reservations()
61
    {
62 2
        return $this->hasMany('App\Models\Reservation');
63
    }
64
65
    public function guests()
66
    {
67
        return $this->belongsToMany('App\Models\Guest', 'reservations');
68
    }
69
}
70