diff --git a/app/Api/V1/Controllers/AboutController.php b/app/Api/V1/Controllers/AboutController.php index ed4ec478aa..b8a0a5cb6b 100644 --- a/app/Api/V1/Controllers/AboutController.php +++ b/app/Api/V1/Controllers/AboutController.php @@ -51,6 +51,8 @@ class AboutController extends Controller $phpVersion = str_replace($search, $replace, PHP_VERSION); $phpOs = str_replace($search, $replace, PHP_OS); $currentDriver = DB::getDriverName(); + + $data = [ 'version' => config('firefly.version'), diff --git a/app/Http/Controllers/Transaction/ShowController.php b/app/Http/Controllers/Transaction/ShowController.php new file mode 100644 index 0000000000..b1646f55c1 --- /dev/null +++ b/app/Http/Controllers/Transaction/ShowController.php @@ -0,0 +1,79 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Http\Controllers\Transaction; + + +use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Models\TransactionGroup; +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; + +/** + * Class ShowController + */ +class ShowController extends Controller +{ + /** @var TransactionGroupRepositoryInterface */ + private $groupRepository; + + /** + * SingleController constructor. + */ + public function __construct() + { + parent::__construct(); + // some useful repositories: + $this->middleware( + function ($request, $next) { + $this->groupRepository = app(TransactionGroupRepositoryInterface::class); + + app('view')->share('title', (string)trans('firefly.transactions')); + app('view')->share('mainTitleIcon', 'fa-repeat'); + + return $next($request); + } + ); + } + + /** + * @param TransactionGroup $transactionGroup + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function show(TransactionGroup $transactionGroup) + { + /** @var TransactionJournal $first */ + $first = $transactionGroup->transactionJournals->first(); + $groupType = $first->transactionType->type; + $description = $transactionGroup->title; + if ($transactionGroup->transactionJournals()->count() > 1) { + $description = $first->description; + } + + $subTitle = sprintf('%s: "%s"', $groupType, $description); + + return view('transactions.show', compact('transactionGroup', 'subTitle')); + } + +} \ No newline at end of file diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 93acd8b507..3dc91f61c7 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Models; use Carbon\Carbon; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\User; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; @@ -169,9 +170,11 @@ class TransactionJournal extends Model * * @return TransactionJournal * @throws NotFoundHttpException + * @throws FireflyException */ public static function routeBinder(string $value): TransactionJournal { + throw new FireflyException('Journal binder is permanently out of order.'); if (auth()->check()) { $journalId = (int)$value; /** @var User $user */ diff --git a/database/migrations/2017_06_02_105232_changes_for_v450.php b/database/migrations/2017_06_02_105232_changes_for_v450.php index 39c3ec1c9b..ea9224f416 100644 --- a/database/migrations/2017_06_02_105232_changes_for_v450.php +++ b/database/migrations/2017_06_02_105232_changes_for_v450.php @@ -33,15 +33,28 @@ class ChangesForV450 extends Migration */ public function down(): void { + // split up for sqlite compatibility Schema::table( 'transactions', - function (Blueprint $table) { + static function (Blueprint $table) { $table->dropColumn('foreign_amount'); + } + ); + + Schema::table( + 'transactions', + static function (Blueprint $table) { // cannot drop foreign keys in SQLite: if ('sqlite' !== config('database.default')) { $table->dropForeign('transactions_foreign_currency_id_foreign'); } + } + ); + + Schema::table( + 'transactions', + static function (Blueprint $table) { $table->dropColumn('foreign_currency_id'); } ); diff --git a/database/migrations/2018_04_29_174524_changes_for_v474.php b/database/migrations/2018_04_29_174524_changes_for_v474.php index dfa7e722ac..d9c2598cd7 100644 --- a/database/migrations/2018_04_29_174524_changes_for_v474.php +++ b/database/migrations/2018_04_29_174524_changes_for_v474.php @@ -37,19 +37,53 @@ class ChangesForV474 extends Migration */ public function down(): void { + // split up for sqlite compatibility. Schema::table( 'import_jobs', - function (Blueprint $table) { + static function (Blueprint $table) { // cannot drop foreign keys in SQLite: if ('sqlite' !== config('database.default')) { $table->dropForeign('import_jobs_tag_id_foreign'); } + } + ); + Schema::table( + 'import_jobs', + static function (Blueprint $table) { $table->dropColumn('provider'); + + } + ); + + Schema::table( + 'import_jobs', + static function (Blueprint $table) { $table->dropColumn('stage'); + + } + ); + + Schema::table( + 'import_jobs', + static function (Blueprint $table) { $table->dropColumn('transactions'); + + } + ); + + Schema::table( + 'import_jobs', + static function (Blueprint $table) { $table->dropColumn('errors'); + + } + ); + + Schema::table( + 'import_jobs', + static function (Blueprint $table) { $table->dropColumn('tag_id'); } @@ -65,7 +99,7 @@ class ChangesForV474 extends Migration { Schema::table( 'import_jobs', - function (Blueprint $table) { + static function (Blueprint $table) { $table->string('provider', 50)->after('file_type')->default(''); $table->string('stage', 50)->after('status')->default(''); $table->longText('transactions')->after('extended_status')->nullable(); diff --git a/resources/views/v1/transactions/show.twig b/resources/views/v1/transactions/show.twig index dcf934aa4e..43561912c9 100644 --- a/resources/views/v1/transactions/show.twig +++ b/resources/views/v1/transactions/show.twig @@ -1,7 +1,7 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.render(Route.getCurrentRoute.getName, journal) }} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, transactionGroup) }} {% endblock %} {% block content %} @@ -15,8 +15,8 @@