]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6260 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 19 Sep 2023 12:09:27 +0000 (14:09 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 19 Sep 2023 12:09:27 +0000 (14:09 +0200)
app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php [new file with mode: 0644]
app/Models/FluidbookPublication.php
app/Models/YSLSurvey.php [new file with mode: 0644]
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/yslreport.blade.php [new file with mode: 0644]

diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php
new file mode 100644 (file)
index 0000000..9173b6d
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
+
+use App\Models\FluidbookPublication;
+use App\Models\YSLSurvey;
+use Cubist\Excel\Excel;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Text;
+use GuzzleHttp\Client;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Route;
+use PhpOffice\PhpSpreadsheet\Exception;
+
+trait YSLOperation
+{
+    protected function setupYSLRoutes($segment, $routeName, $controller)
+    {
+        Route::get($segment . '/{id}/yslreport', [
+            'uses' => $controller . '@yslreport',
+        ]);
+
+        Route::post($segment . '/postyslreport', [
+            'uses' => $controller . '@postyslreport',
+        ]);
+    }
+
+    protected function setupYSLDefaults()
+    {
+
+        if (config('app.env') !== 'ysl') {
+            return;
+        }
+
+        if (!can('fluidbook-publication:write')) {
+            $this->crud->removeButtonFromStack('preview', 'line');
+            $this->crud->removeButtonFromStack('edit', 'line');
+            $this->crud->removeButtonFromStack('download', 'line');
+            $this->crud->removeButtonFromStack('clone', 'line');
+            $this->crud->removeButtonFromStack('upgrade', 'line');
+            $this->crud->removeButtonFromStack('deletefb', 'line');
+        }
+        $this->crud->addButtonFromView('line', 'yslreport', 'fluidbook_publication.yslreport', 'end');
+    }
+
+    /**
+     * @throws Exception
+     */
+    protected function yslreport($id)
+    {
+        if (!FluidbookPublication::hasPermission($id)) {
+            abort(401);
+        }
+
+        $tmp = Files::tempnam() . '.xls';
+
+        $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($id);
+
+        $head = ['Date', 'Page', 'Rating', 'Country', 'Function', 'Suggestions'];
+        // $sql = "SELECT * FROM ysl_survey WHERE fluidbook_id='" . $core->con->escape($bid) . "' ORDER BY date ASC";
+
+        //$r = $core->con->select($sql);
+        $data = [];
+//        while ($r->fetch()) {
+//            $data[] = [date('Y-m-d H:i:s', $r->date), $r->page, $r->rating, $r->country, $r->function, $r->suggestions];
+//        }
+
+        Excel::fromArray('Survey data #' . $id, $data, $head, $tmp, 100);
+
+        return response()->download($tmp, 'report-' . $id . '-' . Text::str2URL($fluidbook->title) . '.xlsx', ['content-type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);
+    }
+
+    protected function postyslreport()
+    {
+        $i = new YSLSurvey();
+        $i->fluidbook_id = $_POST['Fluidbook_ID'];
+        $i->page = $_POST['page'];
+        $i->rating = $_POST['rating'];
+        $i->suggestions = $_POST['suggestions'];
+        $i->country = $_POST['country'];
+        $i->function = $_POST['function'];
+        $i->title = $_POST['title'];
+        $i->date = time();
+        $i->save();
+
+        try {
+            $client = new Client(['timeout' => 10.0]);
+            $client->request('post', 'https://suivi.ysl-retailhandbook.com/importCSV.php', ['form_params' => [
+                'Fluidbook_ID' => $_POST['Fluidbook_ID'],
+                'page' => $_POST['page'],
+                'rating' => $_POST['rating'],
+                'feedback' => $_POST['feedback'],
+                'country' => $_POST['country'],
+                'function' => $_POST['function'],
+                'title' => $_POST['title'],
+            ]]);
+        } catch (Exception $e1) {
+            Log::error($e1->getMessage());
+        }
+    }
+}
index cd9c2e90f4544bd3be8ed5909d1d253e76076711..e04ffbc8545004484f9ac92b0d719f3b7ee55e8f 100644 (file)
@@ -27,6 +27,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\ExportPd
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\SocialImageOperation;
 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\Jobs\FluidbookImagesPreprocess;
 use App\Jobs\FluidbookSocialImage;
 use App\Jobs\GenerateDeliveryThumbnailsPreview;
@@ -98,6 +99,8 @@ class FluidbookPublication extends ToolboxSettingsModel
         ExportPdfOperation::class,
         // Carts
         BastideOperation::class,
+        // YSL
+        YSLOperation::class,
     ];
 
     protected $casts = ['composition' => 'array'];
diff --git a/app/Models/YSLSurvey.php b/app/Models/YSLSurvey.php
new file mode 100644 (file)
index 0000000..3e0eba1
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+namespace App\Models;
+
+use App\Fields\FluidbookID;
+use Cubist\Backpack\Magic\Fields\Country;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Fields\Textarea;
+use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+
+class YSLSurvey extends CubistMagicAbstractModel
+{
+    protected $table = 'ysl_survey';
+    protected $_options = ['name' => 'ysl-survey',
+        'singular' => 'feeback',
+        'plural' => 'feedbacks'];
+
+
+    protected static $_permissionBase = 'ysl-survey';
+
+    public function setFields()
+    {
+        parent::setFields();
+
+        $this->addField('fluidbook_id', FluidbookID::class, __('Fluidbook'));
+        $this->addField('page', Text::class, __('Page'));
+        $this->addField('rating', Integer::class, __('Note'));
+        $this->addField('suggestions', Textarea::class, __('Message'));
+        $this->addField('title', Text::class, __('Titre'));
+        $this->addField('function', Text::class, __('Fonction'));
+        $this->addField('country', Country::class, __('Pays'));
+        $this->addField('date', Integer::class, __('Date'));
+    }
+}
diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/yslreport.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/yslreport.blade.php
new file mode 100644 (file)
index 0000000..63e744f
--- /dev/null
@@ -0,0 +1,7 @@
+{{-- __('!! Statistiques') --}}
+@if($entry->stats)
+    <a class="btn btn-sm btn-link" href="{{$crud->route}}/{{$entry->id}}/yslreport"
+       data-toggle="tooltip"
+       title="{{__('Télécharger les feedbacks')}}"><i class="las la-poll"></i> {{__('Feedbacks')}}
+    </a>
+@endif