<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; use Laratrust\Traits\LaratrustUserTrait; use App\Book; use App\BorrowLog; use App\Exceptions\BookException; use Illuminate\Support\Facades\Mail; class User extends Authenticatable { use LaratrustUserTrait; use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ public function borrow(Book $book) { if ($book->stock < 1) { throw new BookException("Makanan $book->title sedang tidak tersedia."); } if($this->borrowLogs()->where('book_id',$book->id)->where('is_returned', 0)->count() > 0 ) { throw new BookException("Makanan $book->title sedang Anda pesan."); } $borrowLog = BorrowLog::create(['user_id'=>$this->id, 'book_id'=>$book->id]); return $borrowLog; } public function borrowLogs() { return $this->hasMany('App\BorrowLog'); } }