<?php
namespace QxCMS\Modules\Likod\Repositories\Settings\Users;
use Illuminate\Support\Arr;
use QxCMS\Modules\AbstractRepository;
use QxCMS\Modules\Likod\Repositories\Settings\Users\UserRepositoryInterface;
use QxCMS\Modules\Likod\User;
use QxCMS\Modules\Likod\Models\Settings\Roles\Role;
class UserRepository extends AbstractRepository implements UserRepositoryInterface
{
protected $model;
protected $role;
function __construct(User $model, Role $role)
{
$this->model = $model;
$this->role = $role;
}
public function create(array $request)
{
$user = $this->model->fill($this->makeUser($request));
$user->save();
return $user;
}
public function getUsersWithRole($columns = ['*'])
{
$users = $this->model->select($columns)->with('role');
return $users;
}
public function update($id, array $request)
{
$user = $this->findById($id);
$user->fill($this->changePassword($request));
return $this->affectedRows($user);
}
public function affectedRows(User $user)
{
if(count($user->getDirty()) > 0) {
$user->save();
session()->flash('success', 'Successfully updated.');
}
return $user;
}
public function makeUser(array $request)
{
return $request;
}
public function changePassword(array $request)
{
$confirm_password = $request['password_confirmation'];
if(!empty($confirm_password)) {
$request['password'] = bcrypt($confirm_password);
return $request;
}
return Arr::except($request, ['password_confirmation','password']);
}
public function getRoleLists($role_id = 1)
{
if($role_id == 1) return $this->role->pluck('name', 'id');
return $this->role->where('id', '<>', 1)->pluck('name', 'id');
}
public function delete($id)
{
$user = $this->findById($id);
$user->delete();
return true;
}
}