]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6571 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 29 Dec 2023 17:37:30 +0000 (18:37 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 29 Dec 2023 17:37:30 +0000 (18:37 +0100)
app/Http/Controllers/Admin/ElearningTranslateCrudController.php
app/Http/Controllers/Admin/FluidbookPublicationCrudController.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/InvoiceOperation.php [deleted file]
app/Http/Controllers/Admin/Operations/InvoiceOperation.php [new file with mode: 0644]
app/Http/Controllers/Admin/QuizThemeCrudController.php
app/Http/Controllers/Admin/ToolboxTranslateCrudController.php
app/Http/Controllers/Admin/TranslateCrudController.php
app/Models/FluidbookPublication.php
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/invoice.blade.php [deleted file]
resources/views/vendor/backpack/crud/buttons/invoice.blade.php [new file with mode: 0644]

index 78c1833fc8aaff806204956dde2de10eb3c4885a..22748090bcfb2a5583a2afddc607def0fd524f1d 100644 (file)
@@ -14,7 +14,7 @@ class ElearningTranslateCrudController extends \Cubist\Backpack\Magic\Controller
        use \Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation;
        use \App\Http\Controllers\Admin\Operations\ContentTranslate\ExcelExportOperation;
        use \App\Http\Controllers\Admin\Operations\ContentTranslate\ExcelImportOperation;
-
+       
 
 
     /*
index 35919e481674dea3ac9483655a520ffbc1ae3e8c..185f4b9763535f3db2cf318a39b9022471a658e4 100644 (file)
@@ -18,6 +18,7 @@ class FluidbookPublicationCrudController extends \Cubist\Backpack\Magic\Controll
        use \App\Http\Controllers\Admin\Operations\FluidbookPublication\EditOperation;
        use \App\Http\Controllers\Admin\Operations\ChangeownerOperation;
        use \App\Http\Controllers\Admin\Operations\ChangestatusOperation;
+       use \App\Http\Controllers\Admin\Operations\InvoiceOperation;
        use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\SocialImageOperation;
        use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\ExportPdfOperation;
        use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\BastideOperation;
diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/InvoiceOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/InvoiceOperation.php
deleted file mode 100644 (file)
index 658a830..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
-
-use Illuminate\Support\Facades\Route;
-
-trait InvoiceOperation
-{
-    protected function setupInvoiceRoutes($segment, $routeName, $controller)
-    {
-        Route::match(['get'], $segment . '/{id}/invoice', $controller . '@invoiceItem');
-    }
-
-    protected function setupInvoiceDefaults()
-    {
-        $this->crud->addButtonFromView('line', 'invoice', 'fluidbook_publication.invoice', 'end');
-    }
-
-    protected function invoiceItem($id)
-    {
-
-    }
-}
diff --git a/app/Http/Controllers/Admin/Operations/InvoiceOperation.php b/app/Http/Controllers/Admin/Operations/InvoiceOperation.php
new file mode 100644 (file)
index 0000000..8116fa3
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations;
+
+use Illuminate\Support\Facades\Route;
+
+trait InvoiceOperation
+{
+    protected function setupInvoiceRoutes($segment, $routeName, $controller)
+    {
+        Route::match(['get'], $segment . '/{id}/invoice', $controller . '@invoiceItem');
+    }
+
+    protected function setupInvoiceDefaults()
+    {
+        $this->crud->addButtonFromView('line', 'invoice', 'invoice', 'end');
+    }
+
+    protected function invoiceItem($id)
+    {
+
+    }
+}
index 5581dbf14dbe84cc1c5ad33facecfb2d4d87f81c..39f3d9c58557db79de92c71049f590e28ee3c2dd 100644 (file)
@@ -10,6 +10,8 @@ class QuizThemeCrudController extends \Cubist\Backpack\Magic\Controllers\CubistM
        use \Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation;
        use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
        use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation;
+       use \App\Http\Controllers\Admin\Operations\QuizTheme\PreviewOperation;
+       use \App\Http\Controllers\Admin\Operations\ChangeownerOperation;
        
 
 
index dc09f9a3e432933e84ddfde7b1cfa9cd9fa75aa7..df5b82d852d41658130268058217aeae081893f5 100644 (file)
@@ -13,6 +13,8 @@ class ToolboxTranslateCrudController extends \Cubist\Backpack\Magic\Controllers\
        use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
        use \Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation;
        use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation;
+       use \App\Http\Controllers\Admin\Operations\ContentTranslate\ExcelExportOperation;
+       use \App\Http\Controllers\Admin\Operations\ContentTranslate\ExcelImportOperation;
        
 
 
index 9764a9c919da6a2ba122f8615005478a5cd6c411..613b33a4807671e992b94b5acf72b45691d6c845 100644 (file)
@@ -13,6 +13,8 @@ class TranslateCrudController extends \Cubist\Backpack\Magic\Controllers\CubistM
        use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
        use \Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation;
        use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation;
+       use \App\Http\Controllers\Admin\Operations\ContentTranslate\ExcelExportOperation;
+       use \App\Http\Controllers\Admin\Operations\ContentTranslate\ExcelImportOperation;
        
 
 
@@ -21,7 +23,7 @@ class TranslateCrudController extends \Cubist\Backpack\Magic\Controllers\CubistM
        __('traductions')
        */
 
-    protected $_modelNamespace = 'App\Models\Base\ToolboxContentTranslate';
+    protected $_modelNamespace = 'App\Models\Base\ToolboxBaseTranslate';
     protected $_routeURL = 'translate';
     protected $_singular = 'traduction';
     protected $_plural = 'traductions';
index 52b41b7c956d28a1e547a9ad3dae8803887662b6..56e73d6637697e71364cfa5d6c96941f6b18e1e7 100644 (file)
@@ -25,7 +25,6 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\CreateOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\DeletefbOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\DownloadOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\EditOperation;
-use App\Http\Controllers\Admin\Operations\FluidbookPublication\InvoiceOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\LinksOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\PreviewOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\BastideOperation;
@@ -34,6 +33,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\SocialIm
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\UpgradeOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\YSLOperation;
+use App\Http\Controllers\Admin\Operations\InvoiceOperation;
 use App\Jobs\FluidbookImagesPreprocess;
 use App\Jobs\FluidbookSocialImage;
 use App\Jobs\GenerateDeliveryThumbnailsPreview;
@@ -46,6 +46,7 @@ use App\Models\Traits\SCORMVersionTrait;
 use App\Models\Traits\ToolboxSettings;
 use App\Slack\Slack;
 use App\SubForms\Link\Base;
+use Cubedesigners\UserDatabase\Permissions;
 use Cubist\Backpack\Magic\Fields\Checkbox;
 use Cubist\Backpack\Magic\Fields\FormBigSection;
 use Cubist\Backpack\Magic\Fields\FormSuperSection;
@@ -200,7 +201,7 @@ class FluidbookPublication extends ToolboxStatusModel
 
         $this->addField('extranet_task', FluidbookExtranetTask::class, __('Tâche de l\'extranet'), [
             'can' => 'fluidbook-publication:admin',
-            'when' => ['status' => 3]
+            'when' => ['status' => 3, 'invoicable_company' => ['values' => [7], 'operator' => '!=']]
         ]);
 
         $this->addField('project_manager', FluidbookProjectManager::class, __('Chef de projet'), [
@@ -243,8 +244,6 @@ class FluidbookPublication extends ToolboxStatusModel
         $this->addField('composition_updated_at', Datetime::class, __('Dernière modification de la composition'), ['read_only' => true]);
         $this->addField('status_date', Datetime::class, __('Date de changement de status'), ['read_only' => true]);
         $this->addField('version', Hidden::class, 'Version', ['column' => true, 'default' => 3, 'databaseDefault' => 3, 'column_label' => '<i class="las la-code-branch" title="' . __('Version du Fluidbook') . '"></i>']);
-
-
     }
 
     protected function _normalizeComposition($c)
@@ -344,16 +343,19 @@ class FluidbookPublication extends ToolboxStatusModel
                 throw new \Exception('User ' . $this->owner . ' should be assign to a company');
             }
 
+            $invoicable_company_id = Permissions::getInvoicableCompany($owner->company);
+            $invoicable_company = Company::withoutGlobalScopes()->find($invoicable_company_id);
+
             $this->admin = $company->admin;
-            $this->super_admin = '';
+            $this->super_admin = $invoicable_company->admin;
             $this->owner_company_name = $company->company_with_name;
             $this->owner_name = $owner->name;
+            $this->invoicable_company = $invoicable_company_id;
 
         } else {
             Log::warning('Fluidbook ' . $this->id . ' has no owner : ' . $this->owner);
         }
