From ac431ca81569393594cc487bceea411aead2dfd7 Mon Sep 17 00:00:00 2001 From: raishvaria Date: Mon, 25 Nov 2019 13:46:57 +0530 Subject: [PATCH] remove state & city stuff, Add listener version200 --- app/Address.php | 16 +- app/Country.php | 6 - app/Http/Controllers/CompanyController.php | 6 +- app/Http/Controllers/CustomersController.php | 8 +- app/Http/Controllers/FrontendController.php | 8 +- app/Http/Controllers/LocationController.php | 16 - app/Http/Controllers/OnboardingController.php | 6 +- app/Listeners/Updates/v2/Version200.php | 110 ++++ app/Providers/EventServiceProvider.php | 2 + composer.json | 1 + composer.lock | 484 +++++++++--------- database/factories/AddressFactory.php | 6 +- ...19_08_30_072639_create_addresses_table.php | 6 +- .../components/base/modal/CustomerModal.vue | 153 +----- resources/assets/js/stub/address.js | 4 +- .../assets/js/views/customers/Create.vue | 166 +----- .../assets/js/views/settings/CompanyInfo.vue | 99 +--- .../assets/js/views/wizard/CompanyInfo.vue | 84 +-- routes/web.php | 7 +- tests/Feature/CompanySettingTest.php | 8 +- tests/Feature/LocationTest.php | 18 - 21 files changed, 450 insertions(+), 764 deletions(-) create mode 100644 app/Listeners/Updates/v2/Version200.php diff --git a/app/Address.php b/app/Address.php index 79e3ae3f..cf92eefa 100644 --- a/app/Address.php +++ b/app/Address.php @@ -4,8 +4,6 @@ namespace Crater; use Illuminate\Database\Eloquent\Model; use Crater\User; use Crater\Country; -use Crater\State; -use Crater\City; class Address extends Model { @@ -16,8 +14,8 @@ class Address extends Model 'name', 'address_street_1', 'address_street_2', - 'city_id', - 'state_id', + 'city', + 'state', 'country_id', 'zip', 'phone', @@ -35,14 +33,4 @@ class Address extends Model { return $this->belongsTo(Country::class); } - - public function state() - { - return $this->belongsTo(State::class); - } - - public function city() - { - return $this->belongsTo(City::class); - } } diff --git a/app/Country.php b/app/Country.php index 8a7b9acb..be3e962b 100644 --- a/app/Country.php +++ b/app/Country.php @@ -2,15 +2,9 @@ namespace Crater; use Illuminate\Database\Eloquent\Model; -use Crater\State; class Country extends Model { - public function states() - { - return $this->hasMany(State::class); - } - public function address() { return $this->hasMany(Address::class); diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 571536d0..a26ad328 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -56,7 +56,7 @@ class CompanyController extends Controller public function getAdminCompany() { - $user = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city', 'company'])->find(1); + $user = User::with(['addresses', 'addresses.country', 'company'])->find(1); return response()->json([ 'user' => $user @@ -75,9 +75,9 @@ class CompanyController extends Controller $company->addMediaFromRequest('logo')->toMediaCollection('logo'); } - $fields = $request->only(['address_street_1', 'address_street_2', 'city_id', 'state_id', 'country_id', 'zip', 'phone']); + $fields = $request->only(['address_street_1', 'address_street_2', 'city', 'state', 'country_id', 'zip', 'phone']); $address = Address::updateOrCreate(['user_id' => 1], $fields); - $user = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city', 'company'])->find(1); + $user = User::with(['addresses', 'addresses.country', 'company'])->find(1); return response()->json([ 'user' => $user, diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php index 79fc1d57..d31bf66d 100644 --- a/app/Http/Controllers/CustomersController.php +++ b/app/Http/Controllers/CustomersController.php @@ -80,8 +80,8 @@ class CustomersController extends Controller $newAddress->name = $address["name"]; $newAddress->address_street_1 = $address["address_street_1"]; $newAddress->address_street_2 = $address["address_street_2"]; - $newAddress->city_id = $address["city_id"]; - $newAddress->state_id = $address["state_id"]; + $newAddress->city = $address["city"]; + $newAddress->state = $address["state"]; $newAddress->country_id = $address["country_id"]; $newAddress->zip = $address["zip"]; $newAddress->phone = $address["phone"]; @@ -187,8 +187,8 @@ class CustomersController extends Controller $newAddress->name = $address["name"]; $newAddress->address_street_1 = $address["address_street_1"]; $newAddress->address_street_2 = $address["address_street_2"]; - $newAddress->city_id = $address["city_id"]; - $newAddress->state_id = $address["state_id"]; + $newAddress->city = $address["city"]; + $newAddress->state = $address["state"]; $newAddress->country_id = $address["country_id"]; $newAddress->zip = $address["zip"]; $newAddress->phone = $address["phone"]; diff --git a/app/Http/Controllers/FrontendController.php b/app/Http/Controllers/FrontendController.php index 66c6b33b..fdbf55bd 100644 --- a/app/Http/Controllers/FrontendController.php +++ b/app/Http/Controllers/FrontendController.php @@ -90,7 +90,7 @@ class FrontendController extends Controller } } - $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); + $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); $colors = [ 'invoice_primary_color', @@ -189,7 +189,7 @@ class FrontendController extends Controller } } - $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); + $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); $colors = [ 'invoice_primary_color', @@ -262,7 +262,7 @@ class FrontendController extends Controller $estimateTemplate = EstimateTemplate::find($estimate->estimate_template_id); $company = Company::find($estimate->company_id); - $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); + $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); $logo = $company->getMedia('logo')->first(); if($logo) { @@ -338,7 +338,7 @@ class FrontendController extends Controller $invoiceTemplate = InvoiceTemplate::find($invoice->invoice_template_id); $company = Company::find($invoice->company_id); - $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); + $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); $logo = $company->getMedia('logo')->first(); diff --git a/app/Http/Controllers/LocationController.php b/app/Http/Controllers/LocationController.php index 1183c840..e4234cdf 100644 --- a/app/Http/Controllers/LocationController.php +++ b/app/Http/Controllers/LocationController.php @@ -3,8 +3,6 @@ namespace Crater\Http\Controllers; use Illuminate\Http\Request; use Crater\Country; -use Crater\State; -use Crater\City; class LocationController extends Controller { @@ -14,18 +12,4 @@ class LocationController extends Controller 'countries' => Country::all() ]); } - - public function getStates($id) - { - return response()->json([ - 'states' => Country::find($id)->states - ]); - } - - public function getCities($id) - { - return response()->json([ - 'cities' => State::find($id)->cities - ]); - } } diff --git a/app/Http/Controllers/OnboardingController.php b/app/Http/Controllers/OnboardingController.php index d6e55620..2eb8bb94 100644 --- a/app/Http/Controllers/OnboardingController.php +++ b/app/Http/Controllers/OnboardingController.php @@ -58,8 +58,6 @@ class OnboardingController extends Controller $user = User::with([ 'addresses', 'addresses.country', - 'addresses.state', - 'addresses.city', 'company' ])->find(1); @@ -156,8 +154,8 @@ class OnboardingController extends Controller $fields = $request->only([ 'address_street_1', 'address_street_2', - 'city_id', - 'state_id', + 'city', + 'state', 'country_id', 'zip', 'phone' diff --git a/app/Listeners/Updates/v2/Version200.php b/app/Listeners/Updates/v2/Version200.php new file mode 100644 index 00000000..7d3ebc79 --- /dev/null +++ b/app/Listeners/Updates/v2/Version200.php @@ -0,0 +1,110 @@ +isListenerFired($event)) { + return; + } + + // Replace state and city id to name + $this->replaceStateAndCityName(); + + // Drop states and cities foreign key + $this->dropForeignKey(); + + // Remove states and cities tables + $this->dropSchemas(); + + // Delete state & city models, migrations & seeders + $this->deleteFiles(); + + // Update Crater app version + $this->updateVersion(); + } + + private function replaceStateAndCityName() { + \Schema::table('addresses', function (Blueprint $table) { + $table->string('state')->nullable(); + $table->string('city')->nullable(); + }); + + $addresses = \Crater\Address::all(); + foreach ($addresses as $add) { + $city = \Crater\City::find($add->city_id); + if($city) { + $add->city = $city->name; + } + + $state = \Crater\State::find($add->state_id); + if($state) { + $add->state = $state->name; + } + + $add->save(); + } + } + + private function dropForeignKey() { + \Schema::table('addresses', function (Blueprint $table) { + $table->dropForeign('addresses_state_id_foreign'); + $table->dropForeign('addresses_city_id_foreign'); + $table->dropColumn('state_id'); + $table->dropColumn('city_id'); + }); + } + + private function dropSchemas() { + \Schema::disableForeignKeyConstraints(); + + \Schema::dropIfExists('states'); + \Schema::dropIfExists('cities'); + + \Schema::enableForeignKeyConstraints(); + } + + private function deleteFiles() { + \File::delete( + database_path('migrations/2017_05_06_172817_create_cities_table.php'), + database_path('migrations/2017_05_06_173711_create_states_table.php'), + database_path('seeds/StatesTableSeeder.php'), + database_path('seeds/CitiesTableSeeder.php'), + app_path('City.php'), + app_path('State.php') + ); + } + + private function updateVersion() { + Setting::setSetting('version', static::VERSION); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 78028330..840fdde5 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -6,6 +6,7 @@ use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Crater\Events\UpdateFinished; use Crater\Listeners\Updates\v1\Version110; +use Crater\Listeners\Updates\v2\Version200; class EventServiceProvider extends ServiceProvider { @@ -17,6 +18,7 @@ class EventServiceProvider extends ServiceProvider protected $listen = [ UpdateFinished::class=> [ Version110::class, + Version200::class, ], Registered::class => [ SendEmailVerificationNotification::class, diff --git a/composer.json b/composer.json index 3c13532f..31db82c7 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ "require": { "php": "^7.2", "barryvdh/laravel-dompdf": "^0.8.1", + "doctrine/dbal": "^2.10", "fideloper/proxy": "^4.0", "guzzlehttp/guzzle": "^6.3", "intervention/image": "^2.3", diff --git a/composer.lock b/composer.lock index 1a956ae1..ea2e96d5 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": "2a5e8d91a2be3144e2812dd708dc14b7", + "content-hash": "e7cf4f0a8e1e7d60cc72b34ed4c730ce", "packages": [ { "name": "barryvdh/laravel-dompdf", @@ -158,6 +158,247 @@ "description": "implementation of xdg base directory specification for php", "time": "2014-10-24T07:27:01+00:00" }, + { + "name": "doctrine/cache", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "d4374ae95b36062d02ef310100ed33d78738d76c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d4374ae95b36062d02ef310100ed33d78738d76c", + "reference": "d4374ae95b36062d02ef310100ed33d78738d76c", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^4.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2019-10-28T09:31:32+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", + "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "jetbrains/phpstorm-stubs": "^2019.1", + "phpstan/phpstan": "^0.11.3", + "phpunit/phpunit": "^8.4.1", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "time": "2019-11-03T16:50:43+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Event Manager component", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "eventdispatcher", + "eventmanager" + ], + "time": "2018-06-11T11:59:03+00:00" + }, { "name": "doctrine/inflector", "version": "v1.3.0", @@ -5307,247 +5548,6 @@ ], "time": "2019-05-27T17:52:04+00:00" }, - { - "name": "doctrine/cache", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "d4374ae95b36062d02ef310100ed33d78738d76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/d4374ae95b36062d02ef310100ed33d78738d76c", - "reference": "d4374ae95b36062d02ef310100ed33d78738d76c", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^4.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ], - "time": "2019-10-28T09:31:32+00:00" - }, - { - "name": "doctrine/dbal", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", - "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.2" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "jetbrains/phpstorm-stubs": "^2019.1", - "phpstan/phpstan": "^0.11.3", - "phpunit/phpunit": "^8.4.1", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "time": "2019-11-03T16:50:43+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^4.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Doctrine Event Manager component", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "eventdispatcher", - "eventmanager" - ], - "time": "2018-06-11T11:59:03+00:00" - }, { "name": "doctrine/instantiator", "version": "1.2.0", diff --git a/database/factories/AddressFactory.php b/database/factories/AddressFactory.php index 52b3cd37..acf6e904 100644 --- a/database/factories/AddressFactory.php +++ b/database/factories/AddressFactory.php @@ -10,9 +10,9 @@ $factory->define(Address::class, function (Faker $faker) { 'name' => $faker->name, 'address_street_1' => $faker->streetAddress, 'address_street_2' => $faker->streetAddress, - 'city_id' => 5909, - 'state_id' => 42, - 'country_id' => 1, + 'city' => $faker->city, + 'state' => $faker->state, + 'country_id' => 231, 'zip' => $faker->postcode, 'phone' => $faker->phoneNumber, 'fax' => $faker->phoneNumber, diff --git a/database/migrations/2019_08_30_072639_create_addresses_table.php b/database/migrations/2019_08_30_072639_create_addresses_table.php index 6903777d..9870d0eb 100644 --- a/database/migrations/2019_08_30_072639_create_addresses_table.php +++ b/database/migrations/2019_08_30_072639_create_addresses_table.php @@ -18,10 +18,8 @@ class CreateAddressesTable extends Migration $table->string('name')->nullable(); $table->string('address_street_1')->nullable(); $table->string('address_street_2')->nullable(); - $table->integer('city_id')->unsigned()->nullable(); - $table->foreign('city_id')->references('id')->on('cities'); - $table->integer('state_id')->unsigned()->nullable(); - $table->foreign('state_id')->references('id')->on('states'); + $table->string('city')->nullable(); + $table->string('state')->nullable(); $table->integer('country_id')->unsigned()->nullable(); $table->foreign('country_id')->references('id')->on('countries'); $table->string('zip')->nullable(); diff --git a/resources/assets/js/components/base/modal/CustomerModal.vue b/resources/assets/js/components/base/modal/CustomerModal.vue index 33f7386c..1034793b 100644 --- a/resources/assets/js/components/base/modal/CustomerModal.vue +++ b/resources/assets/js/components/base/modal/CustomerModal.vue @@ -163,15 +163,10 @@
-
@@ -179,29 +174,14 @@
-
- -
@@ -294,15 +274,10 @@
-
@@ -310,15 +285,10 @@
-
@@ -372,16 +342,8 @@ export default { return { isLoading: false, countryList: [], - billingStates: [], - billingCities: [], billingCountry: null, - billingState: null, - billingCity: null, - shippingStates: [], - shippingCities: [], shippingCountry: null, - shippingState: null, - shippingCity: null, isCopyFromBilling: false, currencyList: [], currency: '', @@ -442,61 +404,14 @@ export default { billingCountry () { if (this.billingCountry) { this.billing.country_id = this.billingCountry.id - this.isDisabledBillingState = false - this.fetchBillingStates(this.billingCountry.id) - this.billingState = null - this.billingCity = null return true } }, - billingState () { - if (this.billingState) { - this.billing.state_id = this.billingState.id - this.isDisabledBillingCity = false - this.fetchBillingCities(this.billingState.id) - this.billingCity = null - return true - } - this.billingCity = null - this.isDisabledBillingCity = true - }, - billingCity () { - if (this.billingCity) { - this.billing.city_id = this.billingCity.id - } - }, shippingCountry () { if (this.shippingCountry) { this.shipping.country_id = this.shippingCountry.id - this.isDisabledShippingState = false - this.fetchShippingStates(this.shippingCountry.id) - if (this.isCopyFromBilling) { - return true - } - this.shippingState = null - this.shippingCity = null return true } - }, - shippingState () { - if (this.shippingState) { - this.shipping.state_id = this.shippingState.id - this.isDisabledShippingCity = false - this.fetchShippingCities(this.shippingState.id) - if (this.isCopyFromBilling) { - this.isCopyFromBilling = false - return true - } - this.shippingCity = null - return true - } - this.shippingCity = null - this.isDisabledShippingCity = true - }, - shippingCity () { - if (this.shippingCity) { - this.shipping.city_id = this.shippingCity.id - } } }, mounted () { @@ -529,16 +444,8 @@ export default { addresses: [] } - this.billingStates = [] - this.billingCities = [] this.billingCountry = null - this.billingState = null - this.billingCity = null - this.shippingStates = [] - this.shippingCities = [] this.shippingCountry = null - this.shippingState = null - this.shippingCity = null this.billing = {...AddressStub} this.shipping = {...AddressStub} @@ -553,13 +460,9 @@ export default { this.isCopyFromBilling = true this.shipping = {...this.billing, type: 'shipping'} this.shippingCountry = this.billingCountry - this.shippingState = this.billingState - this.shippingCity = this.billingCity } else { this.shipping = {...AddressStub, type: 'shipping'} this.shippingCountry = null - this.shippingState = null - this.shippingCity = null } }, async loadData () { @@ -633,30 +536,6 @@ export default { if (res) { this.countryList = res.data.countries } - }, - async fetchBillingStates (id) { - let res = await window.axios.get(`/api/states/${id}`) - if (res) { - this.billingStates = res.data.states - } - }, - async fetchBillingCities (id) { - let res = await window.axios.get(`/api/cities/${id}`) - if (res) { - this.billingCities = res.data.cities - } - }, - async fetchShippingStates (id) { - let res = await window.axios.get(`/api/states/${id}`) - if (res) { - this.shippingStates = res.data.states - } - }, - async fetchShippingCities (id) { - let res = await window.axios.get(`/api/cities/${id}`) - if (res) { - this.shippingCities = res.data.cities - } } } } diff --git a/resources/assets/js/stub/address.js b/resources/assets/js/stub/address.js index cbbd80fd..45982305 100644 --- a/resources/assets/js/stub/address.js +++ b/resources/assets/js/stub/address.js @@ -3,8 +3,8 @@ export default { phone: null, address_street_1: null, address_street_2: null, - city_id: null, - state_id: null, + city: null, + state: null, country_id: null, zip: null, type: null diff --git a/resources/assets/js/views/customers/Create.vue b/resources/assets/js/views/customers/Create.vue index 2973ad4d..5c2cade6 100644 --- a/resources/assets/js/views/customers/Create.vue +++ b/resources/assets/js/views/customers/Create.vue @@ -119,16 +119,10 @@
-
@@ -176,16 +170,10 @@
-
@@ -233,16 +221,10 @@
-
@@ -290,16 +272,10 @@
-
@@ -344,7 +320,7 @@ import { mapActions, mapGetters } from 'vuex' import MultiSelect from 'vue-multiselect' import { validationMixin } from 'vuelidate' import AddressStub from '../../stub/address' -const { required, minLength, email, numeric, url, maxLength } = require('vuelidate/lib/validators') +const { required, minLength, email, url, maxLength } = require('vuelidate/lib/validators') export default { components: { MultiSelect }, @@ -366,8 +342,8 @@ export default { billing: { name: null, country_id: null, - state_id: null, - city_id: null, + state: null, + city: null, phone: null, zip: null, address_street_1: null, @@ -377,8 +353,8 @@ export default { shipping: { name: null, country_id: null, - state_id: null, - city_id: null, + state: null, + city: null, phone: null, zip: null, address_street_1: null, @@ -386,26 +362,12 @@ export default { type: 'shipping' }, currencyList: [], - isDisabledBillingState: true, - isDisabledBillingCity: true, - isDisabledShippingState: true, - isDisabledShippingCity: true, billing_country: null, - billing_city: null, - billing_state: null, - shipping_country: null, - shipping_city: null, - shipping_state: null, billingCountries: [], - billingStates: [], - billingCities: [], - - shippingCountries: [], - shippingStates: [], - shippingCities: [] + shippingCountries: [] } }, validations: { @@ -455,61 +417,13 @@ export default { if (newCountry) { this.billing.country_id = newCountry.id this.isDisabledBillingState = false - this.billing_state = null - this.billing_city = null - this.fetchBillingState() - } - }, - billing_state (newState) { - if (newState) { - this.billing.state_id = newState.id - this.isDisabledBillingCity = false - this.billing_city = null - this.fetchBillingCities() - return true - } - this.billing_city = null - this.isDisabledBillingCity = true - return true - }, - billing_city (newCity) { - if (newCity) { - this.billing.city_id = newCity.id } }, shipping_country (newCountry) { if (newCountry) { this.shipping.country_id = newCountry.id - this.isDisabledShippingState = false - this.fetchShippingState() - if (this.isCopyFromBilling) { - return true - } - this.shipping_state = null - this.shipping_city = null return true } - }, - shipping_state (newState) { - if (newState) { - this.shipping.state_id = newState.id - this.isDisabledShippingCity = false - this.fetchShippingCities() - if (this.isCopyFromBilling) { - this.isCopyFromBilling = false - return true - } - this.shipping_city = null - return true - } - this.shipping_city = null - this.isDisabledShippingCity = true - return true - }, - shipping_city (newCity) { - if (newCity) { - this.shipping.city_id = newCity.id - } } }, mounted () { @@ -624,42 +538,6 @@ export default { } } } - }, - async fetchBillingState () { - let res = await window.axios.get(`/api/states/${this.billing_country.id}`) - if (res) { - this.billingStates = res.data.states - } - if (this.isEdit) { - this.billing_state = this.billingStates.find((state) => state.id === this.billing.state_id) - } - }, - async fetchBillingCities () { - let res = await window.axios.get(`/api/cities/${this.billing_state.id}`) - if (res) { - this.billingCities = res.data.cities - } - if (this.isEdit) { - this.billing_city = this.billingCities.find((city) => city.id === this.billing.city_id) - } - }, - async fetchShippingState () { - let res = await window.axios.get(`/api/states/${this.shipping_country.id}`) - if (res) { - this.shippingStates = res.data.states - } - if (this.isEdit) { - this.shipping_state = this.shippingStates.find((s) => s.id === this.shipping.state_id) - } - }, - async fetchShippingCities () { - let res = await window.axios.get(`/api/cities/${this.shipping_state.id}`) - if (res) { - this.shippingCities = res.data.cities - } - if (this.isEdit) { - this.shipping_city = this.shippingCities.find((c) => c.id === this.shipping.city_id) - } } } } diff --git a/resources/assets/js/views/settings/CompanyInfo.vue b/resources/assets/js/views/settings/CompanyInfo.vue index 8f1995f4..a4134df1 100644 --- a/resources/assets/js/views/settings/CompanyInfo.vue +++ b/resources/assets/js/views/settings/CompanyInfo.vue @@ -72,37 +72,22 @@
-
-
-
-
-
@@ -180,8 +169,8 @@ export default { name: null, address_street_1: '', address_street_2: '', - city_id: '', - state_id: '', + city: '', + state: '', country_id: '', zip: '', phone: '' @@ -190,13 +179,7 @@ export default { step: 1, countries: [], country: null, - states: [], - state: null, - cities: [], - city: null, - previewLogo: null, - isDisabledCity: true, - isDisabledState: true + previewLogo: null } }, validations: { @@ -218,35 +201,6 @@ export default { watch: { country ({ id }) { this.companyData.country_id = id - this.state = null - this.city = null - if (id !== null && id !== undefined) { - this.isDisabledState = false - return true - } - this.isDisabledState = true - return true - }, - state (newState) { - if (newState !== null && newState !== undefined) { - this.city = null - this.companyData.state_id = newState.id - this.isDisabledCity = false - return true - } - this.companyData.state_id = null - this.isDisabledCity = true - this.cities = [] - this.city = null - this.companyData.city_id = null - return true - }, - city (newCity) { - if (newCity !== null && newCity !== undefined) { - this.companyData.city_id = newCity.id - return true - } - this.companyData.city_id = null return true } }, @@ -307,22 +261,6 @@ export default { if (res) { this.countries = res.data.countries } - }, - async fetchState () { - this.$v.companyData.country_id.$touch() - let res = await window.axios.get(`/api/states/${this.country.id}`) - if (res) { - this.states = res.data.states - } - }, - async fetchCities () { - if (this.state === null || this.state === undefined) { - return false - } - let res = await window.axios.get(`/api/cities/${this.state.id}`) - if (res) { - this.cities = res.data.cities - } } } } diff --git a/routes/web.php b/routes/web.php index 3c9b2175..457bf07d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -47,10 +47,13 @@ Route::group(['prefix' => 'reports'], function () { 'uses' => 'ReportController@profitLossReport' ]); - - }); +Route::get('/newinvoice', function() { + + + return 'success'; +}); Route::get('/invoices/pdf/{id}', [ 'as' => 'get.invoice.pdf', diff --git a/tests/Feature/CompanySettingTest.php b/tests/Feature/CompanySettingTest.php index 33f6cf73..eaff574f 100644 --- a/tests/Feature/CompanySettingTest.php +++ b/tests/Feature/CompanySettingTest.php @@ -65,8 +65,8 @@ class CompanySettingTest extends TestCase $company = [ 'name' => 'XYZ', 'country_id' => 2, - 'state_id' => 3, - 'city_id' => 4, + 'state' => 'city', + 'city' => 'state', 'address_street_1' => 'test1', 'address_street_2' => 'test2', 'phone' => '1234567890', @@ -80,8 +80,8 @@ class CompanySettingTest extends TestCase $address2 = $response->decodeResponseJson()['user']['addresses'][0]; $this->assertEquals($company['name'], $company2['name']); $this->assertEquals($company['country_id'], $address2['country_id']); - $this->assertEquals($company['state_id'], $address2['state_id']); - $this->assertEquals($company['city_id'], $address2['city_id']); + $this->assertEquals($company['state'], $address2['state']); + $this->assertEquals($company['city'], $address2['city']); $this->assertEquals($company['address_street_1'], $address2['address_street_1']); $this->assertEquals($company['address_street_2'], $address2['address_street_2']); $this->assertEquals($company['phone'], $address2['phone']); diff --git a/tests/Feature/LocationTest.php b/tests/Feature/LocationTest.php index 61b97960..7b05ae56 100644 --- a/tests/Feature/LocationTest.php +++ b/tests/Feature/LocationTest.php @@ -5,8 +5,6 @@ use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; use Crater\Country; -use Crater\State; -use Crater\City; use SettingsSeeder; class LocationTest extends TestCase { @@ -26,20 +24,4 @@ class LocationTest extends TestCase $response->assertOk(); } - - /** @test */ - public function testGetStates() - { - $response = $this->json('GET', 'api/states/1'); - - $response->assertOk(); - } - - /** @test */ - public function testGetCities() - { - $response = $this->json('GET', 'api/cities/1'); - - $response->assertOk(); - } }