Migration improvements: (#3422)

- Added option to force the migration
- Cleaned imports
This commit is contained in:
David Bomba 2020-03-05 07:30:10 +11:00 committed by GitHub
parent bde276ad67
commit 67044f9dd3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 21 deletions

View File

@ -2,29 +2,29 @@
namespace App\Http\Controllers\Migration;
use App\Http\Controllers\BaseController;
use App\Http\Requests\MigrationAuthRequest;
use App\Http\Requests\MigrationCompaniesRequest;
use App\Http\Requests\MigrationEndpointRequest;
use App\Http\Requests\MigrationTypeRequest;
use App\Libraries\Utils;
use App\Models\AccountGateway;
use App\Models\AccountGatewaySettings;
use App\Models\AccountGatewayToken;
use App\Models\Contact;
use App\Models\User;
use App\Models\Credit;
use App\Models\Document;
use App\Models\Contact;
use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentMethod;
use App\Models\Product;
use App\Models\TaxRate;
use App\Models\User;
use App\Services\Migration\AuthService;
use App\Services\Migration\CompanyService;
use App\Services\Migration\CompleteService;
use App\Libraries\Utils;
use App\Models\Document;
use App\Models\PaymentMethod;
use App\Models\AccountGateway;
use App\Models\AccountGatewayToken;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use App\Models\AccountGatewaySettings;
use App\Services\Migration\AuthService;
use App\Http\Controllers\BaseController;
use App\Services\Migration\CompanyService;
use App\Http\Requests\MigrationAuthRequest;
use App\Http\Requests\MigrationTypeRequest;
use App\Services\Migration\CompleteService;
use App\Http\Requests\MigrationEndpointRequest;
use App\Http\Requests\MigrationCompaniesRequest;
class StepsController extends BaseController
{
@ -147,7 +147,8 @@ class StepsController extends BaseController
foreach ($request->companies as $company) {
$completeService = (new CompleteService(session('MIGRATION_ACCOUNT_TOKEN')))
->file($this->getMigrationFile())
->company($company)
->force(array_key_exists('force', $company))
->company($company['id'])
->endpoint(session('MIGRATION_ENDPOINT'))
->start();
}
@ -257,9 +258,6 @@ class StepsController extends BaseController
public function getCompanySettings()
{
// In v1: custom_invoice_taxes1 & custom_invoice_taxes2, v2: 'invoice_taxes'. What do to with this?
// V1: invoice_number_prefix, v2: invoice_number_pattern.. same with quote_number, client_number,
return [
'timezone_id' => $this->account->timezone_id ? (string)$this->account->timezone_id : '15',
'date_format_id' => $this->account->date_format_id ? (string)$this->account->date_format_id : '1',

View File

@ -15,6 +15,7 @@ class CompleteService
protected $uri = '/api/v1/migration/start/';
protected $errors = [];
protected $isSuccessful;
protected $force = false;
public function __construct(string $token)
@ -29,6 +30,13 @@ class CompleteService
return $this;
}
public function force($option)
{
$this->force = $option;
return $this;
}
public function company($company)
{
$this->company = $company;
@ -47,6 +55,7 @@ class CompleteService
{
$body = [
'migration' => \Unirest\Request\Body::file($this->file, 'application/zip'),
'force' => $this->force,
];
$response = Request::post($this->getUrl(), $this->getHeaders(), $body);

View File

@ -17,11 +17,16 @@
@foreach($companies as $company)
<div class="form-check">
<input class="form-check-input" type="checkbox" name="companies[]" id="company1" value="{{ $company->id }}" checked>
<input class="form-check-input" type="checkbox" name="companies[{{ $company->id }}][id]" id="company1" value="{{ $company->id }}" checked>
<label class="form-check-label" for="company1">
Name: {{ $company->settings->name }} ID: {{ $company->id }}
</label>
</div>
<div class="form-group">
<input type="checkbox" name="companies[{{ $company->id }}][force]">
<label for="force">Force migration</label>
<small>* All current company data will be wiped.</small>
</div>
@endforeach
</form>
</div>