mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-17 12:42:15 +01:00
Fixed import
This commit is contained in:
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace App\Service\Import\Importers;
|
namespace App\Service\Import\Importers;
|
||||||
|
|
||||||
|
use App\Enums\Role;
|
||||||
use App\Models\TimeEntry;
|
use App\Models\TimeEntry;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Support\Carbon;
|
use Illuminate\Support\Carbon;
|
||||||
@@ -59,6 +60,8 @@ class ClockifyTimeEntriesImporter extends DefaultImporter
|
|||||||
$memberId = $this->memberImportHelper->getKey([
|
$memberId = $this->memberImportHelper->getKey([
|
||||||
'user_id' => $userId,
|
'user_id' => $userId,
|
||||||
'organization_id' => $this->organization->getKey(),
|
'organization_id' => $this->organization->getKey(),
|
||||||
|
], [
|
||||||
|
'role' => Role::Placeholder->value,
|
||||||
]);
|
]);
|
||||||
$clientId = null;
|
$clientId = null;
|
||||||
if ($record['Client'] !== '') {
|
if ($record['Client'] !== '') {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace App\Service\Import\Importers;
|
namespace App\Service\Import\Importers;
|
||||||
|
|
||||||
use App\Enums\Role;
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use App\Models\Member;
|
use App\Models\Member;
|
||||||
use App\Models\Organization;
|
use App\Models\Organization;
|
||||||
@@ -69,11 +68,7 @@ abstract class DefaultImporter implements ImporterContract
|
|||||||
$this->userImportHelper = new ImportDatabaseHelper(User::class, ['email'], true, function (Builder $builder) {
|
$this->userImportHelper = new ImportDatabaseHelper(User::class, ['email'], true, function (Builder $builder) {
|
||||||
/** @var Builder<User> $builder */
|
/** @var Builder<User> $builder */
|
||||||
return $builder->belongsToOrganization($this->organization);
|
return $builder->belongsToOrganization($this->organization);
|
||||||
}, function (User $user) {
|
}, null, validate: [
|
||||||
$user->organizations()->attach($this->organization, [
|
|
||||||
'role' => Role::Placeholder->value,
|
|
||||||
]);
|
|
||||||
}, validate: [
|
|
||||||
'name' => [
|
'name' => [
|
||||||
'required',
|
'required',
|
||||||
'max:255',
|
'max:255',
|
||||||
@@ -86,7 +81,13 @@ abstract class DefaultImporter implements ImporterContract
|
|||||||
$this->memberImportHelper = new ImportDatabaseHelper(Member::class, ['user_id', 'organization_id'], true, function (Builder $builder) {
|
$this->memberImportHelper = new ImportDatabaseHelper(Member::class, ['user_id', 'organization_id'], true, function (Builder $builder) {
|
||||||
/** @var Builder<Member> $builder */
|
/** @var Builder<Member> $builder */
|
||||||
return $builder->whereBelongsTo($this->organization, 'organization');
|
return $builder->whereBelongsTo($this->organization, 'organization');
|
||||||
});
|
}, null, validate: [
|
||||||
|
'role' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
'in:placeholder',
|
||||||
|
],
|
||||||
|
]);
|
||||||
$this->projectImportHelper = new ImportDatabaseHelper(Project::class, ['name', 'organization_id'], true, function (Builder $builder) {
|
$this->projectImportHelper = new ImportDatabaseHelper(Project::class, ['name', 'organization_id'], true, function (Builder $builder) {
|
||||||
/** @var Builder<Project> $builder */
|
/** @var Builder<Project> $builder */
|
||||||
return $builder->where('organization_id', $this->organization->id);
|
return $builder->where('organization_id', $this->organization->id);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace App\Service\Import\Importers;
|
namespace App\Service\Import\Importers;
|
||||||
|
|
||||||
|
use App\Enums\Role;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Spatie\TemporaryDirectory\TemporaryDirectory;
|
use Spatie\TemporaryDirectory\TemporaryDirectory;
|
||||||
use ValueError;
|
use ValueError;
|
||||||
@@ -93,10 +94,12 @@ class TogglDataImporter extends DefaultImporter
|
|||||||
'timezone' => $workspaceUser->timezone ?? 'UTC',
|
'timezone' => $workspaceUser->timezone ?? 'UTC',
|
||||||
'is_placeholder' => true,
|
'is_placeholder' => true,
|
||||||
], (string) $workspaceUser->uid);
|
], (string) $workspaceUser->uid);
|
||||||
$memberId = $this->memberImportHelper->getKey([
|
$this->memberImportHelper->getKey([
|
||||||
'user_id' => $userId,
|
'user_id' => $userId,
|
||||||
'organization_id' => $this->organization->getKey(),
|
'organization_id' => $this->organization->getKey(),
|
||||||
], [], $userId);
|
], [
|
||||||
|
'role' => Role::Placeholder->value,
|
||||||
|
], $userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($projects as $project) {
|
foreach ($projects as $project) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace App\Service\Import\Importers;
|
namespace App\Service\Import\Importers;
|
||||||
|
|
||||||
|
use App\Enums\Role;
|
||||||
use App\Models\TimeEntry;
|
use App\Models\TimeEntry;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Support\Carbon;
|
use Illuminate\Support\Carbon;
|
||||||
@@ -59,6 +60,8 @@ class TogglTimeEntriesImporter extends DefaultImporter
|
|||||||
$memberId = $this->memberImportHelper->getKey([
|
$memberId = $this->memberImportHelper->getKey([
|
||||||
'user_id' => $userId,
|
'user_id' => $userId,
|
||||||
'organization_id' => $this->organization->getKey(),
|
'organization_id' => $this->organization->getKey(),
|
||||||
|
], [
|
||||||
|
'role' => Role::Placeholder->value,
|
||||||
]);
|
]);
|
||||||
$clientId = null;
|
$clientId = null;
|
||||||
if ($record['Client'] !== '') {
|
if ($record['Client'] !== '') {
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Tests\Unit\Service\Import\Importer;
|
namespace Tests\Unit\Service\Import\Importer;
|
||||||
|
|
||||||
|
use App\Enums\Role;
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
|
use App\Models\Member;
|
||||||
use App\Models\Project;
|
use App\Models\Project;
|
||||||
use App\Models\Tag;
|
use App\Models\Tag;
|
||||||
use App\Models\Task;
|
use App\Models\Task;
|
||||||
@@ -28,6 +30,11 @@ class ImporterTestAbstract extends TestCase
|
|||||||
$this->assertSame(null, $user1->password);
|
$this->assertSame(null, $user1->password);
|
||||||
$this->assertSame('Peter Tester', $user1->name);
|
$this->assertSame('Peter Tester', $user1->name);
|
||||||
$this->assertSame('peter.test@email.test', $user1->email);
|
$this->assertSame('peter.test@email.test', $user1->email);
|
||||||
|
$members = Member::all();
|
||||||
|
$this->assertCount(1, $members);
|
||||||
|
$member1 = $members->firstWhere('user_id', $user1->getKey());
|
||||||
|
$this->assertNotNull($member1);
|
||||||
|
$this->assertSame(Role::Placeholder->value, $member1->role);
|
||||||
$clients = Client::all();
|
$clients = Client::all();
|
||||||
$this->assertCount(1, $clients);
|
$this->assertCount(1, $clients);
|
||||||
$client1 = $clients->firstWhere('name', 'Big Company');
|
$client1 = $clients->firstWhere('name', 'Big Company');
|
||||||
|
|||||||
Reference in New Issue
Block a user