mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 14:29:34 +00:00
53 lines
1.3 KiB
PHP
53 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Karat;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Support\Arr;
|
|
use Illuminate\Support\Collection;
|
|
|
|
class KaratService
|
|
{
|
|
private Api $api;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->api = new Api();
|
|
}
|
|
|
|
public function syncUsers()
|
|
{
|
|
$karatUsers = \App\Services\Karat\User::all();
|
|
$dbUsers = User::all();
|
|
|
|
$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();
|
|
|
|
}
|
|
|
|
|
|
}
|