Файл: database/migrations/2021_08_25_225022_v2_5_0.php
Строк: 337
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
use IlluminateSupportFacadesDB;
class V250 extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->text('billing_information')->nullable()->after('role');
$table->timestamp('plan_ends_at')->nullable()->after('role');
$table->timestamp('plan_trial_ends_at')->nullable()->after('role');
$table->timestamp('plan_recurring_at')->nullable()->after('role');
$table->timestamp('plan_created_at')->nullable()->after('role');
$table->string('plan_subscription_status', 32)->nullable()->after('role');
$table->string('plan_subscription_id', 128)->nullable()->after('role');
$table->string('plan_payment_processor', 32)->nullable()->after('role');
$table->string('plan_interval', 16)->nullable()->after('role');
$table->string('plan_currency', 12)->nullable()->after('role');
$table->string('plan_amount', 32)->nullable()->after('role');
$table->integer('plan_id')->unsigned()->default(1)->after('role')->index('plan_id');
$table->dropColumn(['stripe_id', 'card_last_four', 'card_brand', 'trial_ends_at']);
});
Schema::drop('subscriptions');
Schema::drop('subscription_items');
Schema::create('payments', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id')->index('user_id');
$table->unsignedInteger('plan_id')->index('plan_id');
$table->string('payment_id', 128)->index('payment_id');
$table->string('invoice_id', 128)->nullable()->index('invoice_id');
$table->string('processor', 32)->index('processor');
$table->string('amount', 32);
$table->string('currency', 12);
$table->string('interval', 16)->index('interval');
$table->string('status', 16)->index('status');
$table->text('product')->nullable();
$table->text('coupon')->nullable();
$table->text('tax_rates')->nullable();
$table->text('seller')->nullable();
$table->text('customer')->nullable();
$table->timestamps();
});
Schema::table('cronjobs', function(Blueprint $table)
{
$table->increments('id')->change();
});
Schema::table('pages', function(Blueprint $table) {
$table->renameColumn('title', 'name');
});
Schema::table('languages', function (Blueprint $table) {
$table->timestamps();
});
Schema::create('coupons', function(Blueprint $table)
{
$table->increments('id');
$table->string('name')->index('name');
$table->string('code')->index('code');
$table->boolean('type')->index('type');
$table->decimal('percentage', 5, 2)->nullable();
$table->integer('quantity')->nullable();
$table->integer('days')->nullable();
$table->integer('redeems')->nullable()->default(0);
$table->timestamps();
$table->softDeletes();
});
Schema::create('tax_rates', function(Blueprint $table)
{
$table->increments('id');
$table->string('name')->index('name');
$table->boolean('type')->index('type');
$table->decimal('percentage', 5, 2);
$table->text('regions')->nullable();
$table->timestamps();
$table->softDeletes();
});
Schema::table('plans', function (Blueprint $table) {
$table->increments('id')->change();
$table->string('amount_month', 32)->default(0)->change();
$table->string('amount_year', 32)->default(0)->change();
$table->text('tax_rates')->after('coupons')->nullable();
$table->text('features')->after('visibility')->nullable();
$table->timestamps();
});
$featuresList = ['option_pageviews'];
$features = [];
foreach (DB::table('plans')->select('*')->cursor() as $row) {
foreach ($featuresList as $feature) {
$features[str_replace('option_', '', $feature)] = $row->$feature;
}
DB::statement("UPDATE `plans` SET `features` = :features, `amount_month` = :amount_month, `amount_year` = :amount_year WHERE `id` = :id", ['features' => json_encode($features), 'id' => $row->id, 'amount_month' => (!in_array(strtoupper($row->currency), config('currencies.zero_decimals')) ? $row->amount_month / 100 : $row->amount_month), 'amount_year' => (!in_array(strtoupper($row->currency), config('currencies.zero_decimals')) ? $row->amount_year / 100 : $row->amount_year)]);
}
Schema::table('plans', function (Blueprint $table) use ($featuresList) {
$table->dropColumn(array_merge(['product', 'plan_month', 'plan_year'], $featuresList));
});
DB::update("UPDATE `plans` SET `tax_rates` = '[]', `coupons` = '[]'");
$settings = array_combine(['registration', 'billing_vendor', 'billing_address', 'billing_city', 'billing_state', 'billing_postal_code', 'billing_country', 'billing_phone', 'billing_vat_number'], ['registration_registration', 'invoice_vendor', 'invoice_address', 'invoice_city', 'invoice_state', 'invoice_postal_code', 'invoice_country', 'invoice_phone', 'invoice_vat_number']);
$sqlQuery = null;
foreach($settings as $new => $old) {
$sqlQuery .= "WHEN `name` = '" . $old . "' THEN '" . $new . "' ";
}
DB::update("UPDATE `settings` SET `name` = CASE " . $sqlQuery . " END WHERE `name` IN ('" . implode("', '", $settings) . "')");
DB::table('settings')->insert(
[
[
'name' => 'paypal',
'value' => '0'
], [
'name' => 'paypal_mode',
'value' => 'sandbox'
], [
'name' => 'paypal_client_id',
'value' => ''
], [
'name' => 'paypal_secret',
'value' => ''
], [
'name' => 'paypal_webhook_id',
'value' => ''
], [
'name' => 'coinbase',
'value' => '0'
], [
'name' => 'coinbase_key',
'value' => ''
], [
'name' => 'coinbase_wh_secret',
'value' => ''
], [
'name' => 'bank',
'value' => '0'
], [
'name' => 'bank_account_owner',
'value' => ''
], [
'name' => 'bank_account_number',
'value' => ''
], [
'name' => 'bank_name',
'value' => ''
], [
'name' => 'bank_routing_number',
'value' => ''
], [
'name' => 'bank_iban',
'value' => ''
], [
'name' => 'bank_bic_swift',
'value' => ''
], [
'name' => 'billing_invoice_prefix',
'value' => ''
], [
'name' => 'announcement_guest',
'value' => ''
], [
'name' => 'announcement_guest_type',
'value' => 'info'
], [
'name' => 'announcement_guest_id',
'value' => 'cwUOUj7dQZZzJstZ'
], [
'name' => 'announcement_user',
'value' => ''
], [
'name' => 'announcement_user_type',
'value' => 'info'
], [
'name' => 'announcement_user_id',
'value' => 'p0VIvAg0FU26HN2v'
],
]
);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}