]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6744 @5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 22 Feb 2024 15:07:41 +0000 (16:07 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 22 Feb 2024 15:07:41 +0000 (16:07 +0100)
app/Http/Controllers/Admin/Operations/TeamLeave/ICSOperation.php
app/Models/FluidbookPublication.php
app/Widgets.php
resources/views/list/widget.blade.php [new file with mode: 0644]
resources/views/vendor/backpack/base/dashboard.blade.php
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/create_us.blade.php

index fc493c2768f3ef8e7e404eea83cc70af62872e14..5cf0e0a303af35cc78baf07b12fc1da113cb1c32 100644 (file)
@@ -19,25 +19,44 @@ trait ICSOperation
 {
     protected function setupICSRoutes($segment, $routeName, $controller)
     {
-        Route::match(['get'], $segment . '/ics', $controller . '@ics')->middleware([CORSMiddleware::class])->withoutMiddleware([VerifyCsrfToken::class, Authenticate::class, CheckIfAdmin::class]);
+        Route::match(['get'], $segment . '/ics/{user?}', $controller . '@ics')->middleware([CORSMiddleware::class])->withoutMiddleware([VerifyCsrfToken::class, Authenticate::class, CheckIfAdmin::class]);
     }
 
-    protected function ics()
+    protected function ics($user = null)
     {
         $calendar = new Calendar();
         $calendar->setProdId('FluidbookToolbox');
         $calendar->setTimezone(new \DateTimeZone('Europe/Paris'));
-        $calendar->setName('Planning Vacances');
+
 
         $users = [];
 
-        foreach (TeamLeave::where('public', '1')->get() as $leave) {
+        $q = TeamLeave::withoutGlobalScopes();
+        if (null === $user) {
+            $q->where('public', '1');
+            $calendar->setName(__('Planning Vacances'));
+        } else {
+            if (!isset($users[$user])) {
+                $users[$user] = User::withoutGlobalScopes()->find($user);
+            }
+            $q->where('worker', $user);
+            $calendar->setName(__('Planning Vacances') . ' ' . $users[$user]->firstname);
+        }
+
+
+        foreach ($q->get() as $leave) {
             if (!isset($users[$leave->worker])) {
                 $users[$leave->worker] = User::withoutGlobalScopes()->find($leave->worker);
             }
             /** @var User $user */
             $user = $users[$leave->worker];
 
+            if (null === $user) {
+                $summary = $user->firstname;
+            } else {
+                $summary = __('Congés');
+            }
+
             /** @var $leave TeamLeave */
             $event = new CalendarEvent();
             $event
@@ -46,7 +65,7 @@ trait ICSOperation
                 ->setColor($user->planning_color)
                 ->setDescription('test')
                 ->setAllDay(true)
-                ->setSummary($user->firstname)
+                ->setSummary($summary)
                 ->setUid('cubedesigners-toolbox-holidays-' . $leave->id);
 
             $calendar->addEvent($event);
index 7619310cab23fb310bcef39fff03574ca8cdc0d8..310afa9d2ab70d5b807e934c9ac722de97187f06 100644 (file)
@@ -174,7 +174,12 @@ class FluidbookPublication extends ToolboxStatusModel
             'owner_company_name' => __('Propriétaire'),
             'owner_name' => __('Propriétaire'),
             'invoicable' => __('Utilisateur facturable'),
-            'invoicable_company' => __('Facturation'),
+            'invoicable_company' => [
+                'label' => __('Facturation'),
+                'filter' => true,
+                'filter_type' => 'select2',
+                'filter_values' => Permissions::getAllInvoicableCompanies(),
+            ],
             'extranet_project' => __('Project extranet'),
         ];
 
index 8028924fe4f6e49c3823155d6bcb77d74a3dd2be..1a8696218148132c98a18c6bf190dd99fd9903b2 100644 (file)
@@ -4,6 +4,7 @@
 namespace App;
 
 
+use App\Models\FluidbookPublication;
 use App\Models\FluidbookQuote;
 use Backpack\CRUD\app\Library\Widget;
 
@@ -62,9 +63,8 @@ class Widgets
     {
         $notifications = backpack_user()->notifications->slice(0, 10);
         if (count($notifications)) {
-
             Widget::add([
-                'name'=>'notifications',
+                'name' => 'notifications',
                 'type' => 'view',
                 'view' => 'tasks.list',
                 'wrapper' => $wrapper,
@@ -72,7 +72,20 @@ class Widgets
                 'heading' => $heading,
                 'notifications' => $notifications,
             ]);
+        }
+    }
 
+    public static function userWidgets($wrapper = null, $class = '', $heading = '')
+    {
+        if (can('fluidbook-publication:admin')) {
+            Widget::add([
+                'name' => 'user_1',
+                'type' => 'view',
+                'view' => 'list.widget',
+                'heading' => 'StudioFrance',
+                'model' => FluidbookPublication::class,
+                'filters' => ['status' => 2, 'invoicable_company' => 1509],
+            ]);
         }
     }
 }
diff --git a/resources/views/list/widget.blade.php b/resources/views/list/widget.blade.php
new file mode 100644 (file)
index 0000000..e69de29
index db8e3d162c94e0fd6b60f570c25f0ebb8305eb6b..f18fb7b825808cdc2758a44a1fa7c86097359c5d 100644 (file)
@@ -5,6 +5,6 @@
     \App\Widgets::fluidbookQuoteWidgets();
     \App\Widgets::notificationsWidget(['class' => 'col-sm-8 dashboard-wrapper'],'dashboard',__('Notifications'));
     \App\Widgets::teamWidgets(['class' => 'col-sm-4 dashboard-wrapper'],'dashboard',__('Planning de l\'équipe'));
-
+    \App\Widgets::userWidgets([],'dashboard');
 @endphp
 
index 8545f011bd4d7dc337f48f22392e235f3b93cffa..0906bcf7683480f6ac89e5cc8245a27829ce0c8f 100644 (file)
@@ -1,4 +1,4 @@
-@if ($crud->hasAccess('create'))
+@if (can('fluidbook-publication:us'))
     <a href="{{ url($crud->route.'/create/US') }}" class="btn btn-primary" data-style="zoom-in"><span
             class="ladda-label"><i class="las la-flag-usa"></i> {{__('Créer une publication hébergée aux USA')}}</span></a>
 @endif