diff --git a/app/Http/Controllers/Admin/CategoryCrudController.php b/app/Http/Controllers/Admin/CategoryCrudController.php index 0ed3ed3..9bc3662 100644 --- a/app/Http/Controllers/Admin/CategoryCrudController.php +++ b/app/Http/Controllers/Admin/CategoryCrudController.php @@ -40,6 +40,7 @@ class CategoryCrudController extends CrudController */ protected function setupListOperation() { + CRUD::column('id'); CRUD::column('title'); /** diff --git a/app/Http/Controllers/Admin/SelectedTradingCrudController.php b/app/Http/Controllers/Admin/SelectedTradingCrudController.php new file mode 100644 index 0000000..1826f76 --- /dev/null +++ b/app/Http/Controllers/Admin/SelectedTradingCrudController.php @@ -0,0 +1,82 @@ +type('number'); + * - CRUD::addColumn(['name' => 'price', 'type' => 'number']); + */ + } + + /** + * Define what happens when the Create operation is loaded. + * + * @see https://backpackforlaravel.com/docs/crud-operation-create + * @return void + */ + protected function setupCreateOperation() + { + CRUD::setValidation(SelectedTradingRequest::class); + + CRUD::field('category_id'); + CRUD::field('title'); + + /** + * Fields can be defined using the fluent syntax or array syntax: + * - CRUD::field('price')->type('number'); + * - CRUD::addField(['name' => 'price', 'type' => 'number'])); + */ + } + + /** + * Define what happens when the Update operation is loaded. + * + * @see https://backpackforlaravel.com/docs/crud-operation-update + * @return void + */ + protected function setupUpdateOperation() + { + $this->setupCreateOperation(); + } +} diff --git a/app/Http/Controllers/Admin/TradingCrudController.php b/app/Http/Controllers/Admin/TradingCrudController.php index 9c7a7db..9378270 100644 --- a/app/Http/Controllers/Admin/TradingCrudController.php +++ b/app/Http/Controllers/Admin/TradingCrudController.php @@ -42,7 +42,6 @@ class TradingCrudController extends CrudController CRUD::column('group_id'); CRUD::column('subgroup_id'); CRUD::column('category_id'); - // CRUD::column('type'); CRUD::column('title'); CRUD::column('price'); CRUD::column('unit'); diff --git a/app/Http/Controllers/Api/ApiBaseController.php b/app/Http/Controllers/Api/ApiBaseController.php index 668e338..b9eebbe 100644 --- a/app/Http/Controllers/Api/ApiBaseController.php +++ b/app/Http/Controllers/Api/ApiBaseController.php @@ -3,8 +3,6 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; class ApiBaseController extends Controller { diff --git a/app/Http/Controllers/Api/TradingsController.php b/app/Http/Controllers/Api/TradingsController.php index 26d3fdd..b491ece 100644 --- a/app/Http/Controllers/Api/TradingsController.php +++ b/app/Http/Controllers/Api/TradingsController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api; +use App\Models\Category; use App\Models\Group; use App\Models\Trading; use App\Transformers\TradingTransformer; @@ -9,9 +10,9 @@ use Illuminate\Http\Request; class TradingsController extends ApiController { - public function index(Request $request) + public function index() { - $last_tradings = Group::where("type", "trading")->with("tradings")->latest()->first()->tradings; + $last_tradings = Group::where("type", "trading")->with("tradings")->latest()->first()->tradings; foreach($last_tradings as $trading){ $trading->title = trim(strtok($trading->title, '('));; } @@ -27,15 +28,10 @@ class TradingsController extends ApiController array_push($tradings, (object)[ 'id' => $trading->id, 'title' => $title, - 'unit' => $trading->unit, 'price' => $trading->price, 'old_price' => !$before_last_trading ? 0 : $before_last_trading->price, 'price_change' => number_format($difference, 1, ".", "")."%", - 'amount' => $trading->amount, 'currency' => $trading->currency, - 'seller_country' => $trading->seller_country, - 'buyer_country' => $trading->buyer_country, - 'point' => $trading->point, ]); } @@ -44,11 +40,51 @@ class TradingsController extends ApiController return $this->respondWithCollection($tradings, new TradingTransformer); } + public function selectedTradings(Request $request){ + $id = $request->category; + + if($id){ + $category = Category::with('selectedTradings')->find($id); + if($category){ + $selectedTradings = $category->selectedTradings; + $myTradings = array(); + foreach ($selectedTradings as $item) { + $tradings = Trading::where("title", 'LIKE', "%{$item->title}%")->orderBy('created_at', 'DESC')->get(); + $tradings = $tradings->unique('group_id')->slice(0, 10)->values(); + + $prices = array(); + foreach ($tradings as $trading) { + array_push($prices, (object)[ + 'price' => $trading->price, + 'date' => $trading->created_at->todatetimestring(), + ]); + } + + $last_trading = $tradings[0]; + $before_last_trading = count($tradings) > 1 ? $tradings[1] : null; + $difference = !$before_last_trading ? 0 : $this->getPercentageDifference($last_trading->price ?? 0, $before_last_trading->price ?? 0); + + array_push($myTradings, (object)[ + 'id' => $last_trading->id, + 'title' => trim(strtok($last_trading->title, '(')), + 'price' => $last_trading->price, + 'old_price' => !$before_last_trading ? 0 : $before_last_trading->price, + 'price_change' => !$before_last_trading ? '100%' : number_format($difference, 1, ".", "")."%", + 'currency' => $last_trading->currency, + 'all_prices' => $prices + ]); + } + + $tradings = Trading::hydrate($myTradings); + return $this->respondWithCollection($tradings, new TradingTransformer('selected')); + } + return $this->errorNotFound(); + } + return $this->errorWrongArgs(); + + + } function getPercentageDifference($new, $old){ - // return (($new - $old) / $old) * 100; - // return (abs(($old - $new)) / ($old + $new) /2); - // return (abs($old - $new) / (($old + $new)/ 2)) * 100; - // return (abs($old - $new) / (($old + $new)/ 2)) * 100; return (($new - $old) / abs($old)) * 100; } } diff --git a/app/Http/Requests/SelectedTradingRequest.php b/app/Http/Requests/SelectedTradingRequest.php new file mode 100644 index 0000000..a5266c5 --- /dev/null +++ b/app/Http/Requests/SelectedTradingRequest.php @@ -0,0 +1,55 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // 'name' => 'required|min:5|max:255' + ]; + } + + /** + * Get the validation attributes that apply to the request. + * + * @return array + */ + public function attributes() + { + return [ + // + ]; + } + + /** + * Get the validation messages that apply to the request. + * + * @return array + */ + public function messages() + { + return [ + // + ]; + } +} diff --git a/app/Http/Requests/StoreSelectedTradingRequest.php b/app/Http/Requests/StoreSelectedTradingRequest.php new file mode 100644 index 0000000..e7de72b --- /dev/null +++ b/app/Http/Requests/StoreSelectedTradingRequest.php @@ -0,0 +1,30 @@ +hasMany(Trading::class); } + + public function selectedTradings() + { + return $this->hasMany(SelectedTrading::class); + } } diff --git a/app/Models/SelectedTrading.php b/app/Models/SelectedTrading.php new file mode 100644 index 0000000..8f00f2b --- /dev/null +++ b/app/Models/SelectedTrading.php @@ -0,0 +1,19 @@ +belongsTo(Category::class); + } +} diff --git a/app/Policies/SelectedTradingPolicy.php b/app/Policies/SelectedTradingPolicy.php new file mode 100644 index 0000000..f9c6822 --- /dev/null +++ b/app/Policies/SelectedTradingPolicy.php @@ -0,0 +1,94 @@ +type = $type; + } + public function transform(Trading $trading) { - return [ + return $this->type == 'selected' ? [ + 'id' => $trading->id, + 'title' => $trading->title, + 'price' => $trading->price, + 'old_price' => $trading->old_price, + 'price_change' => $trading->price_change, + 'currency' => $trading->currency, + 'all_prices' => $trading->all_prices, + ] : [ 'id' => $trading->id, 'title' => $trading->title, - 'unit' => $trading->unit, 'price' => $trading->price, 'old_price' => $trading->old_price, 'price_change' => $trading->price_change, - 'amount' => $trading->amount, 'currency' => $trading->currency, - 'seller_country' => $trading->seller_country, - 'buyer_country' => $trading->buyer_country, - 'point' => $trading->point, ]; } } \ No newline at end of file diff --git a/bootstrap/cache/packages.php b/bootstrap/cache/packages.php index 50de3ac..766191b 100644 --- a/bootstrap/cache/packages.php +++ b/bootstrap/cache/packages.php @@ -29,6 +29,17 @@ 'Gravatar' => 'Creativeorange\\Gravatar\\Facades\\Gravatar', ), ), + 'digitallyhappy/assets' => + array ( + 'providers' => + array ( + 0 => 'DigitallyHappy\\Assets\\AssetsServiceProvider', + ), + 'aliases' => + array ( + 'Assets' => 'DigitallyHappy\\Assets\\Facades\\Assets', + ), + ), 'facade/ignition' => array ( 'providers' => diff --git a/bootstrap/cache/services.php b/bootstrap/cache/services.php index 45284e4..7e98feb 100644 --- a/bootstrap/cache/services.php +++ b/bootstrap/cache/services.php @@ -26,32 +26,33 @@ 22 => 'Backpack\\CRUD\\BackpackServiceProvider', 23 => 'Backpack\\Generators\\GeneratorsServiceProvider', 24 => 'Creativeorange\\Gravatar\\GravatarServiceProvider', - 25 => 'Facade\\Ignition\\IgnitionServiceProvider', - 26 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', - 27 => 'Fruitcake\\Cors\\CorsServiceProvider', - 28 => 'Inertia\\ServiceProvider', - 29 => 'Intervention\\Image\\ImageServiceProvider', - 30 => 'Jenssegers\\Agent\\AgentServiceProvider', - 31 => 'Laravel\\Fortify\\FortifyServiceProvider', - 32 => 'Laravel\\Jetstream\\JetstreamServiceProvider', - 33 => 'Laravel\\Sail\\SailServiceProvider', - 34 => 'Laravel\\Sanctum\\SanctumServiceProvider', - 35 => 'Laravel\\Scout\\ScoutServiceProvider', - 36 => 'Laravel\\Tinker\\TinkerServiceProvider', - 37 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - 38 => 'Carbon\\Laravel\\ServiceProvider', - 39 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', - 40 => 'Prologue\\Alerts\\AlertsServiceProvider', - 41 => 'Spatie\\Translatable\\TranslatableServiceProvider', - 42 => 'Tightenco\\Ziggy\\ZiggyServiceProvider', - 43 => 'TimeHunter\\LaravelGoogleReCaptchaV3\\Providers\\GoogleReCaptchaV3ServiceProvider', - 44 => 'Vinkla\\Hashids\\HashidsServiceProvider', - 45 => 'App\\Providers\\AppServiceProvider', - 46 => 'App\\Providers\\AuthServiceProvider', - 47 => 'App\\Providers\\EventServiceProvider', - 48 => 'App\\Providers\\RouteServiceProvider', - 49 => 'App\\Providers\\FortifyServiceProvider', - 50 => 'App\\Providers\\JetstreamServiceProvider', + 25 => 'DigitallyHappy\\Assets\\AssetsServiceProvider', + 26 => 'Facade\\Ignition\\IgnitionServiceProvider', + 27 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', + 28 => 'Fruitcake\\Cors\\CorsServiceProvider', + 29 => 'Inertia\\ServiceProvider', + 30 => 'Intervention\\Image\\ImageServiceProvider', + 31 => 'Jenssegers\\Agent\\AgentServiceProvider', + 32 => 'Laravel\\Fortify\\FortifyServiceProvider', + 33 => 'Laravel\\Jetstream\\JetstreamServiceProvider', + 34 => 'Laravel\\Sail\\SailServiceProvider', + 35 => 'Laravel\\Sanctum\\SanctumServiceProvider', + 36 => 'Laravel\\Scout\\ScoutServiceProvider', + 37 => 'Laravel\\Tinker\\TinkerServiceProvider', + 38 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 39 => 'Carbon\\Laravel\\ServiceProvider', + 40 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', + 41 => 'Prologue\\Alerts\\AlertsServiceProvider', + 42 => 'Spatie\\Translatable\\TranslatableServiceProvider', + 43 => 'Tightenco\\Ziggy\\ZiggyServiceProvider', + 44 => 'TimeHunter\\LaravelGoogleReCaptchaV3\\Providers\\GoogleReCaptchaV3ServiceProvider', + 45 => 'Vinkla\\Hashids\\HashidsServiceProvider', + 46 => 'App\\Providers\\AppServiceProvider', + 47 => 'App\\Providers\\AuthServiceProvider', + 48 => 'App\\Providers\\EventServiceProvider', + 49 => 'App\\Providers\\RouteServiceProvider', + 50 => 'App\\Providers\\FortifyServiceProvider', + 51 => 'App\\Providers\\JetstreamServiceProvider', ), 'eager' => array ( @@ -68,30 +69,31 @@ 10 => 'Backpack\\CRUD\\BackpackServiceProvider', 11 => 'Backpack\\Generators\\GeneratorsServiceProvider', 12 => 'Creativeorange\\Gravatar\\GravatarServiceProvider', - 13 => 'Facade\\Ignition\\IgnitionServiceProvider', - 14 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', - 15 => 'Fruitcake\\Cors\\CorsServiceProvider', - 16 => 'Inertia\\ServiceProvider', - 17 => 'Intervention\\Image\\ImageServiceProvider', - 18 => 'Jenssegers\\Agent\\AgentServiceProvider', - 19 => 'Laravel\\Fortify\\FortifyServiceProvider', - 20 => 'Laravel\\Jetstream\\JetstreamServiceProvider', - 21 => 'Laravel\\Sanctum\\SanctumServiceProvider', - 22 => 'Laravel\\Scout\\ScoutServiceProvider', - 23 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - 24 => 'Carbon\\Laravel\\ServiceProvider', - 25 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', - 26 => 'Prologue\\Alerts\\AlertsServiceProvider', - 27 => 'Spatie\\Translatable\\TranslatableServiceProvider', - 28 => 'Tightenco\\Ziggy\\ZiggyServiceProvider', - 29 => 'TimeHunter\\LaravelGoogleReCaptchaV3\\Providers\\GoogleReCaptchaV3ServiceProvider', - 30 => 'Vinkla\\Hashids\\HashidsServiceProvider', - 31 => 'App\\Providers\\AppServiceProvider', - 32 => 'App\\Providers\\AuthServiceProvider', - 33 => 'App\\Providers\\EventServiceProvider', - 34 => 'App\\Providers\\RouteServiceProvider', - 35 => 'App\\Providers\\FortifyServiceProvider', - 36 => 'App\\Providers\\JetstreamServiceProvider', + 13 => 'DigitallyHappy\\Assets\\AssetsServiceProvider', + 14 => 'Facade\\Ignition\\IgnitionServiceProvider', + 15 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', + 16 => 'Fruitcake\\Cors\\CorsServiceProvider', + 17 => 'Inertia\\ServiceProvider', + 18 => 'Intervention\\Image\\ImageServiceProvider', + 19 => 'Jenssegers\\Agent\\AgentServiceProvider', + 20 => 'Laravel\\Fortify\\FortifyServiceProvider', + 21 => 'Laravel\\Jetstream\\JetstreamServiceProvider', + 22 => 'Laravel\\Sanctum\\SanctumServiceProvider', + 23 => 'Laravel\\Scout\\ScoutServiceProvider', + 24 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 25 => 'Carbon\\Laravel\\ServiceProvider', + 26 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', + 27 => 'Prologue\\Alerts\\AlertsServiceProvider', + 28 => 'Spatie\\Translatable\\TranslatableServiceProvider', + 29 => 'Tightenco\\Ziggy\\ZiggyServiceProvider', + 30 => 'TimeHunter\\LaravelGoogleReCaptchaV3\\Providers\\GoogleReCaptchaV3ServiceProvider', + 31 => 'Vinkla\\Hashids\\HashidsServiceProvider', + 32 => 'App\\Providers\\AppServiceProvider', + 33 => 'App\\Providers\\AuthServiceProvider', + 34 => 'App\\Providers\\EventServiceProvider', + 35 => 'App\\Providers\\RouteServiceProvider', + 36 => 'App\\Providers\\FortifyServiceProvider', + 37 => 'App\\Providers\\JetstreamServiceProvider', ), 'deferred' => array ( diff --git a/composer.json b/composer.json index ddc1ad6..2fc7cb8 100644 --- a/composer.json +++ b/composer.json @@ -6,8 +6,7 @@ "license": "MIT", "require": { "php": "^7.3|^8.0", - "backpack/crud": "4.1.*", - "backpack/generators": "3.1", + "backpack/crud": "^5.4", "doctrine/dbal": "^3.1", "fideloper/proxy": "^4.4", "fruitcake/laravel-cors": "^2.0", @@ -30,6 +29,7 @@ "vinkla/hashids": "^9.1" }, "require-dev": { + "backpack/generators": "^3.3", "facade/ignition": "^2.5", "fakerphp/faker": "^1.9.1", "laravel/sail": "^1.0.1", diff --git a/composer.lock b/composer.lock index d2f8188..89d17c9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f28b6d2da4dab2aa93154b8aad8d319e", + "content-hash": "69e7f8d07e328c25ef6627fc6b2a0ab0", "packages": [ { "name": "asm89/stack-cors", @@ -64,31 +64,32 @@ }, { "name": "backpack/crud", - "version": "4.1.71", + "version": "5.4.10", "source": { "type": "git", "url": "https://github.com/Laravel-Backpack/CRUD.git", - "reference": "03a0ad4a8d7182d6ee9cf9c86d784d171a942484" + "reference": "050b288caf2f60c79313f2b0b7d4fefd25177f3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Laravel-Backpack/CRUD/zipball/03a0ad4a8d7182d6ee9cf9c86d784d171a942484", - "reference": "03a0ad4a8d7182d6ee9cf9c86d784d171a942484", + "url": "https://api.github.com/repos/Laravel-Backpack/CRUD/zipball/050b288caf2f60c79313f2b0b7d4fefd25177f3f", + "reference": "050b288caf2f60c79313f2b0b7d4fefd25177f3f", "shasum": "" }, "require": { "composer/package-versions-deprecated": "^1.8", "creativeorange/gravatar": "~1.0", + "digitallyhappy/assets": "^2.0.1", "doctrine/dbal": "^2.5|^3.0", "guzzlehttp/guzzle": "^7.0|^6.3", - "laravel/framework": "^8.0|^7.0|^6.0", - "prologue/alerts": "^0.4.1" + "laravel/framework": "^9.0|^8.69", + "prologue/alerts": "^1.0|^0.4" }, "require-dev": { - "orchestra/testbench": "^6.0|^5.0|^4.0|^3.0", + "orchestra/testbench": "^7.0|^6.0|^5.0|^4.0|^3.0", "phpunit/phpunit": "~8.0|~7.0|~9.0", "scrutinizer/ocular": "~1.7|~1.1", - "spatie/laravel-translatable": "^4.0" + "spatie/laravel-translatable": "^4.0|^5.0|^6.0" }, "suggest": { "backpack/filemanager": "Required to use the browse and browse_multiple fields.", @@ -118,12 +119,12 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "proprietary" + "MIT" ], "authors": [ { "name": "Cristian Tabacitu", - "email": "tabacitu@backpackforlaravel.com", + "email": "cristian.tabacitu@backpackforlaravel.com", "homepage": "https://backpackforlaravel.com", "role": "Creator & Maintainer" } @@ -151,73 +152,9 @@ ], "support": { "issues": "https://github.com/Laravel-Backpack/CRUD/issues", - "source": "https://github.com/Laravel-Backpack/CRUD/tree/4.1.71" + "source": "https://github.com/Laravel-Backpack/CRUD/tree/5.4.10" }, - "time": "2022-08-08T16:30:20+00:00" - }, - { - "name": "backpack/generators", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/Laravel-Backpack/Generators.git", - "reference": "12a44a285ff65cdff649e2a1560d0d0f917c2f7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Laravel-Backpack/Generators/zipball/12a44a285ff65cdff649e2a1560d0d0f917c2f7d", - "reference": "12a44a285ff65cdff649e2a1560d0d0f917c2f7d", - "shasum": "" - }, - "require": { - "backpack/crud": "4.1.*" - }, - "require-dev": { - "phpunit/phpunit": "^9.0||^7.0", - "scrutinizer/ocular": "~1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Backpack\\Generators\\GeneratorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Backpack\\Generators\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "proprietary" - ], - "authors": [ - { - "name": "Cristian Tone", - "email": "cristitone@outlook.com", - "homepage": "http://updivision.com", - "role": "Developer" - } - ], - "description": "Generate files for laravel projects", - "homepage": "https://github.com/laravel-backpack/generators", - "keywords": [ - "config", - "generators", - "model", - "request", - "view" - ], - "support": { - "issues": "https://github.com/Laravel-Backpack/Generators/issues", - "source": "https://github.com/Laravel-Backpack/Generators/tree/v3.1.0" - }, - "time": "2020-05-20T07:31:20+00:00" + "time": "2022-11-30T16:46:04+00:00" }, { "name": "bacon/bacon-qr-code", @@ -653,6 +590,68 @@ }, "time": "2022-10-27T11:44:00+00:00" }, + { + "name": "digitallyhappy/assets", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/DigitallyHappy/assets.git", + "reference": "a79e6b0e4d50f31c325f7da9b6e600d89256177d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DigitallyHappy/assets/zipball/a79e6b0e4d50f31c325f7da9b6e600d89256177d", + "reference": "a79e6b0e4d50f31c325f7da9b6e600d89256177d", + "shasum": "" + }, + "require": { + "laravel/framework": "^9.0|^8.0" + }, + "require-dev": { + "orchestra/testbench": "~5|~6", + "phpunit/phpunit": "~9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "DigitallyHappy\\Assets\\AssetsServiceProvider" + ], + "aliases": { + "Assets": "DigitallyHappy\\Assets\\Facades\\Assets" + } + } + }, + "autoload": { + "psr-4": { + "DigitallyHappy\\Assets\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cristian Tabacitu", + "email": "hello@tabacitu.ro", + "homepage": "https://tabacitu.ro" + } + ], + "description": "Dead-simple way to load CSS or JS assets only once per page, when using Laravel 8+.", + "homepage": "https://github.com/digitallyhappy/assets", + "keywords": [ + "Load CSS once", + "Load JS once", + "assets", + "laravel" + ], + "support": { + "issues": "https://github.com/DigitallyHappy/assets/issues", + "source": "https://github.com/DigitallyHappy/assets/tree/2.0.4" + }, + "time": "2022-03-08T23:50:02+00:00" + }, { "name": "doctrine/cache", "version": "2.2.0", @@ -2365,16 +2364,16 @@ }, { "name": "laravel/fortify", - "version": "v1.13.7", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "28c2dc66639571ac656c13617a1a0876a82319b1" + "reference": "20aeaf31edbf01e21348954088641cdb3d48ebe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/28c2dc66639571ac656c13617a1a0876a82319b1", - "reference": "28c2dc66639571ac656c13617a1a0876a82319b1", + "url": "https://api.github.com/repos/laravel/fortify/zipball/20aeaf31edbf01e21348954088641cdb3d48ebe8", + "reference": "20aeaf31edbf01e21348954088641cdb3d48ebe8", "shasum": "" }, "require": { @@ -2424,7 +2423,7 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2022-11-04T20:57:17+00:00" + "time": "2022-11-23T09:03:43+00:00" }, { "name": "laravel/framework", @@ -6103,16 +6102,16 @@ }, { "name": "symfony/css-selector", - "version": "v6.1.3", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443" + "reference": "91c342ffc99283c43653ed8eb47bc2a94db7f398" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/0dd5e36b80e1de97f8f74ed7023ac2b837a36443", - "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/91c342ffc99283c43653ed8eb47bc2a94db7f398", + "reference": "91c342ffc99283c43653ed8eb47bc2a94db7f398", "shasum": "" }, "require": { @@ -6148,7 +6147,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.1.3" + "source": "https://github.com/symfony/css-selector/tree/v6.2.0" }, "funding": [ { @@ -6164,7 +6163,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2022-08-26T05:51:22+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6306,16 +6305,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.1.0", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347" + "reference": "9efb1618fabee89515fe031314e8ed5625f85a53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9efb1618fabee89515fe031314e8ed5625f85a53", + "reference": "9efb1618fabee89515fe031314e8ed5625f85a53", "shasum": "" }, "require": { @@ -6369,7 +6368,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.1.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.0" }, "funding": [ { @@ -6385,7 +6384,7 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:51:07+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -6803,16 +6802,16 @@ }, { "name": "symfony/options-resolver", - "version": "v6.1.0", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" + "reference": "d28f02acde71ff75e957082cd36e973df395f626" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28f02acde71ff75e957082cd36e973df395f626", + "reference": "d28f02acde71ff75e957082cd36e973df395f626", "shasum": "" }, "require": { @@ -6850,7 +6849,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.2.0" }, "funding": [ { @@ -6866,7 +6865,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7922,16 +7921,16 @@ }, { "name": "symfony/string", - "version": "v6.1.7", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "823f143370880efcbdfa2dbca946b3358c4707e5" + "reference": "145702685e0d12f81d755c71127bfff7582fdd36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/823f143370880efcbdfa2dbca946b3358c4707e5", - "reference": "823f143370880efcbdfa2dbca946b3358c4707e5", + "url": "https://api.github.com/repos/symfony/string/zipball/145702685e0d12f81d755c71127bfff7582fdd36", + "reference": "145702685e0d12f81d755c71127bfff7582fdd36", "shasum": "" }, "require": { @@ -7947,6 +7946,7 @@ "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", "symfony/translation-contracts": "^2.0|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, @@ -7987,7 +7987,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.7" + "source": "https://github.com/symfony/string/tree/v6.2.0" }, "funding": [ { @@ -8003,20 +8003,20 @@ "type": "tidelift" } ], - "time": "2022-10-10T09:34:31+00:00" + "time": "2022-11-30T17:13:47+00:00" }, { "name": "symfony/translation", - "version": "v6.1.6", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e6cd330e5a072518f88d65148f3f165541807494" + "reference": "c08de62caead8357244efcb809d0b1a2584f2198" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e6cd330e5a072518f88d65148f3f165541807494", - "reference": "e6cd330e5a072518f88d65148f3f165541807494", + "url": "https://api.github.com/repos/symfony/translation/zipball/c08de62caead8357244efcb809d0b1a2584f2198", + "reference": "c08de62caead8357244efcb809d0b1a2584f2198", "shasum": "" }, "require": { @@ -8036,6 +8036,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", @@ -8050,6 +8051,7 @@ "symfony/yaml": "^5.4|^6.0" }, "suggest": { + "nikic/php-parser": "To use PhpAstExtractor", "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" @@ -8083,7 +8085,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.1.6" + "source": "https://github.com/symfony/translation/tree/v6.2.0" }, "funding": [ { @@ -8099,7 +8101,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/translation-contracts", @@ -8750,6 +8752,76 @@ } ], "packages-dev": [ + { + "name": "backpack/generators", + "version": "v3.3.7", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Backpack/Generators.git", + "reference": "788189f081b01b5c790f0fcab701817dd9c57706" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Backpack/Generators/zipball/788189f081b01b5c790f0fcab701817dd9c57706", + "reference": "788189f081b01b5c790f0fcab701817dd9c57706", + "shasum": "" + }, + "require": { + "backpack/crud": "^5.3.11" + }, + "require-dev": { + "phpunit/phpunit": "^9.0||^7.0", + "scrutinizer/ocular": "~1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Backpack\\Generators\\GeneratorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Backpack\\Generators\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "proprietary" + ], + "authors": [ + { + "name": "Cristian Tabacitu", + "email": "tabacitu@backpackforlaravel.com", + "homepage": "https://backpackforlaravel.com", + "role": "Lead Developer & Maintainer" + }, + { + "name": "Cristian Tone", + "email": "cristitone@outlook.com", + "homepage": "http://updivision.com", + "role": "Developer" + } + ], + "description": "Generate files for laravel projects", + "homepage": "https://github.com/laravel-backpack/generators", + "keywords": [ + "config", + "generators", + "model", + "request", + "view" + ], + "support": { + "issues": "https://github.com/Laravel-Backpack/Generators/issues", + "source": "https://github.com/Laravel-Backpack/Generators/tree/v3.3.7" + }, + "time": "2022-11-26T07:21:23+00:00" + }, { "name": "doctrine/instantiator", "version": "1.4.1", diff --git a/database/factories/SelectedTradingFactory.php b/database/factories/SelectedTradingFactory.php new file mode 100644 index 0000000..c96f739 --- /dev/null +++ b/database/factories/SelectedTradingFactory.php @@ -0,0 +1,20 @@ +id(); + $table->unsignedBigInteger('category_id')->unsigned(); + $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); + $table->string('title'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('selected_tradings'); + } +} diff --git a/database/seeders/SelectedTradingSeeder.php b/database/seeders/SelectedTradingSeeder.php new file mode 100644 index 0000000..6395abc --- /dev/null +++ b/database/seeders/SelectedTradingSeeder.php @@ -0,0 +1,18 @@ + Categories - \ No newline at end of file + + \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index c90af24..74c852e 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,6 +9,7 @@ use App\Http\Controllers\Api\TradingsController; use App\Http\Controllers\Api\NewsController; use App\Http\Controllers\Api\CategoryController; use App\Http\Controllers\Api\DocumentController; +use App\Http\Controllers\Api\SelectedTradingController; /* |-------------------------------------------------------------------------- @@ -30,5 +31,6 @@ Route::get('other-filters', [FiltersController::class, 'otherFilters']); Route::get('categories', [CategoryController::class, 'index']); Route::get('tradings', [TradingsController::class, 'index']); +Route::get('categories/tradings', [TradingsController::class, 'selectedTradings']); Route::get('news', [NewsController::class, 'index']); Route::get('documents', [DocumentController::class, 'index']); diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 5bd7f01..07103b7 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -20,4 +20,5 @@ Route::group([ Route::crud('trading', 'TradingCrudController'); Route::crud('news', 'NewsCrudController'); Route::crud('document', 'DocumentCrudController'); + Route::crud('selected-trading', 'SelectedTradingCrudController'); }); // this should be the absolute last line of this file \ No newline at end of file diff --git a/vendor.rar b/vendor.rar deleted file mode 100644 index 3e9a540..0000000 Binary files a/vendor.rar and /dev/null differ