remove state & city stuff, Add listener version200

This commit is contained in:
raishvaria
2019-11-25 13:46:57 +05:30
parent 3158955d00
commit ac431ca815
21 changed files with 450 additions and 764 deletions

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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,

View File

@ -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"];

View File

@ -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();

View File

@ -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
]);
}
}

View File

@ -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'

View File

@ -0,0 +1,110 @@
<?php
namespace Crater\Listeners\Updates\v2;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Database\Schema\Blueprint;
use Crater\Listeners\Updates\Listener;
use Crater\Listeners\Updates\v2\Version200;
use Crater\Events\UpdateFinished;
use Crater\Setting;
use Crater\Address;
class Version200 extends Listener
{
const VERSION = '2.0.0';
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(UpdateFinished $event)
{
if ($this->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);
}
}

View File

@ -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,