namespace Cubedesigners\UserDatabase\Models;
use Cubedesigners\UserDatabase\Fields\Users;
+use Cubedesigners\UserDatabase\Permissions;
use Cubedesigners\UserDatabase\SubForms\Address;
use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
use Illuminate\Database\Eloquent\Builder;
$this->addField([
'name' => 'users',
'type' => Users::class,
- 'label' => '',
+ 'label' => 'Contacts',
'column' => true,
'tab' => __('Contacts'),
]);
$builder->whereIn('id', $bu->getManagedCompanies());
}
+ public function getUsers()
+ {
+ return Permissions::getNames(Permissions::getUsersByCompany($this->id));
+ }
+
}
'singular' => 'utilisateur',
'plural' => 'utilisateurs'];
- protected $_operations = ['\Cubedesigners\UserDatabase\Operations\LoginasOperation'];
+ protected $_operations = ['\Cubedesigners\UserDatabase\Operations\LoginasOperation','\Cubedesigners\UserDatabase\Operations\CreateFromCompany'];
protected $_managedUsers = null;
protected $_managedCompanies = null;
--- /dev/null
+<?php
+
+namespace Cubedesigners\UserDatabase\Operations;
+
+use Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation;
+use Cubedesigners\UserDatabase\Models\Company;
+use Cubedesigners\UserDatabase\Models\User;
+use Illuminate\Support\Facades\Route;
+
+trait CreateFromCompany
+{
+ protected function setupCreateFromCompanyRoutes($segment, $routeName, $controller)
+ {
+ Route::get($segment . '/createfromcompany/{id}', [
+ 'as' => $routeName . '.createfromcompany',
+ 'uses' => $controller . '@createFromCompany',
+ 'operation' => 'create',
+ ]);
+ }
+
+ public function createFromCompany($id)
+ {
+ $this->crud->hasAccessOrFail('create');
+
+ // prepare the fields you need to show
+ $this->data['crud'] = $this->crud;
+ $this->data['saveAction'] = $this->crud->getSaveAction();
+ $this->data['title'] = $this->crud->getTitle() ?? trans('backpack::crud.add') . ' ' . $this->crud->entity_name;
+
+ $company = Company::find($id);
+ dd($this->data);
+
+ // load the view from /resources/views/vendor/backpack/crud/ if it exists, otherwise load the one in the package
+ return view($this->crud->getCreateView(), $this->data);
+ }
+
+}
$cacheKey = 'cubedesigners_userdatabase_permissions_data';
\Barryvdh\Debugbar\Facade::startMeasure($cacheKey, 'Build permissions tree');
- self::$_data = cache()->remember($cacheKey, 86400, function () {
+ self::$_data = cache()->tags(['model_' . Company::class, 'model_' . User::class])->remember($cacheKey, 86400, function () {
set_time_limit(0);
'companyManagedBy' => [],
'managedCompanies' => [],
'managedUsers' => [],
+ 'userNames' => [],
];
foreach (User::withoutGlobalScopes()->get() as $user) {
$data['companyUsers'][$user->company][] = $user->id;
$data['usersCompany'][$user->id] = $user->company;
+ $data['userNames'][$user->id] = $user->name;
}
foreach (Company::withoutGlobalScopes()->get() as $company) {
return [];
}
+ public static function getNames($ids)
+ {
+ $data = self::_getData();
+ $res = [];
+ foreach ($ids as $id) {
+ if (isset($data['userNames'][$id])) {
+ $res[$id] = $data['userNames'][$id];
+ }
+ }
+ return $res;
+ }
+
/**
* @param $user integer
-<?php
+{{-- regular object attribute --}}
+@php
+ $c=[];
+ foreach ($entry->getUsers() as $id=>$name) {
+ $c[]='<a data-featherlight="iframe" data-featherlight-iframe-style="display:block;width:85vw;height:85vh;" href="'.backpack_url('users/'.$id.'/edit?embeded=1').'">'.$name.'</a>';
+ }
+@endphp
+
+<span>
+ @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start')
+ <span class="textarea-value">{!! implode(', ',$c) !!}</span>
+ @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end')
+</span>
-<?php
+{{-- regular object attribute --}}
+<div class="company-userlist">
+ <div class="add">
+ <a data-featherlight="iframe" data-featherlight-iframe-style="display:block;width:85vw;height:85vh;"
+ href="{!! backpack_url('users/createfromcompany/'.$entry->id.'?embeded=1') !!}" class="btn btn-light btn-small"><i class="la la-plus"></i> {{__('Ajouter un contact')}}</a>
+ </div>
+ <table>
+ @foreach($entry->getUsers() as $id=>$name)
+ <tr>
+ <td>{{$id}}</td>
+ <td>{{$name}}</td>
+ <td><a data-featherlight="iframe" data-featherlight-iframe-style="display:block;width:85vw;height:85vh;"
+ href="{!! backpack_url('users/'.$id.'/edit?embeded=1') !!}">{{__('Modifier')}}</a></td>
+ </tr>
+ @endforeach
+ </table>
+</div>
+@push('crud_fields_styles')
+
+@endpush