| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | <?php namespace Oxbow\Repos; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Oxbow\Book; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BookRepo | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     protected $book; | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     protected $pageRepo; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * BookRepo constructor. | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |      * @param Book $book | 
					
						
							|  |  |  |      * @param PageRepo $pageRepo | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     public function __construct(Book $book, PageRepo $pageRepo) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->book = $book; | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         $this->pageRepo = $pageRepo; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function getById($id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->book->findOrFail($id); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function getAll() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->book->all(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function getBySlug($slug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->book->where('slug', '=', $slug)->first(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function newFromInput($input) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->book->fill($input); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function countBySlug($slug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->book->where('slug', '=', $slug)->count(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function destroyById($id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->getById($id); | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         foreach($book->pages as $page) { | 
					
						
							|  |  |  |             $this->pageRepo->destroyById($page->id); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |         $book->delete(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |