]> _ Git - fluidbook-toolbox.git/commitdiff
wait #5627 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 6 Dec 2022 07:18:15 +0000 (08:18 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 6 Dec 2022 07:18:15 +0000 (08:18 +0100)
.docker/images/php/Dockerfile
app/Http/Controllers/Admin/TeamPayController.php
resources/views/team/pay.blade.php
resources/views/tools/sidebar.blade.php
resources/views/vendor/backpack/base/inc/sidebar_content.blade.php
resources/views/vendor/backpack/crud/buttons/user/loginas.blade.php
routes/web.php

index abdbe2ea35373f79db2fce07998c22f4f3cdd795..7a3072f059404b9eee4c40bf87f13838e83afbb5 100644 (file)
@@ -24,7 +24,7 @@ RUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu jammy main" > /etc/apt/
         && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
 
 RUN apt-get update && apt-get -y --no-install-recommends install \
-        git \
+        git git-restore-mtime \
         php8.1-fpm \
         php8.1-apcu \
         php8.1-cli \
index 12092fbbcadc4b2077c73a3aa05b4bf52c1f725e..b9893e45a22a7880571f55fe1c1b503327c5996c 100644 (file)
@@ -7,7 +7,9 @@ namespace App\Http\Controllers\Admin;
 use App\Http\Controllers\Admin\Operations\Tools\Excel2JSON;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Admin\Operations\Tools\SASSCompiler;
+use App\Models\User;
 use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
+use Cubist\Util\CommandLine\Git;
 use Cubist\Util\Files\Files;
 
 class TeamPayController extends Controller
@@ -18,32 +20,48 @@ class TeamPayController extends Controller
         return view('team.pay', ['slips' => $this->getSlips()]);
     }
 
-    protected function download($year, $month)
+    protected function download($oxygene, $year, $month)
     {
+        if (!can('team-pay:admin') && $oxygene !== backpack_user()->oxygene) {
+            abort(404);
+        }
         $slips = $this->getSlips();
-        if (isset($slips[$year . $month])) {
-            return XSendFileController::sendfile($slips[$year . $month]['path']);
+        if (isset($slips[$year . $month . $oxygene])) {
+            return XSendFileController::sendfile($slips[$year . $month . $oxygene]['path']);
         }
+        abort(404);
     }
 
-    protected function getSlips()
+    protected function getSlips($id = null)
     {
+
+
         $res = [];
-        $id = backpack_user()->oxygene;
-        if (!$id) {
-            return $res;
+        if (null === $id) {
+            if (can('team-pay:admin')) {
+                $id = 'all';
+            } else {
+                $id = backpack_user()->oxygene;
+            }
+            if (!$id) {
+                return $res;
+            }
         }
+
+        $names = $this->_getSlipNames();
+
         $path = resource_path('cubedesigners-oxygene');
-        `cd $path;git pull`;
+        Git::pull($path, true);
         $slipsRoot = $path . '/PAIE/CUBE.$SO/BulletinsPDF';
         $iterator = Files::getRecursiveDirectoryIterator($slipsRoot);
         foreach ($iterator as $item) {
             /** @var $item \SplFileInfo */
             $n = $item->getFilename();
-            if ($item->getExtension() === 'pdf' && str_starts_with($n, $id)) {
+            if ($item->getExtension() === 'pdf' && ($id === 'all' || str_starts_with($n, $id))) {
                 $year = substr($n, 4, 4);
                 $month = substr($n, 8, 2);
-                $res[$year . $month] = ['path' => $item->getPathname(), 'year' => $year, 'month' => $month];
+                $oxygene = substr($n, 0, 3);
+                $res[$year . $month . $oxygene] = ['name' => $names[$oxygene], 'oxygene' => $oxygene, 'path' => $item->getPathname(), 'updated' => $item->getMTime(), 'year' => $year, 'month' => $month];
             }
         }
         krsort($res);
@@ -51,5 +69,14 @@ class TeamPayController extends Controller
 
     }
 
+    protected function _getSlipNames()
+    {
+        $users = User::withoutGlobalScopes()->where('oxygene', '!=', '')->get();
+        $res = [];
+        foreach ($users as $user) {
+            $res[$user->oxygene] = $user->name;
+        }
+        return $res;
+    }
 
 }
index b8d9a4181c21faa579585f2c7d570257d38b9e21..97567c579e21a5f0bdaa3140102e9853398411b9 100644 (file)
@@ -7,13 +7,16 @@
         }
     </style>
     <h2 style="margin-top: 50px">{{__('Bulletins de salaire')}}</h2>
-    <table id="crudTable" style="max-width: 400px"
+    <table id="crudTable" style="max-width: 600px"
            class="bg-white table table-striped table-hover nowrap rounded shadow-xs border-xs mt-2 dataTable dtr-inline">
         <thead>
         <tr role="row">
             <th></th>
-            <th>{{__('Année')}}</th>
-            <th>{{__('Mois')}}</th>
+            <th>{{__('Bulletin')}}</th>
+            @can('team-pay:admin')
+                <th>{{__('Salarié')}}</th>
+            @endcan
+            <th>{{__('Mise à jour')}}</th>
             <th>{{__('Télécharger')}}</th>
             <th></th>
         </tr>
         @foreach($slips as $id=>$slip)
             <tr role="row">
                 <td></td>
-                <td><span>{{$slip['year']}}</span></td>
-                <td><span>{{$slip['month']}}</span></td>
-                <td><a class="btn btn-link btn-sm" href="{{url('team-pay/'.$slip['year'].'/'.$slip['month'])}}"
-                       download="{{$slip['year'].'-'.$slip['month'].'.pdf'}}"><i
-                            class="la la-arrow-circle-down"></i> {{__('Télécharger')}}</a>
+                <td><span>{{$slip['year']}}-{{$slip['month']}}</span></td>
+                @can('team-pay:admin')
+                    <td><span>{{$slip['name']}}</span></td>
+                @endcan
+                <td><span>{{date('d/m/Y H:i',$slip['updated'])}}</span></td>
+                <td><a class="btn btn-link btn-sm" target="_blank"
+                       href="{{url('team-pay/'.$slip['oxygene'].'-'.$slip['year'].'-'.$slip['month'].'.pdf')}}">
+                        <i class="la la-arrow-circle-down"></i> {{__('Télécharger')}}</a>
                 </td>
                 <td></td>
             </tr>
index 9d56fae9ec29fb70d37c79d96daec67563d656b7..59122688f99f3a7e4635bc74d36f8c67347552da 100644 (file)
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/favicongen') }}'><i
                 class='nav-icon las la-icons'></i>
             <span>{{__('Générer des favicons')}}</span></a></li>
-    <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tool-sprite') }}'><i class="las la-marker"></i>
+    <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tool-sprite') }}'><i class="nav-icon las la-marker"></i>
             <span>{{__('SVG Sprites')}}</span></a></li>
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('opentools/sasscompiler') }}'><i
-                class="lab la-sass"></i>
+                class="nav-icon lab la-sass"></i>
             <span>{{__('Compileur SASS')}}</span></a></li>
 
 </ul>
