| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  | <?php namespace FireflyIII\Models; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-09 16:09:26 +01:00
										 |  |  | use Auth; | 
					
						
							| 
									
										
										
										
											2015-04-07 18:26:14 +02:00
										 |  |  | use Crypt; | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  | use Illuminate\Database\Eloquent\Model; | 
					
						
							|  |  |  | use Illuminate\Database\Eloquent\SoftDeletes; | 
					
						
							| 
									
										
										
										
											2016-01-09 16:09:26 +01:00
										 |  |  | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | 
					
						
							| 
									
										
										
										
											2015-05-03 12:58:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2016-01-01 21:49:27 +01:00
										 |  |  |  * FireflyIII\Models\Category | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2016-01-28 22:06:16 +01:00
										 |  |  |  * @property integer                                                            $id | 
					
						
							|  |  |  |  * @property \Carbon\Carbon                                                     $created_at | 
					
						
							|  |  |  |  * @property \Carbon\Carbon                                                     $updated_at | 
					
						
							|  |  |  |  * @property \Carbon\Carbon                                                     $deleted_at | 
					
						
							|  |  |  |  * @property string                                                             $name | 
					
						
							|  |  |  |  * @property integer                                                            $user_id | 
					
						
							|  |  |  |  * @property boolean                                                            $encrypted | 
					
						
							|  |  |  |  * @property-read \Illuminate\Database\Eloquent\Collection|TransactionJournal[] $transactionjournals | 
					
						
							|  |  |  |  * @property-read \FireflyIII\User                                              $user | 
					
						
							|  |  |  |  * @property string                                                             $dateFormatted | 
					
						
							|  |  |  |  * @property float                                                              $spent | 
					
						
							|  |  |  |  * @property \Carbon\Carbon                                                     $lastActivity | 
					
						
							|  |  |  |  * @property string                                                             $type | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | class Category extends Model | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     use SoftDeletes; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-27 18:31:44 +01:00
										 |  |  |     protected $dates    = ['created_at', 'updated_at', 'deleted_at']; | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  |     protected $fillable = ['user_id', 'name']; | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |     protected $hidden   = ['encrypted']; | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-09 17:46:47 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param array $fields | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-05-26 20:28:18 +02:00
										 |  |  |      * @return Category | 
					
						
							| 
									
										
										
										
											2015-04-09 17:46:47 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public static function firstOrCreateEncrypted(array $fields) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // everything but the name:
 | 
					
						
							| 
									
										
										
										
											2015-07-07 09:46:19 +02:00
										 |  |  |         $query  = Category::orderBy('id'); | 
					
						
							|  |  |  |         $search = $fields; | 
					
						
							|  |  |  |         unset($search['name']); | 
					
						
							|  |  |  |         foreach ($search as $name => $value) { | 
					
						
							|  |  |  |             $query->where($name, $value); | 
					
						
							| 
									
										
										
										
											2015-04-09 17:46:47 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |         $set = $query->get(['categories.*']); | 
					
						
							|  |  |  |         /** @var Category $category */ | 
					
						
							|  |  |  |         foreach ($set as $category) { | 
					
						
							|  |  |  |             if ($category->name == $fields['name']) { | 
					
						
							|  |  |  |                 return $category; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         // create it!
 | 
					
						
							|  |  |  |         $category = Category::create($fields); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $category; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-27 18:31:44 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param Category $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Category | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function routeBinder(Category $value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (Auth::check()) { | 
					
						
							|  |  |  |             if ($value->user_id == Auth::user()->id) { | 
					
						
							|  |  |  |                 return $value; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         throw new NotFoundHttpException; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-05-10 13:40:29 +02:00
										 |  |  |      * @codeCoverageIgnore | 
					
						
							| 
									
										
										
										
											2015-05-14 09:51:54 +02:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |      * @param $value | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |     public function getNameAttribute($value) | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (intval($this->encrypted) == 1) { | 
					
						
							|  |  |  |             return Crypt::decrypt($value); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $value; | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-04-07 18:26:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-05-10 13:40:29 +02:00
										 |  |  |      * @codeCoverageIgnore | 
					
						
							| 
									
										
										
										
											2015-05-14 09:51:54 +02:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |      * @param $value | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |     public function setNameAttribute($value) | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |         $this->attributes['name']      = Crypt::encrypt($value); | 
					
						
							|  |  |  |         $this->attributes['encrypted'] = true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @codeCoverageIgnore | 
					
						
							|  |  |  |      * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function transactionjournals() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->belongsToMany('FireflyIII\Models\TransactionJournal', 'category_transaction_journal', 'category_id'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 17:11:16 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @codeCoverageIgnore | 
					
						
							|  |  |  |      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function user() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->belongsTo('FireflyIII\User'); | 
					
						
							| 
									
										
										
										
											2015-03-30 20:08:27 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-27 16:48:33 +01:00
										 |  |  | } |