-        $this->invoicable = '';
-        $this->invoicable_company = '';
+
         $this->extranet_project = '';
 
         $this->c_title = $this->title;
diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/invoice.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/invoice.blade.php
deleted file mode 100644 (file)
index c33e5af..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{{-- __('!! Paramètres des fluidbooks') --}}
-@if($entry->status<3 && $entry->status>0 && $entry->canAdmin(backpack_user()))
-
-    <a class="btn btn-sm btn-link" href="{{ route('stats', ['fluidbook_id' => $entry->id, 'hash' => $entry->hash]) }}"
-       data-toggle="tooltip"
-       title="{{__('Facturer')}}"><i class="las la-money-check-alt"></i> {{__('Facturer')}}
-    </a>
-@endif
diff --git a/resources/views/vendor/backpack/crud/buttons/invoice.blade.php b/resources/views/vendor/backpack/crud/buttons/invoice.blade.php
new file mode 100644 (file)
index 0000000..b589a84
--- /dev/null
@@ -0,0 +1,60 @@
+{{-- __('!! Paramètres des fluidbooks') --}}
+@if($entry->status<3 && $entry->status>0 && $entry->canAdmin(backpack_user()))
+
+    <a class="btn btn-sm btn-link" class="invoice" href="#"
+       data-toggle="tooltip"
+       title="{{__('Facturer')}}"><i class="las la-money-check-alt"></i> {{__('Facturer')}}
+    </a>
+@endif
+
+
+@if(!isset($crud->seenInvoice))
+    @php
+        $crud->seenInvoice=true;
+       // $crud->ajaxOwnerList=\Cubist\Backpack\Magic\Fields\SelectFromArray::hashOptions($column['options']);
+    @endphp
+    <style>
+        .select2-dropdown {
+            z-index: 10000;
+        }
+    </style>
+    <script>
+        $(document).on('click', ".invoice", function () {
+            var a = $(this);
+            Swal.fire({
+                title: '{{__('Facturer')}}',
+                html: $(a).closest('span').find('.invoice_container').html(),
+                confirmButtonColor: '#467fcf',
+                confirmButtonText: '{{__('Valider')}}',
+                showCancelButton: true,
+                cancelButtonText: '{{__('Annuler')}}',
+                cancelButtonColor: '#f1ecec',
+                cancelButtonTextColor: '#000000',
+                focusConfirm: false,
+                didOpen: function () {
+                    let select = $(Swal.getHtmlContainer()).find('select');
+                    $(select).select2({
+                        theme: 'bootstrap',
+                        ajax: {
+                            url: '{{backpack_url('select2')}}' + '/' + $(select).data('ajax'),
+                            dataType: 'json'
+                        },
+                        escapeMarkup: function (m) {
+                            return m;
+                        }
+                    });
+                },
+                didDestroy: function () {
+                    let select = $(Swal.getHtmlContainer()).find('select');
+                    $(select).select2('destroy');
+                },
+            }).then((result) => {
+                if (result.isConfirmed) {
+                    let select = $(Swal.getHtmlContainer()).find('select');
+                    window.location = '{{backpack_url($entry->getOption('name'))}}/' + $(a).data('entry-id') + '/invoice/' + select.val();
+                }
+            });
+            return false;
+        });
+    </script>
+@endif