index c8e1be1ecb32155258feb244b72cf8f658152f30..116edc77f05d02286842cf15d0384a6c4bc5a0d0 100644 (file)
             @can('extranet:manage_emails')
                 <li class="nav-item"><a class="nav-link"
                                         href='{{ backpack_url('team-emails') }}'><i
-                            class='la la-mail-bulk'></i>
+                            class='nav-icon la la-mail-bulk'></i>
                         <span>{{__('Emails')}}</span></a>
                 </li>
             @endcan
+            @can('team-pay:read')
+                <li class="nav-item"><a class="nav-link"
+                                        href='{{ backpack_url('team-pay') }}'><i class="nav-icon las la-file-invoice-dollar"></i>
+                        <span>{{__('Bulletins de salaire')}}</span></a>
+                </li>
+            @endcan
             @can('team-leave:read')
                 <li class="nav-item"><a class="nav-link"
                                         href='{{ backpack_url('team-leave') }}'><i
-                            class="las la-umbrella-beach"></i></i>
+                            class="nav-icon las la-umbrella-beach"></i>
                         <span>{{__('Congés et absences')}}</span></a>
                 </li>
             @endcan
             @can('team-overtime:read')
                 <li class="nav-item"><a class="nav-link"
-                                        href='{{ backpack_url('team-overtime') }}'><i class="las la-stopwatch"></i></i>
+                                        href='{{ backpack_url('team-overtime') }}'><i class="nav-icon las la-stopwatch"></i>
                         <span>{{__('Heures supp')}}</span></a>
                 </li>
             @endcan
index f7ec6d46230e5c6d793c49f019d6a3293e391f14..5e92907dde7679723894969be97b3f6b16c5784a 100644 (file)
@@ -1,2 +1,4 @@
-<a class="btn btn-sm btn-link" href="{{$crud->route}}/{{$entry->getKey()}}/loginas" data-toggle="tooltip"
-   title="{{__('Se connecter comme')}}"><i class="la la-key"></i> {{__('Se connecter comme')}}</a>
+@if(backpack_user()->isOwner($entry))
+    <a class="btn btn-sm btn-link" href="{{$crud->route}}/{{$entry->getKey()}}/loginas" data-toggle="tooltip"
+       title="{{__('Se connecter comme')}}"><i class="la la-key"></i> {{__('Se connecter comme')}}</a>
+@endif
index e20597abbbd634868de78894e905c5ae0699ead1..079110f27f98ec0d949fae52b29da03b519cb147 100644 (file)
@@ -12,7 +12,7 @@ Route::group([
 ], function () { // custom admin routes
     Route::any('tools/{tool}/{args?}', 'ToolsController@index')->where(['args' => '.*']);
     Route::any('team-pay', 'TeamPayController@index');
-    Route::any('team-pay/{year}/{month}', 'TeamPayController@download');
+    Route::any('team-pay/{oxygene}-{year}-{month}.pdf', 'TeamPayController@download');
     Route::any('team-pay/{year}/fiscal', 'TeamPayController@downloadFiscal');
     Route::any('opentools/{tool}/{args?}', 'OpenToolsController@index')->where(['args' => '.*'])->withoutMiddleware([CheckIfAdmin::class, VerifyCsrfToken::class]);
     Route::any('maintenance/{function}/{args?}', 'MaintenanceController@index')->where(['args' => '.*']);