| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * AvailableBudgetRepositoryInterface.php | 
					
						
							| 
									
										
										
										
											2020-02-16 14:00:57 +01:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Repositories\Budget; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 08:00:52 +02:00
										 |  |  | use Carbon\Carbon; | 
					
						
							| 
									
										
										
										
											2019-08-30 07:45:48 +02:00
										 |  |  | use FireflyIII\Models\AvailableBudget; | 
					
						
							| 
									
										
										
										
											2019-08-30 08:00:52 +02:00
										 |  |  | use FireflyIII\Models\TransactionCurrency; | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  | use FireflyIII\User; | 
					
						
							| 
									
										
										
										
											2023-02-19 08:43:28 +01:00
										 |  |  | use Illuminate\Contracts\Auth\Authenticatable; | 
					
						
							| 
									
										
										
										
											2019-08-30 08:02:11 +02:00
										 |  |  | use Illuminate\Support\Collection; | 
					
						
							| 
									
										
										
										
											2019-08-29 21:33:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Interface AvailableBudgetRepositoryInterface | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | interface AvailableBudgetRepositoryInterface | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2023-08-15 17:57:02 +02:00
										 |  |  |     public function cleanup(): void; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-27 21:35:21 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Delete all available budgets. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function destroyAll(): void; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 07:45:48 +02:00
										 |  |  |     public function destroyAvailableBudget(AvailableBudget $availableBudget): void; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |      * Find existing AB. | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |     public function find(TransactionCurrency $currency, Carbon $start, Carbon $end): ?AvailableBudget; | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-20 10:05:18 +02:00
										 |  |  |     public function findById(int $id): ?AvailableBudget; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |      * Return a list of all available budgets (in all currencies) (for the selected period). | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |     public function get(?Carbon $start = null, ?Carbon $end = null): Collection; | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |      * @deprecated | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |     public function getAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end): string; | 
					
						
							| 
									
										
										
										
											2019-08-31 09:35:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 08:00:52 +02:00
										 |  |  |     public function getAvailableBudgetWithCurrency(Carbon $start, Carbon $end): array; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 08:02:11 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Returns all available budget objects. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getAvailableBudgetsByCurrency(TransactionCurrency $currency): Collection; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 08:03:13 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Returns all available budget objects. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getAvailableBudgetsByDate(?Carbon $start, ?Carbon $end): Collection; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 18:37:47 +02:00
										 |  |  |     public function getAvailableBudgetsByExactDate(Carbon $start, Carbon $end): Collection; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get by transaction currency and date. Should always result in one entry or NULL. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getByCurrencyDate(Carbon $start, Carbon $end, TransactionCurrency $currency): ?AvailableBudget; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 09:19:29 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |      * @deprecated | 
					
						
							| 
									
										
										
										
											2019-08-30 09:19:29 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |     public function setUser(null|Authenticatable|User $user): void; | 
					
						
							| 
									
										
										
										
											2019-08-30 08:00:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-04 17:39:39 +02:00
										 |  |  |     public function store(array $data): ?AvailableBudget; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function update(AvailableBudget $availableBudget, array $data): AvailableBudget; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 09:19:29 +02:00
										 |  |  |     public function updateAvailableBudget(AvailableBudget $availableBudget, array $data): AvailableBudget; | 
					
						
							| 
									
										
										
										
											2020-05-30 07:33:06 +02:00
										 |  |  | } |