mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 21:22:58 +01:00
commit
6defeb0831
@ -1 +1 @@
|
||||
5.1.61
|
||||
5.1.62
|
@ -33,6 +33,7 @@ use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
use ZipArchive;
|
||||
use ZipStream\Option\Archive;
|
||||
use ZipStream\ZipStream;
|
||||
@ -41,15 +42,45 @@ class CompanyImport implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash;
|
||||
|
||||
protected $current_app_version;
|
||||
|
||||
public $company;
|
||||
|
||||
private $account;
|
||||
|
||||
public $file_path;
|
||||
|
||||
private $backup_file;
|
||||
|
||||
public $import_company;
|
||||
|
||||
public $ids = [];
|
||||
|
||||
private $options = '';
|
||||
|
||||
private $importables = [
|
||||
'company',
|
||||
'users',
|
||||
// 'payment_terms',
|
||||
// 'tax_rates',
|
||||
// 'clients',
|
||||
// 'company_gateways',
|
||||
// 'client_gateway_tokens',
|
||||
// 'vendors',
|
||||
// 'projects',
|
||||
// 'products',
|
||||
// 'credits',
|
||||
// 'invoices',
|
||||
// 'recurring_invoices',
|
||||
// 'quotes',
|
||||
// 'payments',
|
||||
// 'expense_categories',
|
||||
// 'task_statuses',
|
||||
// 'expenses',
|
||||
// 'tasks',
|
||||
// 'documents',
|
||||
];
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
@ -62,6 +93,7 @@ class CompanyImport implements ShouldQueue
|
||||
$this->company = $company;
|
||||
$this->file_path = $file_path;
|
||||
$this->options = $options;
|
||||
$this->current_app_version = config('ninja.app_version');
|
||||
}
|
||||
|
||||
public function handle()
|
||||
@ -69,10 +101,19 @@ class CompanyImport implements ShouldQueue
|
||||
MultiDB::setDb($this->company->db);
|
||||
|
||||
$this->company =Company::where('company_key', $this->company->company_key)->firstOrFail();
|
||||
$this->account = $this->company->account;
|
||||
|
||||
$this->unzipFile()
|
||||
->preFlightChecks();
|
||||
|
||||
foreach($this->importables as $import){
|
||||
|
||||
$method = Str::ucfirst(Str::camel($import));
|
||||
|
||||
$this->{$method}();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -85,10 +126,12 @@ class CompanyImport implements ShouldQueue
|
||||
private function preFlightChecks()
|
||||
{
|
||||
//check the file version and perform any necessary adjustments to the file in order to proceed - needed when we change schema
|
||||
//
|
||||
$app_version = $this->backup_file->app_version;
|
||||
|
||||
nlog($app_version);
|
||||
if($this->current_app_version != $this->backup_file->app_version)
|
||||
{
|
||||
//perform some magic here
|
||||
}
|
||||
|
||||
|
||||
return $this;
|
||||
}
|
||||
@ -118,10 +161,39 @@ class CompanyImport implements ShouldQueue
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function importData()
|
||||
private function importUsers()
|
||||
{
|
||||
// $this->import_company = Company::where('company_key', $this->company->company_key)->firstOrFail();
|
||||
User::unguard();
|
||||
|
||||
return $this;
|
||||
foreach ($this->backup_file->users as $user)
|
||||
{
|
||||
|
||||
$new_user = User::firstOrNew(
|
||||
['email' => $user->email],
|
||||
(array)$user,
|
||||
);
|
||||
|
||||
$new_user->account_id = $this->account->id;
|
||||
$new_user->save(['timestamps' => false]);
|
||||
|
||||
$this->ids['users']["{$user->id}"] = $new_user->id;
|
||||
}
|
||||
|
||||
Expense::reguard();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function transformId(string$resource, string $old): int
|
||||
{
|
||||
if (! array_key_exists($resource, $this->ids)) {
|
||||
throw new \Exception("Resource {$resource} not available.");
|
||||
}
|
||||
|
||||
if (! array_key_exists("{$old}", $this->ids[$resource])) {
|
||||
throw new \Exception("Missing resource key: {$old}");
|
||||
}
|
||||
|
||||
return $this->ids[$resource]["{$old}"];
|
||||
}
|
||||
}
|
@ -443,7 +443,7 @@ class Company extends BaseModel
|
||||
|
||||
public function domain()
|
||||
{
|
||||
if (Ninja::isNinja()) {
|
||||
if (Ninja::isHosted()) {
|
||||
|
||||
if($this->portal_mode == 'domain')
|
||||
return $this->portal_domain;
|
||||
|
@ -53,4 +53,33 @@ class ImportCompanyTest extends TestCase
|
||||
$this->assertTrue(is_array(json_decode(file_get_contents($backup_json_file),1)));
|
||||
}
|
||||
|
||||
public function testImportUsers()
|
||||
{
|
||||
|
||||
$backup_json_file = base_path().'/tests/Feature/Import/backup.json';
|
||||
|
||||
$backup_json_file = json_decode(file_get_contents($backup_json_file));
|
||||
|
||||
$this->assertTrue(property_exists($backup_json_file, 'app_version'));
|
||||
|
||||
// User::unguard();
|
||||
|
||||
// foreach ($this->backup_file->users as $user)
|
||||
// {
|
||||
|
||||
// $new_user = User::firstOrNew(
|
||||
// ['email' => $user->email],
|
||||
// (array)$user,
|
||||
// );
|
||||
|
||||
// $new_user->account_id = $this->account->id;
|
||||
// $new_user->save(['timestamps' => false]);
|
||||
|
||||
// $this->ids['users']["{$user->id}"] = $new_user->id;
|
||||
// }
|
||||
|
||||
// User::reguard();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user