From 2bfb7bd7ba9cb005ab000c165968a39b14a0beff Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 19 Sep 2023 14:09:27 +0200 Subject: [PATCH] wip #6260 @1 --- .../FluidbookPublication/YSLOperation.php | 101 ++++++++++++++++++ app/Models/FluidbookPublication.php | 3 + app/Models/YSLSurvey.php | 35 ++++++ .../fluidbook_publication/yslreport.blade.php | 7 ++ 4 files changed, 146 insertions(+) create mode 100644 app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php create mode 100644 app/Models/YSLSurvey.php create mode 100644 resources/views/vendor/backpack/crud/buttons/fluidbook_publication/yslreport.blade.php diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php new file mode 100644 index 000000000..9173b6d8b --- /dev/null +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/YSLOperation.php @@ -0,0 +1,101 @@ + $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()); + } + } +} diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index cd9c2e90f..e04ffbc85 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -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 index 000000000..3e0eba122 --- /dev/null +++ b/app/Models/YSLSurvey.php @@ -0,0 +1,35 @@ + '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 index 000000000..63e744fa6 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/yslreport.blade.php @@ -0,0 +1,7 @@ +{{-- __('!! Statistiques') --}} +@if($entry->stats) + {{__('Feedbacks')}} + +@endif -- 2.39.5