2022-04-19 07:07:39 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use Illuminate\Database\Migrations\Migration;
|
|
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
|
|
|
|
class RenameServiceTables extends Migration
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Run the migrations.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function up()
|
|
|
|
{
|
|
|
|
Schema::table('ab_service', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->dropForeign('ab_service_site_id_foreign');
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropIndex('ab_service_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service_id_site_id_index');
|
|
|
|
$table->datetime('created_at')->nullable()->after('id');
|
|
|
|
$table->datetime('updated_at')->nullable()->after('created_at');
|
|
|
|
$table->date('invoice_last_at')->nullable()->after('date_last_invoice');
|
|
|
|
$table->date('invoice_next_at')->nullable()->after('date_next_invoice');
|
|
|
|
$table->date('start_at')->nullable()->after('date_start');
|
|
|
|
$table->date('stop_at')->nullable()->after('date_end');
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE ab_service RENAME TO services');
|
|
|
|
DB::statement('ALTER TABLE services MODIFY account_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE services MODIFY account_billing_id int unsigned DEFAULT NULL');
|
|
|
|
DB::statement('ALTER TABLE services MODIFY product_id int unsigned NOT NULL');
|
|
|
|
DB::statement('UPDATE services SET taxable=1');
|
|
|
|
DB::statement('UPDATE services SET active=0 WHERE active IS NULL');
|
|
|
|
DB::statement('ALTER TABLE services MODIFY active tinyint(1) NOT NULL,MODIFY suspend_billing tinyint(1) DEFAULT NULL,MODIFY external_billing tinyint(1) DEFAULT NULL,MODIFY taxable tinyint(1) DEFAULT NULL');
|
|
|
|
DB::statement('ALTER TABLE services RENAME COLUMN orderby_id TO ordered_by');
|
|
|
|
DB::statement('ALTER TABLE services MODIFY ordered_by int unsigned');
|
|
|
|
|
|
|
|
// Convert out dates
|
|
|
|
foreach (\App\Models\Service::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->cursor() as $o) {
|
|
|
|
if ($o->date_orig)
|
|
|
|
$o->created_at = \Carbon\Carbon::createFromTimestamp($o->date_orig);
|
|
|
|
if ($o->date_last)
|
|
|
|
$o->updated_at = \Carbon\Carbon::createFromTimestamp($o->date_last);
|
|
|
|
if ($o->date_last_invoice)
|
|
|
|
$o->invoice_last_at = \Carbon\Carbon::createFromTimestamp($o->date_last_invoice);
|
|
|
|
if ($o->date_next_invoice)
|
|
|
|
$o->invoice_next_at = \Carbon\Carbon::createFromTimestamp($o->date_next_invoice);
|
|
|
|
if ($o->date_start)
|
|
|
|
$o->start_at = \Carbon\Carbon::createFromTimestamp($o->date_start);
|
|
|
|
if ($o->date_end)
|
|
|
|
$o->stop_at = \Carbon\Carbon::createFromTimestamp($o->date_end);
|
|
|
|
$o->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
Schema::table('services', function (Blueprint $table) {
|
|
|
|
$table->dropColumn(['date_orig','date_last','date_last_invoice','date_next_invoice','date_start','date_end','queue','price_group']);
|
|
|
|
$table->foreign(['account_id','site_id'])->references(['id','site_id'])->on('accounts');
|
|
|
|
$table->foreign(['product_id','site_id'])->references(['id','site_id'])->on('products');
|
|
|
|
$table->foreign(['ordered_by','site_id'])->references(['id','site_id'])->on('users');
|
2022-04-20 07:05:49 +00:00
|
|
|
$table->foreign(['site_id'])->references(['site_id'])->on('sites');
|
2022-04-19 07:07:39 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service_domains RENAME TO service_domain');
|
|
|
|
DB::statement('ALTER TABLE service_emails RENAME TO service_email');
|
|
|
|
|
|
|
|
Schema::table('ab_service_change', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropForeign('ab_service_change_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service_change_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service_change_id_site_id_index');
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE ab_service_change RENAME TO service__change');
|
|
|
|
DB::statement('ALTER TABLE service__change MODIFY service_id int unsigned');
|
|
|
|
DB::statement('ALTER TABLE service__change MODIFY product_id int unsigned');
|
|
|
|
DB::statement('ALTER TABLE service__change MODIFY ordered_by int unsigned');
|
|
|
|
|
|
|
|
Schema::table('service__change', function (Blueprint $table) {
|
|
|
|
$table->date('ordered_at')->nullable()->after('ordered_by');
|
|
|
|
$table->date('effective_at')->nullable()->after('ordered_at');
|
|
|
|
|
|
|
|
$table->foreign(['product_id','site_id'])->references(['id','site_id'])->on('products');
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
$table->foreign(['ordered_by','site_id'])->references(['id','site_id'])->on('users');
|
|
|
|
});
|
|
|
|
|
|
|
|
// Convert out dates
|
|
|
|
foreach (\App\Models\ServiceChange::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->cursor() as $o) {
|
|
|
|
if ($o->date_ordered)
|
|
|
|
$o->ordered_at = \Carbon\Carbon::createFromTimestamp($o->date_ordered);
|
|
|
|
if ($o->date_effective)
|
|
|
|
$o->effective_at = \Carbon\Carbon::createFromTimestamp($o->date_effective);
|
|
|
|
$o->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service__change MODIFY ordered_at int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service__change MODIFY effective_at int unsigned NOT NULL');
|
|
|
|
|
|
|
|
Schema::table('service__change', function (Blueprint $table) {
|
|
|
|
$table->dropColumn(['date_ordered','date_effective']);
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service__generic MODIFY service_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service__generic MODIFY product_id int unsigned DEFAULT NULL');
|
|
|
|
DB::statement('UPDATE service__generic SET product_id=NULL WHERE product_id=0');
|
|
|
|
Schema::table('service__generic', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropForeign('service__generic_site_id_foreign');
|
|
|
|
$table->dropIndex('service__generic_site_id_foreign');
|
|
|
|
$table->dropIndex('service__generic_id_site_id_index');
|
|
|
|
|
|
|
|
$table->foreign(['product_id','site_id'])->references(['id','site_id'])->on('products');
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service_domain MODIFY service_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_domain MODIFY domain_tld_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_domain MODIFY domain_registrar_id int unsigned DEFAULT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_domain MODIFY domain_name varchar(128) NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_domain RENAME COLUMN domain_tld_id TO tld_id');
|
|
|
|
|
|
|
|
Schema::table('service_domain', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropForeign('service_domains_site_id_foreign');
|
|
|
|
$table->dropIndex('service_domains_site_id_foreign');
|
|
|
|
$table->dropIndex('service_domains_id_site_id_index');
|
|
|
|
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
$table->foreign(['tld_id'])->references(['id'])->on('tlds');
|
|
|
|
|
|
|
|
$table->date('expire_at')->nullable()->after('domain_expire');
|
|
|
|
});
|
|
|
|
|
|
|
|
// Convert out dates
|
|
|
|
foreach (\App\Models\Service\Domain::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->cursor() as $o) {
|
|
|
|
if ($o->domain_expire)
|
|
|
|
$o->expire_at = \Carbon\Carbon::createFromTimestamp($o->domain_expire);
|
|
|
|
$o->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
Schema::table('service_domain', function (Blueprint $table) {
|
|
|
|
$table->dropColumn(['registrar_lastsync','domain_expire']);
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service_email DROP PRIMARY KEY,ADD PRIMARY KEY (id,site_id)');
|
|
|
|
|
|
|
|
Schema::table('service_email', function (Blueprint $table) {
|
|
|
|
$table->unique(['domain_name','tld_id']);
|
|
|
|
$table->dropForeign('service_emails_site_id_foreign');
|
|
|
|
$table->dropForeign('service_emails_service_id_foreign');
|
|
|
|
$table->dropForeign('service_emails_tld_id_foreign');
|
|
|
|
|
|
|
|
$table->foreign(['tld_id'])->references(['id'])->on('tlds');
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE ab_service__hosting RENAME TO service_host');
|
|
|
|
DB::statement('ALTER TABLE service_host RENAME COLUMN domain_tld_id TO tld_id');
|
|
|
|
DB::statement('ALTER TABLE service_host MODIFY service_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_host MODIFY tld_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_host MODIFY host_server_id int unsigned DEFAULT NULL');
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service_host MODIFY domain_name varchar(128) NOT NULL');
|
|
|
|
|
|
|
|
Schema::table('service_host', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropForeign('ab_service__hosting_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service__hosting_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service__hosting_id_site_id_index');
|
|
|
|
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
$table->foreign(['tld_id'])->references(['id'])->on('tlds');
|
|
|
|
|
|
|
|
$table->date('expire_at')->nullable()->after('host_expire');
|
|
|
|
});
|
|
|
|
|
|
|
|
// Convert our dates
|
|
|
|
foreach (\App\Models\Service\Host::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->cursor() as $o) {
|
|
|
|
if ($o->server_data && (strlen($o->server_data) > 8) && gzuncompress($o->server_data))
|
|
|
|
$o->server_data = NULL;
|
|
|
|
if ($o->host_expire)
|
|
|
|
$o->expire_at = \Carbon\Carbon::createFromTimestamp($o->host_expire);
|
|
|
|
$o->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
Schema::table('service_host', function (Blueprint $table) {
|
|
|
|
$table->dropColumn(['host_expire','server_data_date']);
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE product_broadband RENAME COLUMN supplier_broadband_id TO supplier_item_id');
|
|
|
|
DB::statement('ALTER TABLE product_domain RENAME COLUMN supplier_domain_id TO supplier_item_id');
|
|
|
|
DB::statement('ALTER TABLE product_email RENAME COLUMN supplier_email_id TO supplier_item_id');
|
|
|
|
DB::statement('ALTER TABLE product_host RENAME COLUMN supplier_host_id TO supplier_item_id');
|
|
|
|
DB::statement('ALTER TABLE product_ssl RENAME COLUMN supplier_ssl_id TO supplier_item_id');
|
|
|
|
DB::statement('ALTER TABLE product_generic RENAME COLUMN supplier_generic_id TO supplier_item_id');
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE product_voip RENAME TO product_phone');
|
|
|
|
DB::statement('ALTER TABLE product_phone RENAME COLUMN supplier_voip_id TO supplier_item_id');
|
|
|
|
|
|
|
|
Schema::table('product_phone', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropForeign('product_voip_supplier_voip_id_site_id_foreign');
|
|
|
|
$table->dropForeign('product_voip_site_id_foreign');
|
|
|
|
$table->dropIndex('product_voip_supplier_voip_id_site_id_foreign');
|
|
|
|
$table->dropIndex('product_voip_site_id_foreign');
|
|
|
|
$table->dropIndex('product_voip_id_site_id_index');
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE supplier_voip RENAME TO supplier_phone');
|
|
|
|
Schema::table('supplier_phone', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->dropForeign('supplier_voip_supplier_detail_id_site_id_foreign');
|
|
|
|
$table->dropForeign('supplier_voip_site_id_foreign');
|
|
|
|
$table->dropIndex('supplier_voip_id_site_id_index');
|
|
|
|
|
|
|
|
$table->foreign(['supplier_detail_id','site_id'])->references(['id','site_id'])->on('supplier_details');
|
|
|
|
|
|
|
|
$table->string('technology')->nullable();
|
|
|
|
});
|
|
|
|
|
|
|
|
Schema::table('product_phone', function (Blueprint $table) {
|
|
|
|
$table->foreign(['supplier_item_id','site_id'])->references(['id','site_id'])->on('supplier_phone');
|
|
|
|
|
|
|
|
$table->string('technology')->nullable();
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE ab_service__voip RENAME TO service_phone');
|
|
|
|
DB::statement('ALTER TABLE service_phone MODIFY service_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_phone MODIFY service_number varchar(10) NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_phone MODIFY site_id int unsigned NOT NULL');
|
|
|
|
|
|
|
|
Schema::table('service_phone', function (Blueprint $table) {
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->date('connect_at')->nullable()->after('contract_term');
|
|
|
|
$table->date('expire_at')->nullable()->after('connect_at');
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
$table->string('technology')->nullable();
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE service_phone MODIFY id int unsigned auto_increment');
|
|
|
|
|
|
|
|
// Convert our dates
|
|
|
|
foreach (\App\Models\Service\Phone::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->cursor() as $o) {
|
|
|
|
if ($o->service_connect_date)
|
|
|
|
$o->connect_at = \Carbon\Carbon::createFromTimestamp($o->service_connect_date);
|
|
|
|
if ($o->getRawOriginal('contract_term') === 0)
|
|
|
|
$o->contract_term = NULL;
|
|
|
|
if ($o->service_contract_date && $o->getRawOriginal('contract_term'))
|
|
|
|
$o->expire_at = \Carbon\Carbon::createFromTimestamp($o->service_contract_date)->addMonths($o->getRawOriginal('contract_term'));
|
|
|
|
$o->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
Schema::table('service_phone', function (Blueprint $table) {
|
|
|
|
$table->dropColumn(['service_connect_date','service_contract_date','contract_term']);
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE ab_service__adsl RENAME TO service_broadband');
|
|
|
|
DB::statement('ALTER TABLE service_broadband MODIFY service_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_broadband MODIFY service_stats_collect tinyint(1) DEFAULT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_broadband RENAME COLUMN service_stats_lastupdate TO service_stats_at');
|
2022-04-20 06:24:58 +00:00
|
|
|
DB::statement('ALTER TABLE service_broadband RENAME COLUMN provided_adsl_plan_id TO provided_supplier_broadband_id');
|
|
|
|
DB::statement('ALTER TABLE service_broadband MODIFY provided_supplier_broadband_id int unsigned DEFAULT NULL');
|
2022-04-19 07:07:39 +00:00
|
|
|
// @todo drop column provided_adsl_plan_id
|
|
|
|
|
|
|
|
Schema::table('service_broadband', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
$table->date('connect_at')->nullable()->after('contract_term');
|
|
|
|
$table->date('expire_at')->nullable()->after('connect_at');
|
|
|
|
$table->ipAddress('ip6address')->nullable()->after('ipaddress');
|
|
|
|
$table->string('technology')->nullable();
|
|
|
|
|
|
|
|
$table->dropForeign('ab_service__adsl_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service__adsl_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service__adsl_id_site_id_index');
|
|
|
|
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
2022-04-20 06:24:58 +00:00
|
|
|
$table->foreign(['provided_supplier_broadband_id','site_id'])->references(['id','site_id'])->on('supplier_broadband');
|
2022-04-19 07:07:39 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
// Convert our dates
|
|
|
|
foreach (\App\Models\Service\Broadband::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->cursor() as $o) {
|
|
|
|
if ($o->service_connect_date)
|
|
|
|
$o->connect_at = \Carbon\Carbon::createFromTimestamp($o->service_connect_date);
|
|
|
|
if ($o->getRawOriginal('contract_term') === 0)
|
|
|
|
$o->contract_term = NULL;
|
|
|
|
if ($o->service_contract_date && $o->getRawOriginal('contract_term'))
|
|
|
|
$o->expire_at = \Carbon\Carbon::createFromTimestamp($o->service_contract_date)->addMonths($o->getRawOriginal('contract_term'));
|
|
|
|
$o->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
Schema::table('service_broadband', function (Blueprint $table) {
|
|
|
|
$table->dropColumn(['service_connect_date','service_contract_date','contract_term']);
|
|
|
|
});
|
|
|
|
|
|
|
|
Schema::table('supplier_broadband', function (Blueprint $table) {
|
|
|
|
$table->string('technology')->nullable();
|
|
|
|
});
|
|
|
|
|
|
|
|
DB::select("UPDATE services SET model='App\\\\Models\\\\Service\\\\Phone' where model='App\\\\Models\\\\Service\\\\Voip'");
|
|
|
|
DB::select("UPDATE products SET model='App\\\\Models\\\\Product\\\\Phone' where model='App\\\\Models\\\\Product\\\\Voip'");
|
|
|
|
|
|
|
|
DB::statement('ALTER TABLE ab_service__ssl RENAME TO service_ssl');
|
|
|
|
DB::statement('ALTER TABLE service_ssl MODIFY service_id int unsigned NOT NULL');
|
|
|
|
DB::statement('ALTER TABLE service_ssl MODIFY ssl_ca_id int unsigned DEFAULT NULL');
|
|
|
|
|
|
|
|
Schema::table('service_ssl', function (Blueprint $table) {
|
|
|
|
$table->dropPrimary();
|
|
|
|
$table->primary(['id','site_id']);
|
|
|
|
|
|
|
|
$table->dropForeign('ab_service__ssl_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service__ssl_site_id_foreign');
|
|
|
|
$table->dropIndex('ab_service__ssl_id_site_id_index');
|
|
|
|
|
|
|
|
$table->foreign(['service_id','site_id'])->references(['id','site_id'])->on('services');
|
|
|
|
});
|
|
|
|
|
|
|
|
foreach (DB::select('SELECT * FROM products where model="App\\\\Models\\\\Product\\\\SSL"') as $o) {
|
|
|
|
DB::select('UPDATE services set model="App\\\\Models\\\\Service\\\\SSL" WHERE product_id='.$o->id);
|
|
|
|
};
|
2022-04-20 07:05:49 +00:00
|
|
|
|
|
|
|
Schema::table('products', function (Blueprint $table) {
|
|
|
|
$table->dropForeign(['site_id']);
|
|
|
|
$table->foreign(['site_id'])->references(['site_id'])->on('sites');
|
|
|
|
});
|
2022-04-19 07:07:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Reverse the migrations.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function down()
|
|
|
|
{
|
|
|
|
abort(500,'Cant go back');
|
|
|
|
}
|
|
|
|
}
|