invoiceninja/app/Ninja/Datatables/UserDatatable.php

96 lines
2.8 KiB
PHP
Raw Normal View History

2017-01-30 21:40:43 +02:00
<?php
namespace App\Ninja\Datatables;
2016-05-23 19:52:20 +03:00
use URL;
class UserDatatable extends EntityDatatable
{
public $entityType = ENTITY_USER;
public function columns()
{
return [
[
'first_name',
function ($model) {
2017-08-04 16:39:11 +03:00
return $model->public_id ? link_to('users/'.$model->public_id.'/edit', $model->first_name.' '.$model->last_name)->toHtml() : e($model->first_name.' '.$model->last_name);
2017-01-30 21:40:43 +02:00
},
2016-05-23 19:52:20 +03:00
],
[
'email',
function ($model) {
return $model->email;
2017-01-30 21:40:43 +02:00
},
2016-05-23 19:52:20 +03:00
],
[
'confirmed',
function ($model) {
2017-01-30 21:40:43 +02:00
if (! $model->public_id) {
2016-05-23 19:52:20 +03:00
return self::getStatusLabel(USER_STATE_OWNER);
} elseif ($model->deleted_at) {
return self::getStatusLabel(USER_STATE_DISABLED);
} elseif ($model->confirmed) {
2017-01-30 18:05:31 +02:00
if ($model->is_admin) {
2016-05-23 19:52:20 +03:00
return self::getStatusLabel(USER_STATE_ADMIN);
} else {
return self::getStatusLabel(USER_STATE_ACTIVE);
}
} else {
return self::getStatusLabel(USER_STATE_PENDING);
}
2017-01-30 21:40:43 +02:00
},
2016-05-23 19:52:20 +03:00
],
];
}
public function actions()
{
return [
[
uctrans('texts.edit_user'),
function ($model) {
return URL::to("users/{$model->public_id}/edit");
},
function ($model) {
return $model->public_id;
2017-01-30 21:40:43 +02:00
},
2016-05-23 19:52:20 +03:00
],
[
uctrans('texts.send_invite'),
function ($model) {
return URL::to("send_confirmation/{$model->public_id}");
},
function ($model) {
return $model->public_id && ! $model->confirmed;
2017-01-30 21:40:43 +02:00
},
],
2016-05-23 19:52:20 +03:00
];
}
private function getStatusLabel($state)
{
$label = trans("texts.{$state}");
$class = 'default';
switch ($state) {
case USER_STATE_PENDING:
$class = 'default';
break;
case USER_STATE_ACTIVE:
$class = 'info';
break;
case USER_STATE_DISABLED:
$class = 'warning';
break;
case USER_STATE_OWNER:
$class = 'success';
break;
case USER_STATE_ADMIN:
$class = 'primary';
break;
}
2017-01-30 21:40:43 +02:00
2016-05-23 19:52:20 +03:00
return "<h4><div class=\"label label-{$class}\">$label</div></h4>";
}
}