mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 14:29:34 +00:00
no message
This commit is contained in:
1 parent
fc02df862f
commit
3128d3657c
7 files changed
+146
-16
No files matched your search
@@ -31,8 +31,7 @@ class SyncUsersFromKarat extends Command
|
||||
{
|
||||
$karatService = new KaratService();
|
||||
|
||||
dd($karatService->syncUsers());
|
||||
|
||||
$karatService->syncUsers();
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ class User extends Authenticatable
|
||||
'password',
|
||||
];
|
||||
|
||||
protected $guarded = ['id'];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
|
||||
@@ -10,38 +10,38 @@ class Api
|
||||
/**
|
||||
* @var array|mixed
|
||||
*/
|
||||
private mixed $username;
|
||||
private static mixed $username;
|
||||
/**
|
||||
* @var array|mixed
|
||||
*/
|
||||
private mixed $password;
|
||||
private static mixed $password;
|
||||
/**
|
||||
* @var array|mixed
|
||||
*/
|
||||
private mixed $endpoint;
|
||||
private static mixed $endpoint;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->username = Config::get('services.karat.username');
|
||||
$this->password = Config::get('services.karat.password');
|
||||
$this->endpoint = Config::get('services.karat.endpoint');
|
||||
self::$username = Config::get('services.karat.username');
|
||||
self::$password = Config::get('services.karat.password');
|
||||
self::$endpoint = Config::get('services.karat.endpoint');
|
||||
}
|
||||
|
||||
private function doRequest($command)
|
||||
private static function doRequest($command)
|
||||
{
|
||||
$response = Http::withOptions([
|
||||
'debug' => true,
|
||||
'verify' => false,
|
||||
])->withBasicAuth($this->username, $this->password)
|
||||
->post($this->endpoint, [
|
||||
])->withBasicAuth(self::$username, self::$password)
|
||||
->post(self::$endpoint, [
|
||||
'command' => $command,
|
||||
]);
|
||||
|
||||
return $response->json();
|
||||
}
|
||||
|
||||
public function getUsers()
|
||||
public static function getUsers()
|
||||
{
|
||||
return $this->doRequest('TM_GET_USERS');
|
||||
return self::doRequest('TM_GET_USERS')['users'];
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
namespace App\Services\Karat;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class KaratService
|
||||
{
|
||||
private Api $api;
|
||||
@@ -13,11 +17,35 @@ class KaratService
|
||||
|
||||
public function syncUsers()
|
||||
{
|
||||
$users = $this->api->getUsers();
|
||||
$karatUsers = \App\Services\Karat\User::all();
|
||||
$dbUsers = User::all();
|
||||
|
||||
dd($users);
|
||||
$this->insertUsersFromKarat($karatUsers, $dbUsers);
|
||||
|
||||
$this->removeUsersThatAreNotInKaratAnymore($karatUsers, $dbUsers);
|
||||
}
|
||||
|
||||
private function insertUsersFromKarat(Collection $karatUsers, Collection $dbUsers)
|
||||
{
|
||||
$emailsToSkip = $dbUsers->pluck('email' )->intersect( $karatUsers->pluck('email'));
|
||||
|
||||
$karatUsersToInsert = $karatUsers->reject(function ($item) use ($emailsToSkip) {
|
||||
return $emailsToSkip->contains($item->email);
|
||||
})->map(function ($item) {
|
||||
$array = $item->toArray();
|
||||
|
||||
return $array;
|
||||
});
|
||||
|
||||
User::insert($karatUsersToInsert->toArray());
|
||||
}
|
||||
|
||||
private function removeUsersThatAreNotInKaratAnymore( Collection $karatUsers, Collection $dbUsers )
|
||||
{
|
||||
$emailsInDbThatAreNotInKaratAnymore = $dbUsers->pluck('email' )->diff( $karatUsers->pluck('email'));
|
||||
|
||||
User::whereIn('email', $emailsInDbThatAreNotInKaratAnymore)->delete();
|
||||
|
||||
return $users;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Karat;
|
||||
|
||||
class User extends Api {
|
||||
public $code;
|
||||
public $firstname;
|
||||
public $lastname;
|
||||
public $email;
|
||||
|
||||
public function __construct($code, $firstname, $lastname, $email) {
|
||||
$this->code = $code;
|
||||
$this->firstname = $firstname;
|
||||
$this->lastname = $lastname;
|
||||
$this->email = $email;
|
||||
}
|
||||
|
||||
public static function all() {
|
||||
$users = self::getUsers();
|
||||
|
||||
return collect(array_map(function($user) {
|
||||
return new User( $user['id'], $user['name'], $user['surname'], $user['email'] );
|
||||
}, $users))->reject(function ($item) {
|
||||
// return only if email is not null
|
||||
return $item->email === '';
|
||||
});
|
||||
}
|
||||
|
||||
public function toArray() {
|
||||
return [
|
||||
'code' => $this->code,
|
||||
'firstname' => $this->firstname,
|
||||
'lastname' => $this->lastname,
|
||||
'email' => $this->email,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->float('work_start', 3, 1)->default(9.0)->change();
|
||||
$table->float('work_end', 3, 1)->default(17.0)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->string('password')->nullable()->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
};
|
||||
Reference in new issue
Block a user